Skip to content

Commit

Permalink
Added pt-PT language
Browse files Browse the repository at this point in the history
  • Loading branch information
MadTiago committed Oct 2, 2023
1 parent cf55c4a commit e2ba2b4
Show file tree
Hide file tree
Showing 6 changed files with 220 additions and 2 deletions.
1 change: 1 addition & 0 deletions frontend/src/lib/i18n/i18n-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ export type BaseLocale = 'en-US'
export type Locales =
| 'de'
| 'en-US'
| 'pt-PT'

export type Translation = RootTranslation

Expand Down
1 change: 1 addition & 0 deletions frontend/src/lib/i18n/i18n-util.async.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { loadedFormatters, loadedLocales, locales } from './i18n-util'
const localeTranslationLoaders = {
de: () => import('./de'),
'en-US': () => import('./en-US'),
'pt-PT': () => import('./pt-PT'),
}

const updateDictionary = (locale: Locales, dictionary: Partial<Translations>): Translations =>
Expand Down
2 changes: 2 additions & 0 deletions frontend/src/lib/i18n/i18n-util.sync.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,12 @@ import { loadedFormatters, loadedLocales, locales } from './i18n-util'

import de from './de'
import en_US from './en-US'
import pt_PT from './pt-PT'

const localeTranslations = {
de,
'en-US': en_US,
'pt-PT': pt_PT,
}

export const loadLocale = (locale: Locales): void => {
Expand Down
3 changes: 2 additions & 1 deletion frontend/src/lib/i18n/i18n-util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ export const baseLocale: Locales = 'en-US'

export const locales: Locales[] = [
'de',
'en-US'
'en-US',
'pt-PT'
]

export const isLocale = (locale: string): locale is Locales => locales.includes(locale as Locales)
Expand Down
212 changes: 212 additions & 0 deletions frontend/src/lib/i18n/pt-PT/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,212 @@
import en_US from '../en-US';
import type { Translation } from '../i18n-types';

const pt_PT = {
...(en_US as unknown as Translation),
home: {
page_title: 'Início',
order_groups: 'Grupos',
order_name: 'Nome',
order_ip: 'IP',
order_tooltip: 'Ordem',
no_devices: 'Sem dispositivos.',
add_first_device: 'Adicione o seu primeiro dispositivo',
grant_permissions:
'Peça ao administrador para alterar as suas permissões para dispositivos existentes ou para criar novos.'
},
account: {
page_title: 'Conta',
account_type_admin: 'Admin',
account_type_user: 'Utilizador',
avatar_title: 'Avatar',
language_title: 'Idioma',
language_option_auto: 'Automático',
change_password_title: 'Alterar password',
change_password_body: 'Terá de voltar a entrar após alterar a sua password.',
change_password_label: 'Antiga password',
change_password_new: 'Nova password',
change_password_confirm: 'Confirmar password'
},
device: {
page_title: 'Novo dispositivo',
tabs: ['Manual', 'Pesquisa de rede'],
card_btn_more: 'Mais',
card_btn_more_edit: 'Editar',
card_btn_more_sleep: 'Suspender',
card_btn_more_reboot: 'Reiniciar',
card_tooltip_wake_cron: 'Wake cron',
card_tooltip_shutdown_cron: 'Shutdown cron',
card_tooltip_wake_password: 'Wake password',
card_tooltip_last_status_change: 'Última alteração de estado',
card_password: 'Password',
card_nic_tooltip_pending: 'Pendente',
card_nic_tooltip_shutdown: 'Desligar',
card_nic_tooltip_shutdown_no_cmd: 'Comando para desligar não está definido',
card_nic_tooltip_shutdown_no_permission: 'Não tem permissão para desligar este dispositivo',
card_nic_tooltip_power: 'Ligar',
card_nic_tooltip_power_no_permission: 'Não tem permissão para ligar este dispositivo',
general: 'Geral',
general_name: 'Nome',
general_name_placeholder: 'Nome do dispositivo',
general_ip: 'IP',
general_mac: 'Mac',
general_netmask: 'Máscara de rede',
general_required_field: 'campo obrigatório',
ports: 'Portos',
ports_desc: 'UpSnap pode verificar se certos portos estão abertos.',
ports_add_new: 'Adicionar novo porto',
ports_name: 'Nome',
ports_number: 'Número',
link: 'Link',
link_desc:
'Permite que o nome do seu dispositivo seja um link. Perfeito para dashboard, por exemplo.',
wake: 'Ligar',
wake_desc: 'Poderá ligar este dispositivo através dum cron job agendado.',
wake_cron: 'Wake cron',
wake_cron_enable: 'Ativar wake cron',
sol: 'Sleep-On-LAN',
sol_desc1:
'Poderá suspender o seu dispositivo usando a ferramenta <a class="link" href="https://github.com/SR-G/sleep-on-lan" target="_blank">Sleep-On-LAN</a>. Sleep-On-LAN (SOL) é uma ferramenta externa que terá de ser executada no dispositivo que quer suspender, facilitando um REST endpoint. Para instruções em como configurar Sleep-On-LAN, veja a secção <a href="https://github.com/SR-G/sleep-on-lan#usage" class="link" target="_blank">Usage</a>.',
sol_desc2:
'SOL envia pedidos através de HTTP em vez de UDP para permitir autenticação e tornar os pedidos mais seguros.',
sol_desc3:
'Portanto, tenha a certeza que inclui <span class="badge">HTTP:&lt;SEU_PORTO&gt;</span> na secção <span class="badge">Listeners</span> de <a href="https://github.com/SR-G/sleep-on-lan#configuration" class="link" target="_blank">configuração SOL</a>.',
sol_enable: 'Ativar Sleep-On-LAN',
sol_port: 'Porto SOL',
sol_authorization: 'Autenticação',
sol_user: 'Utilizador SOL',
sol_password: 'Password SOL',
shutdown: 'Desligar',
shutdown_desc:
'Este <strong>comando shell</strong> irá correr dentro do teu container (no caso de usar docker) ou no seu host (na versão standalone). Para verificar que funciona, pode executar o comando primeiro no seu container/host. Comandos comuns são <span class="badge">net rpc</span> para windows, <span class="badge">sshpass</span> para linux ou <span class="badge">curl</span> em geral para enviar pedidos web.',
shutdown_examples: 'Exemplos:',
shutdown_examples_windows: 'Desligar dispositivo windows remoto:',
shutdown_examples_linux: 'Desligar dispositivo linux remoto:',
shutdown_cmd: 'Comando para desligar',
shutdown_cron_desc:
'Assim como pode ter um cron job para ligar o seu dispositivo, pode também usar para desligar.',
shutdown_cron: 'Shutdown cron',
shutdown_cron_enable: 'Ativar shutdown cron',
password: 'Password',
password_desc:
'Alguns adaptadores de rede têm a opção de definir uma password para magic packets, também conhecido como <span class="badge">SecureON</span>. A password só poderá conter 0, 4 ou 6 caracteres.',
groups: 'Grupos',
groups_desc: 'Pode adicionar dispositivos a grupos para ordenar na dashboard.',
groups_placeholder: "e.g. 'Cave' ou 'Escritório'",
network_scan_range_saved: 'Intervalo de pesquisa guardado',
network_scan_desc:
"Procurar automaticamente na sua rede por dispositivos. Terá de executar o UpSnap como root/admin e ter o nmap instalado e disponível no seu $PATH (No caso de usar docker, não tem de fazer nada). Poderá demorar alguns segundos.",
network_scan_ip_range: 'Intervalo IP',
network_scan_no_range: 'Sem intervalo de IP',
network_scan_unsaved_changes: 'Alterações por guardar',
network_scan_running: 'Pesquisa em curso',
network_scan: 'Pesquisar',
network_scan_ip: 'IP:',
network_scan_mac: 'Mac:',
network_scan_mac_vendor: 'Fornecedor Mac:',
network_scan_netmask: 'Máscara de rede:',
network_scan_add_all: 'Adicionar todos os dispositivos',
network_scan_replace_netmask: 'Substituir máscara de rede para todos os dispositivos?',
network_scan_new_netmask: 'Nova máscara de rede',
network_scan_include_unknown: 'Incluir dispositivos em que o nome é "Unknown"'
},
login: {
welcome: 'Bem-vindo',
email_label: 'Email ou Utilizador:',
password_label: 'Password:',
btn_more: 'Mais',
menu_title_auth_providers: 'Outros provedores de autenticação',
btn_login: 'Entrar'
},
settings: {
page_title: 'Definições',
ping_interval_title: 'Intervalo ping',
ping_interval_desc1:
'Define o intervalo em que o ping é executado. Deixe em branco para usar o valor por defeito de <span class="badge">@every 3s</span>.',
ping_interval_desc2:
'Poderá ver a sintaxe correta para cron em <a class="link" href="https://en.wikipedia.org/wiki/Cron" target="_blank">Wikipedia</a> ou em <a class="link" href="https://pkg.go.dev/github.com/robfig/cron/v3" target="_blank">documentação cron</a>.',
lazy_ping_title: 'Lazy ping',
lazy_ping_desc:
"Quando o lazy ping está activo, o UpSnap irá apenas executar o ping se existir um utilizador ativo no website. Se desligado, o UpSnap irá executar sempre o ping.",
lazy_ping_enable: 'Activar',
website_title_title: 'Título do website',
website_title_desc: 'Define o título do website.',
icon_title: 'Ícone',
icon_desc: 'Define um favicon personalizado. Tipos de ficheiros suportados são:',
upsnap_version: 'Versão UpSnap'
},
users: {
page_title: 'Utilizadores',
allow_create_devices: 'Permitir a {username} adicionar novos dispositivos e editar grupos de dispositivos',
device_permissions: 'Permissões de dispositivos',
create_new_device: 'Adicionar dispositivo',
read: 'Ver',
update: 'Editar',
delete: 'Apagar',
power: 'Ligar/desligar',
toggle: 'Alternar',
confirm_delete_title: 'Confirmar',
confirm_delete_desc: 'Tem a certeza que quer apagar {username}?',
create_new_user: 'Criar novo utilizador',
username: 'Utilizador',
password: 'Password',
password_confirm: 'Confirmar password',
required_field: 'campo obrigatório'
},
buttons: {
save: 'Guardar',
delete: 'Apagar',
change: 'Alterar',
reset: 'Repor',
cancle: 'Cancelar',
add: 'Adicionar'
},
welcome: {
step1_page_title: 'Bem-vindo ao UpSnap 🥳',
step1_setup_desc: 'Complete os próximos passos para terminar a configuração.',
step1_setup_btn_next: 'Seguinte',
step2_page_title: 'Criar conta de administrador',
step2_label_email: 'Email:',
step2_label_password: 'Password:',
step2_label_min_chars: 'min. 10 caracteres',
step2_label_password_confirm: 'Confirmar password:',
step2_btn_create: 'Criar',
step3_page_title: 'Concluído! 🎉',
step3_page_desc: 'Adicione alguns dispositivos à sua dashboard.',
step3_btn_done: 'Vamos!',
not_expected_title: "Não esperava ver aqui alguém! 🧐",
not_expected_desc: 'A configuração está concluída. Nada a fazer aqui.',
not_expected_back: 'Voltar',
progress_step1: 'Bem-vindo',
progress_step2: 'Criar conta',
progress_step3: 'Concluído'
},
toasts: {
admin_saved: 'Administrador atualizado',
user_saved: 'Utilizador atualizado',
user_created: 'Utilizador {username} criado',
user_deleted: 'Utilizador {username} apagado',
settings_saved: 'Definições guardadas',
password_changed: 'Password alterada. Terá de entrar novamente.',
passwords_missmatch: "As passwords não correspondem",
permissions_created: 'Permissões criadas para {username}',
permissions_deleted: 'Permissões apagadas para {username}',
permissions_updated: 'Permissões atualizadas para {username}',
permissions_updated_personal: 'As suas permissões foram atualizadas',
no_permission: "Não tem permissão para visitar {url}",
device_created: 'Adicionado dispositivo {device}',
devices_created_multiple: 'Adicionados {count|int} dispositivos',
device_updated: '{device} atualizado',
device_deleted: '{device} apagado',
group_created: 'Grupo {group} criado',
group_deleted: 'Grupo {group} apagado'
},
navbar: {
theme: 'Tema',
new: 'Novo',
edit_account: 'Editar conta',
logout: 'Sair'
}
} satisfies Translation;

export default pt_PT;
3 changes: 2 additions & 1 deletion frontend/src/routes/account/+page.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@
// locales
const languageEmojis = {
'en-US': '🇺🇸',
de: '🇩🇪'
de: '🇩🇪',
'pt-PT': '🇵🇹'
};
let localStorageLang: Locales | 'auto' = 'auto';
let selectedLanguage: Locales | 'auto' = localStorageLang;
Expand Down

0 comments on commit e2ba2b4

Please sign in to comment.