From f149c252686bfaee22535f84e727a43a18a5e5e9 Mon Sep 17 00:00:00 2001 From: Maja Bojarska Date: Sun, 2 Feb 2025 20:02:40 +0100 Subject: [PATCH] add pl i18n --- README.md | 1 + frontend/src/lib/components/DeviceCard.svelte | 5 + frontend/src/lib/i18n/i18n-types.ts | 2 + frontend/src/lib/i18n/i18n-util.async.ts | 2 + frontend/src/lib/i18n/i18n-util.sync.ts | 4 + frontend/src/lib/i18n/i18n-util.ts | 2 + frontend/src/lib/i18n/pl-PL/index.ts | 8 + frontend/src/lib/i18n/pl/index.ts | 227 ++++++++++++++++++ frontend/src/routes/account/+page.svelte | 2 + 9 files changed, 253 insertions(+) create mode 100644 frontend/src/lib/i18n/pl-PL/index.ts create mode 100644 frontend/src/lib/i18n/pl/index.ts diff --git a/README.md b/README.md index 2483f384..68282e6b 100644 --- a/README.md +++ b/README.md @@ -134,6 +134,7 @@ UpSnap is available in the following languages so far: - 馃嚠馃嚬 **Italian** (it-IT) - 馃嚡馃嚨 **Japanese** (ja-JP) - 馃嚦馃嚤 **Dutch** (nl-NL) +- 馃嚨馃嚤 **Polish** (pl-PL) - 馃嚨馃嚬 **Portuguese** (pt-PT) - 馃嚚馃嚦 **Chinese** (zh-CN) - 馃嚬馃嚰 **Chinese (Taiwan)** (zh-TW) diff --git a/frontend/src/lib/components/DeviceCard.svelte b/frontend/src/lib/components/DeviceCard.svelte index c6071d65..8bff26d8 100644 --- a/frontend/src/lib/components/DeviceCard.svelte +++ b/frontend/src/lib/components/DeviceCard.svelte @@ -21,6 +21,7 @@ import { it } from 'date-fns/locale/it'; import { ja } from 'date-fns/locale/ja'; import { nl } from 'date-fns/locale/nl'; + import { pl } from 'date-fns/locale/pl'; import { pt } from 'date-fns/locale/pt'; import { zhCN } from 'date-fns/locale/zh-CN'; import { zhTW } from 'date-fns/locale/zh-TW'; @@ -104,6 +105,10 @@ case 'nl-NL': dateFnsLocale = nl; break; + case 'pl': + case 'pl-PL': + dateFnsLocale = pl; + break; case 'pt': case 'pt-PT': dateFnsLocale = pt; diff --git a/frontend/src/lib/i18n/i18n-types.ts b/frontend/src/lib/i18n/i18n-types.ts index 93fef3e8..fe179eb2 100644 --- a/frontend/src/lib/i18n/i18n-types.ts +++ b/frontend/src/lib/i18n/i18n-types.ts @@ -24,6 +24,8 @@ export type Locales = | 'ja-JP' | 'nl' | 'nl-NL' + | 'pl' + | 'pl-PL' | 'pt' | 'pt-PT' | 'zh' diff --git a/frontend/src/lib/i18n/i18n-util.async.ts b/frontend/src/lib/i18n/i18n-util.async.ts index 5b1d227b..612067cf 100644 --- a/frontend/src/lib/i18n/i18n-util.async.ts +++ b/frontend/src/lib/i18n/i18n-util.async.ts @@ -20,6 +20,8 @@ const localeTranslationLoaders = { 'ja-JP': () => import('./ja-JP'), nl: () => import('./nl'), 'nl-NL': () => import('./nl-NL'), + pl: () => import('./pl'), + 'pl-PL': () => import('./pl-PL'), pt: () => import('./pt'), 'pt-PT': () => import('./pt-PT'), zh: () => import('./zh'), diff --git a/frontend/src/lib/i18n/i18n-util.sync.ts b/frontend/src/lib/i18n/i18n-util.sync.ts index e91d7000..68aeda78 100644 --- a/frontend/src/lib/i18n/i18n-util.sync.ts +++ b/frontend/src/lib/i18n/i18n-util.sync.ts @@ -19,6 +19,8 @@ import ja from './ja'; import ja_JP from './ja-JP'; import nl from './nl'; import nl_NL from './nl-NL'; +import pl from './pl'; +import pl_PL from './pl-PL'; import pt from './pt'; import pt_PT from './pt-PT'; import zh from './zh'; @@ -40,6 +42,8 @@ const localeTranslations = { 'ja-JP': ja_JP, nl, 'nl-NL': nl_NL, + pl, + 'pl-PL': pl_PL, pt, 'pt-PT': pt_PT, zh, diff --git a/frontend/src/lib/i18n/i18n-util.ts b/frontend/src/lib/i18n/i18n-util.ts index a6652a68..ca801fa9 100644 --- a/frontend/src/lib/i18n/i18n-util.ts +++ b/frontend/src/lib/i18n/i18n-util.ts @@ -29,6 +29,8 @@ export const locales: Locales[] = [ 'ja-JP', 'nl', 'nl-NL', + 'pl', + 'pl-PL', 'pt', 'pt-PT', 'zh', diff --git a/frontend/src/lib/i18n/pl-PL/index.ts b/frontend/src/lib/i18n/pl-PL/index.ts new file mode 100644 index 00000000..d45ab263 --- /dev/null +++ b/frontend/src/lib/i18n/pl-PL/index.ts @@ -0,0 +1,8 @@ +import pl from '../pl'; +import type { Translation } from '../i18n-types'; + +const pl_PL = { + ...(pl as unknown as Translation) +} satisfies Translation; + +export default pl_PL; diff --git a/frontend/src/lib/i18n/pl/index.ts b/frontend/src/lib/i18n/pl/index.ts new file mode 100644 index 00000000..8892d592 --- /dev/null +++ b/frontend/src/lib/i18n/pl/index.ts @@ -0,0 +1,227 @@ +import en from '../en'; +import type { BaseTranslation } from '../i18n-types'; + +const pl = { + ...(en as unknown as Translation), + home: { + page_title: 'Strona G艂贸wna', + order_groups: 'Grupowanie', + order_name: 'Nazwa', + order_ip: 'IP', + order_tooltip: 'Kolejno艣膰', + no_devices: 'Brak urz膮dze艅.', + add_first_device: 'Utw贸rz pierwsze urz膮dzenie', + grant_permissions: + 'Popro艣 administratora o przyznanie uprawnie艅 do istniej膮cych urz膮dze艅 lub do tworzenia nowych.' + }, + account: { + page_title: 'Konto', + account_type_admin: 'Administrator', + account_type_user: 'U偶ytkownik', + avatar_title: 'Awatar', + language_title: 'J臋zyk', + language_option_auto: 'Automatyczny', + change_password_title: 'Zmiana has艂a', + change_password_body: 'Po zmianie has艂a, b臋dzie konieczne ponowne zalogowanie.', + change_password_label: 'Stare has艂o', + change_password_new: 'Nowe has艂o', + change_password_confirm: 'Potwierd藕 has艂o' + }, + device: { + page_title: 'Nowe urz膮dzenie', + tabs: ['R臋cznie', 'Skanuj sie膰'], + card_btn_more: 'Wi臋cej', + card_btn_more_edit: 'Edytuj', + card_btn_more_sleep: 'Wy艂膮cz', + card_btn_more_reboot: 'Zrestartuj', + card_tooltip_wake_cron: 'Cron do w艂膮czania', + card_tooltip_shutdown_cron: 'Cron do wy艂膮czania', + card_tooltip_wake_password: 'Has艂o do w艂膮czania', + card_tooltip_last_status_change: 'Ostatnia zmiana statusu', + card_password: 'Has艂o', + card_nic_tooltip_pending: 'Oczekiwanie', + card_nic_tooltip_shutdown: 'Wy艂膮cz', + card_nic_tooltip_shutdown_no_cmd: 'Brak ustawionej polecenia do wy艂膮czania', + card_nic_tooltip_shutdown_no_permission: 'Brak uprawnie艅 do wy艂膮czania tego urz膮dzenia', + card_nic_tooltip_power: 'W艂膮cz', + card_nic_tooltip_power_no_permission: 'Brak uprawnie艅 do w艂膮czania tego urz膮dzenia', + modal_confirm_wake_title: 'W艂膮czy膰 {device}?', + modal_confirm_wake_desc: 'Potwierd藕 w艂膮czenie {device}.', + modal_confirm_shutdown_title: 'Wy艂膮czy膰 {device}?', + modal_confirm_shutdown_desc: 'Potwierd藕 wy艂膮czenie {device}.', + general: 'Og贸lne', + general_name: 'Nazwa', + general_ip: 'IP', + general_mac: 'MAC', + general_netmask: 'Maska sieci', + general_description: 'Opis', + general_description_placeholder: 'Przyk艂adowy opis urz膮dzenia', + general_required_field: 'pole wymagane', + ports: 'Porty', + ports_desc: 'UpSnap mo偶e sprawdzi膰 czy podane porty s膮 otwarte.', + ports_add_new: 'Dodaj nowy port', + ports_name: 'Nazwa', + ports_number: 'Numer', + link: 'Link', + link_desc: 'Twoje urz膮dzenie mo偶e by膰 klikalnym 艂膮czem. 艢wietne do linkowania np. pulpit贸w.', + link_open: 'Otw贸rz link automatycznie', + link_open_no: 'Nie', + link_open_same_tab: 'W tej samej karcie', + link_open_new_tab: 'W nowej karcie', + ping: 'Ping', + ping_desc: + 'Mo偶esz wykorzysta膰 niestandardowe polecenie pow艂oki, aby sprawdzi膰, czy urz膮dzenie jest w艂膮czone. Polecenie powinno zwr贸ci膰 kod zako艅czenia 0 aby wskaza膰, 偶e urz膮dzenie jest w艂膮czone. Dowolny inny kod zako艅czenia poskutkuje oznaczeniem urz膮dzenia jako wy艂膮czone.', + ping_cmd: 'Niestandardowe polecenie ping', + wake: 'W艂膮czanie', + wake_desc: 'Mo偶esz w艂膮czy膰 to urz膮dzenie za pomoc膮 zaplanowanego zadania cron.', + wake_cmd: 'Niestandardowe polecenie do w艂膮czania', + wake_cron: 'Cron do w艂膮czania', + wake_cron_enable: 'W艂膮cz cron do w艂膮czania', + sol: 'Sleep-On-LAN', + sol_desc1: + 'Mo偶esz wy艂膮cza膰 urz膮dzenia za pomoc膮 narz臋dzia Sleep-On-LAN. Sleep-On-LAN (SOL) jest zewn臋trznym narz臋dziem/demonem, dzia艂aj膮cym na urz膮dzeniach kt贸re chcesz wy艂膮cza膰. Tworzy on endpoint REST. Aby dowiedzie膰 si臋 jak skonfigurowa膰 SOL, zapoznaj si臋 z instrukcj膮 u偶ytkownika.', + sol_desc2: + 'SOL przyjmuje 偶膮dania za pomoc膮 HTTP zamiast UDP, aby zwi臋kszy膰 niezawodno艣膰 i umo偶liwi膰 autoryzacj臋.', + sol_desc3: + 'W zwi膮zku z tym, uwzgl臋dnij HTTP:<TW脫JPORT> w sekcji Listeners twojej konfiguracji SOL.', + sol_enable: 'W艂膮cz Sleep-On-LAN', + sol_port: 'Port SOL', + sol_authorization: 'Autoryzacja', + sol_user: 'U偶ytkownik SOL', + sol_password: 'Has艂o SOL', + shutdown: 'Wy艂膮cz', + shutdown_desc: + 'To polecenie pow艂oki zostanie wywo艂ane w Twoim kontenerze (je偶eli u偶ywasz Dockera) lub na Twoim ho艣cie (je偶eli u偶ywasz pliku binarnego). Aby zweryfikowa膰 jego dzia艂anie, mo偶esz je najpierw uruchomi膰 wewn膮trz kontenera lub na ho艣cie. Powszechne polecenia to net rpc dla Windowsa, sshpass dla Linuxa lub curl do wykonywania 偶膮da艅 internetowych.', + shutdown_examples: 'Przyk艂ady:', + shutdown_examples_windows: 'Wy艂膮cz zdaln膮 maszyn臋 Windows:', + shutdown_examples_linux: 'Wy艂膮cz zdaln膮 maszyn臋 Linux:', + shutdown_cmd: 'Polecenie do wy艂膮czania', + shutdown_cron_desc: + 'Podobnie jak mo偶esz harmonogramowa膰 zadanie cron do w艂膮czania urz膮dzenia, mo偶esz robi膰 to r贸wnie偶 do jego wy艂膮czania.', + shutdown_cron: 'Cron do wy艂膮czania', + shutdown_cron_enable: 'W艂膮cz cron do wy艂膮czania', + password: 'Has艂o', + password_desc: + 'Niekt贸re karty sieciowe maj膮 mo偶liwo艣膰 ustawienia has艂a dla magicznych pakiet贸w, znanych r贸wnie偶 jako SecureON. Has艂o mo偶e mie膰 0, 4 lub 6 znak贸w d艂ugo艣ci.', + groups: 'Grupy', + groups_desc: 'Mo偶esz doda膰 urz膮dzenie do grup, aby sortowa膰 je wed艂ug grup na pulpicie', + groups_placeholder: "np. 'Piwnica' lub 'Biuro'", + network_scan_range_saved: 'Zapisano zakres skanowania', + network_scan_desc: + 'Automatycznie skanuj sie膰 w poszukiwaniu urz膮dze艅. Aby to zadzia艂a艂o, musisz uruchomi膰 UpSnap jako root/admin i mie膰 nmap zainstalowany oraz dost臋pny w $PATH (preinstalowany w obrazach dockerowych). Skanowanie mo偶e chwil臋 potrwa膰.', + network_scan_ip_range: 'Zakres IP', + network_scan_no_range: 'Brak zakresu skanowania', + network_scan_unsaved_changes: 'Niezapisane zmiany', + network_scan_running: 'Skanowanie w toku', + network_scan: 'Skanuj', + network_scan_ip: 'IP:', + network_scan_mac: 'MAC:', + network_scan_mac_vendor: 'Dostawca MAC:', + network_scan_netmask: 'Maska sieci:', + network_scan_add_all: 'Dodaj wszystkie urz膮dzenia', + network_scan_replace_netmask: 'Zast膮pi膰 mask臋 sieci dla wszystkich urz膮dze艅?', + network_scan_new_netmask: 'Nowa maska sieci', + network_scan_include_unknown: 'Uwzgl臋dnij urz膮dzenia, kt贸rych nazwa to "Unknown"', + require_confirmation: 'Wymagaj potwierdzenia' + }, + login: { + welcome: 'Witaj', + email_label: 'Email lub nazwa u偶ytkownika:', + password_label: 'Has艂o:', + btn_more: 'Wi臋cej', + menu_title_auth_providers: 'Inni dostawcy autoryzacji', + btn_login: 'Zaloguj' + }, + settings: { + page_title: 'Ustawienia', + ping_interval_title: 'Interwa艂 pingowania', + ping_interval_desc1: + 'Ustawia interwa艂, w kt贸rym urz膮dzenia s膮 pingowane. Pozostaw puste aby u偶y膰 domy艣lnej warto艣ci @every 3s.', + ping_interval_desc2: + 'Dowiedz si臋 wi臋cej na temat sk艂adni cron na Wikipedii lub w dokumentacji pakietu cron.', + lazy_ping_title: 'Leniwe pingowanie', + lazy_ping_desc: + 'Gdy leniwe pingowanie jest w艂膮czone, UpSnap b臋dzie pingowa膰 urz膮dzenia tylko wtedy, gdy u偶ytkownicy odwiedzaj膮 stron臋. Gdy ta opcja jest wy艂膮czona, UpSnap b臋dzie pingowa膰 urz膮dzenia nieustannie.', + lazy_ping_enable: 'W艂膮cz', + website_title_title: 'Tytu艂 strony', + website_title_desc: 'Ustawia tytu艂 strony internetowej i na karcie przegl膮darki.', + icon_title: 'Ikona', + icon_desc: 'Ustaw niestandardowy favicon. Obs艂ugiwane s膮 typy plik贸w:', + upsnap_version: 'Wersja UpSnap' + }, + users: { + page_title: 'U偶ytkownicy', + allow_create_devices: 'Pozw贸l {username} tworzy膰 nowe urz膮dzenia i edytowa膰 grupy urz膮dze艅', + device_permissions: 'Uprawnienia do urz膮dze艅', + create_new_device: 'Utw贸rz nowe urz膮dzenie', + read: 'Odczyt', + update: 'Aktualizacja', + delete: 'Usuwanie', + power: 'W艂膮czanie', + toggle: 'Prze艂膮cz', + confirm_delete_title: 'Potwierd藕 usuni臋cie', + confirm_delete_desc: 'Czy na pewno chcesz usun膮膰 {username}?', + create_new_user: 'Utw贸rz u偶ytkownika', + username: 'Nazwa u偶ytkownika', + password: 'Has艂o', + password_confirm: 'Potwierd藕 has艂o', + required_field: 'pole wymagane' + }, + buttons: { + save: 'Zapisz', + delete: 'Usu艅', + change: 'Zmie艅', + reset: 'Resetuj', + cancel: 'Anuluj', + add: 'Nowy', + confirm: 'Potwierd藕' + }, + welcome: { + step1_page_title: 'Witaj w UpSnap 馃コ', + step1_setup_desc: 'Wykonaj nast臋puj膮ce kroki, aby doko艅czy膰 konfiguracj臋.', + step1_setup_btn_next: 'Dalej', + step2_page_title: 'Utw贸rz konto administratora', + step2_label_email: 'Email:', + step2_label_password: 'Has艂o:', + step2_label_min_chars: 'min. 10 znak贸w', + step2_label_password_confirm: 'Potwierd藕 has艂o:', + step2_btn_create: 'Utw贸rz', + step3_page_title: 'Wszystko gotowe! 馃帀', + step3_page_desc: 'A teraz dodaj kilka urz膮dze艅 do Twojego pulpitu.', + step3_btn_done: 'Lecimy!', + not_expected_title: 'Sta艂o si臋 co艣 niespodziewanego! 馃', + not_expected_desc: 'Konfiguracja zako艅czona! Nie musisz nic wi臋cej robi膰.', + not_expected_back: 'Powr贸t', + progress_step1: 'Witaj', + progress_step2: 'Utw贸rz konto', + progress_step3: 'Gotowe' + }, + toasts: { + admin_saved: 'Administrator zapisany', + user_saved: 'U偶ytkownik zapisany', + user_created: 'U偶ytkownik {username} utworzony', + user_deleted: 'U偶ytkownik {username} usuni臋ty', + settings_saved: 'Zapisano ustawienia', + password_changed: 'Has艂o zosta艂o zmienione. Zaloguj si臋 ponownie.', + passwords_missmatch: 'Has艂a si臋 r贸偶ni膮', + permissions_created: 'Uprawnienia dla {username} zosta艂y utworzone', + permissions_deleted: 'Uprawnienia dla {username} zosta艂y usuni臋te', + permissions_updated: 'Uprawnienia dla {username} zosta艂y zaktualizowane', + permissions_updated_personal: 'Twoje uprawnienia zosta艂y zaktualizowane', + no_permission: 'Nie masz uprawnie艅 aby odwiedzi膰 {url}', + device_created: 'Utworzono {device}', + devices_created_multiple: 'Utworzono {count|int} urz膮dze艅', + device_updated: 'Zaktualizowano {device}', + device_deleted: 'Usuni臋to {device}', + group_created: 'Utworzono grup臋 {group}', + group_deleted: 'Usuni臋to grup臋 {group}' + }, + navbar: { + theme: 'Motyw', + new: 'Utw贸rz', + edit_account: 'Edytuj konto', + logout: 'Wyloguj' + } +} satisfies BaseTranslation; + +export default pl; diff --git a/frontend/src/routes/account/+page.svelte b/frontend/src/routes/account/+page.svelte index 8009a1f3..049fce90 100644 --- a/frontend/src/routes/account/+page.svelte +++ b/frontend/src/routes/account/+page.svelte @@ -27,6 +27,8 @@ 'ja-JP': '馃嚡馃嚨', nl: '馃嚦馃嚤', 'nl-NL': '馃嚦馃嚤', + pl: '馃嚨馃嚤', + 'pl-PL': '馃嚨馃嚤', pt: '馃嚨馃嚬', 'pt-PT': '馃嚨馃嚬', es: '馃嚜馃嚫',