diff --git a/locales/pt_PT.json b/locales/pt_PT.json
new file mode 100644
index 0000000000..47ee235c2a
--- /dev/null
+++ b/locales/pt_PT.json
@@ -0,0 +1,1123 @@
+{
+ "lang": "pt_PT",
+ "rules": {
+ "accesskeys": {
+ "description": "Garantir que cada valor do atributo 'accesskey' seja único",
+ "help": "O valor do atributo 'accesskey' deve ser único"
+ },
+ "area-alt": {
+ "description": "Garantir que os elementos dos mapas de imagem tenham texto alternativo",
+ "help": "Os elementos ativos devem ter texto alternativo"
+ },
+ "aria-allowed-attr": {
+ "description": "Garantir que a função de um elemento suporte os seus atributos ARIA",
+ "help": "Os elementos devem usar apenas atributos ARIA suportados"
+ },
+ "aria-allowed-role": {
+ "description": "Garantir que o atributo 'role' tenha um valor apropriado para o elemento",
+ "help": "A 'role' ARIA deve ser apropriada para o elemento"
+ },
+ "aria-braille-equivalent": {
+ "description": "Garantir que 'aria-braillelabel' e 'aria-brailleroledescription' tenham um equivalente não braile",
+ "help": "Os atributos 'aria-braille' devem ter um equivalente não braile"
+ },
+ "aria-command-name": {
+ "description": "Garantir que cada botão, link e item de menu ARIA tenha um nome acessível",
+ "help": "Os comandos ARIA devem ter um nome acessível"
+ },
+ "aria-conditional-attr": {
+ "description": "Garantir que os atributos ARIA sejam usados conforme descrito na especificação da função do elemento",
+ "help": "Os atributos ARIA devem ser usados conforme especificado para a função do elemento"
+ },
+ "aria-deprecated-role": {
+ "description": "Garantir que os elementos não usem funções obsoletas",
+ "help": "Não se devem usar funções ARIA obsoletas"
+ },
+ "aria-dialog-name": {
+ "description": "Garantir que cada diálogo e diálogo de alerta ARIA tenha um nome acessível",
+ "help": "Os nós de diálogo e diálogo de alerta ARIA devem ter um nome acessível"
+ },
+ "aria-hidden-body": {
+ "description": "Garantir que 'aria-hidden=\"true\"' não esteja presente no corpo do documento.",
+ "help": "'aria-hidden=\"true\"' não deve estar presente no corpo do documento"
+ },
+ "aria-hidden-focus": {
+ "description": "Garantir que elementos com 'aria-hidden' não sejam focáveis nem contenham elementos focáveis",
+ "help": "Um elemento oculto por ARIA não deve ser focável nem conter elementos focáveis"
+ },
+ "aria-input-field-name": {
+ "description": "Garantir que cada campo de entrada ARIA tenha um nome acessível",
+ "help": "Os campos de entrada ARIA devem ter um nome acessível"
+ },
+ "aria-meter-name": {
+ "description": "Garantir que cada nó de medidor ARIA tenha um nome acessível",
+ "help": "Os nós de medidor ARIA devem ter um nome acessível"
+ },
+ "aria-progressbar-name": {
+ "description": "Garantir que cada nó de barra de progresso ARIA tenha um nome acessível",
+ "help": "Os nós de barra de progresso ARIA devem ter um nome acessível"
+ },
+ "aria-prohibited-attr": {
+ "description": "Garantir que os atributos ARIA não sejam proibidos para a função de um elemento",
+ "help": "Os elementos devem usar apenas atributos ARIA permitidos"
+ },
+ "aria-required-attr": {
+ "description": "Garantir que os elementos com funções ARIA tenham todos os atributos ARIA obrigatórios",
+ "help": "Devem ser fornecidos os atributos ARIA obrigatórios"
+ },
+ "aria-required-children": {
+ "description": "Garantir que os elementos com uma função ARIA que requer funções filhas as contenham",
+ "help": "Certas funções ARIA devem conter determinados elementos filhos"
+ },
+ "aria-required-parent": {
+ "description": "Garantir que os elementos com uma função ARIA que requer funções parentais estejam contidos por estes",
+ "help": "Certas funções ARIA devem estar contidas em pais específicos"
+ },
+ "aria-roledescription": {
+ "description": "Garantir que 'aria-roledescription' seja usado apenas em elementos com uma função implícita ou explícita",
+ "help": "'aria-roledescription' deve estar em elementos com uma função semântica"
+ },
+ "aria-roles": {
+ "description": "Garantir que todos os elementos com o atributo 'role' usem um valor válido",
+ "help": "As funções 'roles' ARIA utilizadas devem corresponder a valores válidos"
+ },
+ "aria-text": {
+ "description": "Garantir que 'role=\"text\"' seja usado em elementos sem descendentes focáveis",
+ "help": "'\"role=text\"' não deve ter descendentes focáveis"
+ },
+ "aria-toggle-field-name": {
+ "description": "Garantir que cada campo de alternância ARIA tenha um nome acessível",
+ "help": "Os campos de alternância ARIA devem ter um nome acessível"
+ },
+ "aria-tooltip-name": {
+ "description": "Garantir que cada nó de 'tooltip' ARIA tenha um nome acessível",
+ "help": "Os nós de 'tooltip' ARIA devem ter um nome acessível"
+ },
+ "aria-treeitem-name": {
+ "description": "Garantir que cada nó de 'treeitem' ARIA tenha um nome acessível",
+ "help": "Os nós de 'treeitem' ARIA devem ter um nome acessível"
+ },
+ "aria-valid-attr-value": {
+ "description": "Garantir que todos os atributos ARIA tenham valores válidos",
+ "help": "Os atributos ARIA devem corresponder a valores válidos"
+ },
+ "aria-valid-attr": {
+ "description": "Garantir que os atributos que começam com 'aria-' sejam atributos ARIA válidos",
+ "help": "Os atributos ARIA devem corresponder a nomes válidos"
+ },
+ "audio-caption": {
+ "description": "Garantir que os elementos