From 2c443a4a9b2cfd29de305dc0d1b8055ad27422d8 Mon Sep 17 00:00:00 2001 From: Rafael Alexandre <44480935+rafael-c-alexandre@users.noreply.github.com> Date: Tue, 22 Apr 2025 22:44:05 +0200 Subject: [PATCH] add portuguese translations (#412) Signed-off-by: Rafael Alexandre --- frontend/src/App.vue | 2 + frontend/src/lang/index.js | 2 + frontend/src/lang/translations/pt.json | 182 +++++++++++++++++++++++++ 3 files changed, 186 insertions(+) create mode 100644 frontend/src/lang/translations/pt.json diff --git a/frontend/src/App.vue b/frontend/src/App.vue index f8802e7..a874323 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -48,6 +48,7 @@ const languageFlag = computed(() => { } const langMap = { en: "us", + pt: "pt", uk: "ua", zh: "cn", }; @@ -121,6 +122,7 @@ const currentYear = ref(new Date().getFullYear()) Deutsch English Français + Português Русский Українська Tiếng Việt diff --git a/frontend/src/lang/index.js b/frontend/src/lang/index.js index 2a446ef..f95d54f 100644 --- a/frontend/src/lang/index.js +++ b/frontend/src/lang/index.js @@ -2,6 +2,7 @@ import de from './translations/de.json'; import en from './translations/en.json'; import fr from './translations/fr.json'; +import pt from './translations/pt.json'; import ru from './translations/ru.json'; import uk from './translations/uk.json'; import vi from './translations/vi.json'; @@ -23,6 +24,7 @@ const i18n = createI18n({ "de": de, "en": en, "fr": fr, + "pt": pt, "ru": ru, "uk": uk, "vi": vi, diff --git a/frontend/src/lang/translations/pt.json b/frontend/src/lang/translations/pt.json new file mode 100644 index 0000000..a36440f --- /dev/null +++ b/frontend/src/lang/translations/pt.json @@ -0,0 +1,182 @@ +{ + "languages": { + "pt": "Português" + }, + "general": { + "pagination": { + "size": "Número de Elementos", + "all": "Todos (lento)" + }, + "search": { + "placeholder": "Pesquisar...", + "button": "Pesquisar" + }, + "select-all": "Selecionar tudo", + "yes": "Sim", + "no": "Não", + "cancel": "Cancelar", + "close": "Fechar", + "save": "Guardar", + "delete": "Eliminar" + }, + "login": { + "headline": "Por favor, inicie sessão", + "username": { + "label": "Nome de utilizador", + "placeholder": "Introduza o seu nome de utilizador" + }, + "password": { + "label": "Palavra-passe", + "placeholder": "Introduza a sua palavra-passe" + }, + "button": "Iniciar sessão" + }, + "menu": { + "home": "Início", + "interfaces": "Interfaces", + "users": "Utilizadores", + "lang": "Alterar idioma", + "profile": "O Meu Perfil", + "settings": "Definições", + "audit": "Registo de Auditoria", + "login": "Iniciar Sessão", + "logout": "Terminar Sessão" + }, + "home": { + "title": "Início", + "card": { + "interfaces": "Interfaces", + "users": "Utilizadores" + } + }, + "interfaces": { + "title": "Interfaces", + "create": "Criar Interface", + "name": "Nome", + "address": "Endereço", + "listen-port": "Porta de Escuta", + "public-key": "Chave Pública", + "private-key": "Chave Privada", + "actions": "Ações", + "delete-dialog": { + "title": "Eliminar Interface", + "text": "Tem a certeza de que deseja eliminar a interface '{{name}}'?" + }, + "form": { + "name": { + "label": "Nome", + "placeholder": "Introduza um nome exclusivo para a interface" + }, + "address": { + "label": "Endereço", + "placeholder": "Introduza um endereço válido (ex: 10.0.0.1/24)" + }, + "listen-port": { + "label": "Porta de Escuta", + "placeholder": "Introduza a porta onde o WireGuard irá escutar (ex: 51820)" + }, + "private-key": { + "label": "Chave Privada", + "placeholder": "Será gerada automaticamente se não for fornecida" + } + } + }, + "users": { + "title": "Utilizadores", + "create": "Criar Utilizador", + "name": "Nome", + "email": "Email", + "enabled": "Ativo", + "is-admin": "Administrador", + "actions": "Ações", + "edit": "Editar", + "delete-dialog": { + "title": "Eliminar Utilizador", + "text": "Tem a certeza de que deseja eliminar o utilizador '{{nome}}'?" + }, + "form": { + "name": { + "label": "Nome", + "placeholder": "Introduza o nome do utilizador" + }, + "email": { + "label": "Email", + "placeholder": "Introduza o email do utilizador" + }, + "password": { + "label": "Palavra-passe", + "placeholder": "Deixe em branco para manter a atual" + }, + "is-admin": { + "label": "Administrador" + }, + "enabled": { + "label": "Ativo" + } + } + }, + "peers": { + "title": "Peers", + "create": "Criar Peer", + "public-key": "Chave Pública", + "preshared-key": "Chave Pré-partilhada", + "endpoint": "Endpoint", + "allowed-ips": "IPs Permitidos", + "latest-handshake": "Último Handshake", + "transfer-rx": "Recebido", + "transfer-tx": "Enviado", + "persistent-keepalive": "Keepalive Persistente", + "actions": "Ações", + "edit": "Editar", + "delete-dialog": { + "title": "Eliminar Peer", + "text": "Tem a certeza de que deseja eliminar este peer?" + }, + "form": { + "public-key": { + "label": "Chave Pública", + "placeholder": "Introduza a chave pública do peer" + }, + "preshared-key": { + "label": "Chave Pré-partilhada", + "placeholder": "Opcional: Chave partilhada adicional para maior segurança" + }, + "endpoint": { + "label": "Endpoint", + "placeholder": "Endereço público do peer (ex: 1.2.3.4:51820)" + }, + "allowed-ips": { + "label": "IPs Permitidos", + "placeholder": "Lista de IPs (ex: 10.0.0.2/32, 192.168.1.0/24)" + }, + "persistent-keepalive": { + "label": "Keepalive Persistente", + "placeholder": "Ex: 25 (em segundos)" + } + } + }, + "settings": { + "title": "Definições", + "password": { + "label": "Nova Palavra-passe", + "placeholder": "Deixe em branco para manter a atual" + }, + "save": "Guardar Alterações" + }, + "audit": { + "title": "Registo de Auditoria", + "username": "Utilizador", + "ip": "Endereço IP", + "method": "Método", + "path": "Caminho", + "status": "Estado", + "timestamp": "Data/Hora" + }, + "errors": { + "required": "Este campo é obrigatório", + "invalid-email": "Endereço de email inválido", + "invalid-address": "Endereço inválido", + "invalid-endpoint": "Endpoint inválido", + "invalid-allowed-ips": "Formato de IPs Permitidos inválido" + } +}