From be7943dc9b09ff6c6f0082a2f317966c7df8d9b5 Mon Sep 17 00:00:00 2001 From: xGhostxDev <69668488+xGhostxDev@users.noreply.github.com> Date: Tue, 26 Aug 2025 09:40:16 +0200 Subject: [PATCH] Add polish language (#2126) * Update i18n.config.ts * Update nuxt.config.ts * Add files via upload --- src/i18n/i18n.config.ts | 2 + src/i18n/locales/pl.json | 240 +++++++++++++++++++++++++++++++++++++++ src/nuxt.config.ts | 5 + 3 files changed, 247 insertions(+) create mode 100644 src/i18n/locales/pl.json diff --git a/src/i18n/i18n.config.ts b/src/i18n/i18n.config.ts index 1b07e80d..ecf68fac 100644 --- a/src/i18n/i18n.config.ts +++ b/src/i18n/i18n.config.ts @@ -1,4 +1,5 @@ import en from './locales/en.json'; +import pl from './locales/pl.json'; import uk from './locales/uk.json'; import fr from './locales/fr.json'; import de from './locales/de.json'; @@ -16,6 +17,7 @@ export default defineI18nConfig(() => ({ fallbackLocale: 'en', messages: { en, + pl, uk, fr, de, diff --git a/src/i18n/locales/pl.json b/src/i18n/locales/pl.json new file mode 100644 index 00000000..85f11627 --- /dev/null +++ b/src/i18n/locales/pl.json @@ -0,0 +1,240 @@ +{ + "pages": { + "me": "Konto", + "clients": "Konta", + "admin": { + "panel": "Panel administracyjny", + "general": "Ogólne", + "config": "Konfiguracja", + "interface": "Interfejs", + "hooks": "Hooki" + } + }, + "user": { + "email": "E-mail" + }, + "me": { + "currentPassword": "Aktualne hasło", + "enable2fa": "Włącz uwierzytelnianie dwuskładnikowe", + "enable2faDesc": "Zeskanuj kod QR w aplikacji uwierzytelniającej lub wprowadź klucz ręcznie.", + "2faKey": "Klucz TOTP", + "2faCodeDesc": "Wprowadź kod z aplikacji uwierzytelniającej.", + "disable2fa": "Wyłącz uwierzytelnianie dwuskładnikowe", + "disable2faDesc": "Wprowadź swoje hasło, aby wyłączyć uwierzytelnianie dwuskładnikowe." + }, + "general": { + "name": "Nazwa", + "username": "Nazwa użytkownika", + "password": "Hasło", + "newPassword": "Nowe hasło", + "updatePassword": "Zmień hasło", + "mtu": "MTU", + "allowedIps": "Dozwolone adresy IP", + "dns": "DNS", + "persistentKeepalive": "Stałe utrzymywanie połączenia", + "logout": "Wyloguj", + "continue": "Kontynuuj", + "host": "Host", + "port": "Port", + "yes": "Tak", + "no": "Nie", + "confirmPassword": "Potwierdź hasło", + "loading": "Ładowanie...", + "2fa": "Uwierzytelnianie dwuskładnikowe", + "2faCode": "Kod TOTP" + }, + "setup": { + "welcome": "Witamy w pierwszej konfiguracji wg-easy", + "welcomeDesc": "Znalazłeś najprostszy sposób na instalację i zarządzanie WireGuard na dowolnym serwerze Linux", + "existingSetup": "Masz już istniejącą konfigurację?", + "createAdminDesc": "Podaj nazwę użytkownika administratora oraz silne, bezpieczne hasło. Informacje te będą używane do logowania w panelu administracyjnym.", + "setupConfigDesc": "Podaj informacje o hoście i porcie. Będą one używane w konfiguracji klienta podczas uruchamiania WireGuard na jego urządzeniach.", + "setupMigrationDesc": "Podaj plik kopii zapasowej, jeśli chcesz przenieść dane ze starszej wersji wg-easy do nowej instalacji.", + "upload": "Prześlij", + "migration": "Przywróć kopię zapasową:", + "createAccount": "Utwórz konto", + "successful": "Konfiguracja zakończona sukcesem", + "hostDesc": "Publiczny host, do którego będą łączyć się klienci", + "portDesc": "Publiczny port UDP, na którym WireGuard będzie nasłuchiwał i do którego będą łączyć się klienci" + }, + "update": { + "updateAvailable": "Dostępna jest aktualizacja!", + "update": "Aktualizuj" + }, + "theme": { + "dark": "Motyw ciemny", + "light": "Motyw jasny", + "system": "Motyw systemowy" + }, + "layout": { + "toggleCharts": "Pokaż/ukryj wykresy", + "donate": "Wesprzyj" + }, + "login": { + "signIn": "Zaloguj się", + "rememberMe": "Zapamiętaj mnie", + "rememberMeDesc": "Pozostań zalogowany po zamknięciu przeglądarki", + "insecure": "Nie możesz się zalogować przez niezabezpieczone połączenie. Użyj HTTPS.", + "2faRequired": "Wymagane uwierzytelnianie dwuskładnikowe", + "2faWrong": "Nieprawidłowy kod uwierzytelniania dwuskładnikowego" + }, + "client": { + "empty": "Brak klientów.", + "newShort": "Nowy", + "sort": "Sortuj", + "create": "Utwórz klienta", + "created": "Klient utworzony", + "new": "Nowy klient", + "name": "Nazwa", + "expireDate": "Data wygaśnięcia", + "expireDateDesc": "Data, po której klient zostanie wyłączony. Puste = na stałe", + "deleteClient": "Usuń klienta", + "deleteDialog1": "Czy na pewno chcesz usunąć", + "deleteDialog2": "Tej akcji nie można cofnąć.", + "enabled": "Włączony", + "address": "Adres", + "serverAllowedIps": "Dozwolone adresy IP serwera", + "otlDesc": "Wygeneruj jednorazowy krótki link", + "permanent": "Stały", + "createdOn": "Utworzony ", + "lastSeen": "Ostatnio widziany ", + "totalDownload": "Łączne pobieranie: ", + "totalUpload": "Łączne wysyłanie: ", + "newClient": "Nowy klient", + "disableClient": "Wyłącz klienta", + "enableClient": "Włącz klienta", + "noPrivKey": "Ten klient nie ma znanego klucza prywatnego. Nie można utworzyć konfiguracji.", + "showQR": "Pokaż kod QR", + "downloadConfig": "Pobierz konfigurację", + "allowedIpsDesc": "Które adresy IP będą kierowane przez VPN (nadpisuje konfigurację globalną)", + "serverAllowedIpsDesc": "Które adresy IP serwer będzie kierował do klienta", + "mtuDesc": "Ustawia maksymalny rozmiar pakietu (MTU) dla tunelu VPN", + "persistentKeepaliveDesc": "Ustawia interwał (w sekundach) wysyłania pakietów keep-alive. 0 = wyłączone", + "hooks": "Hooki", + "hooksDescription": "Hooki działają tylko z wg-quick", + "hooksLeaveEmpty": "Tylko dla wg-quick. W innym przypadku pozostaw puste", + "dnsDesc": "Serwer DNS, którego będą używać klienci (nadpisuje konfigurację globalną)", + "notConnected": "Klient nie jest połączony", + "endpoint": "Punkt końcowy", + "endpointDesc": "Adres IP klienta, z którego ustanawiane jest połączenie WireGuard" + }, + "dialog": { + "change": "Zmień", + "cancel": "Anuluj", + "create": "Utwórz" + }, + "toast": { + "success": "Sukces", + "saved": "Zapisano", + "error": "Błąd" + }, + "form": { + "actions": "Akcje", + "save": "Zapisz", + "revert": "Przywróć", + "sectionGeneral": "Ogólne", + "sectionAdvanced": "Zaawansowane", + "noItems": "Brak elementów", + "nullNoItems": "Brak elementów. Używana konfiguracja globalna", + "add": "Dodaj" + }, + "admin": { + "general": { + "sessionTimeout": "Limit czasu sesji", + "sessionTimeoutDesc": "Czas trwania sesji dla opcji Zapamiętaj mnie (w sekundach)", + "metrics": "Metryki", + "metricsPassword": "Hasło", + "metricsPasswordDesc": "Hasło Bearer dla endpointu metryk (hasło lub hash argon2)", + "json": "JSON", + "jsonDesc": "Ścieżka dla metryk w formacie JSON", + "prometheus": "Prometheus", + "prometheusDesc": "Ścieżka dla metryk Prometheus" + }, + "config": { + "connection": "Połączenie", + "hostDesc": "Publiczny host, do którego będą łączyć się klienci (unieważnia konfigurację)", + "portDesc": "Publiczny port UDP, do którego będą łączyć się klienci (unieważnia konfigurację, prawdopodobnie należy też zmienić port interfejsu)", + "allowedIpsDesc": "Dozwolone adresy IP klientów (konfiguracja globalna)", + "dnsDesc": "Serwer DNS klientów (konfiguracja globalna)", + "mtuDesc": "MTU klientów (tylko dla nowych klientów)", + "persistentKeepaliveDesc": "Interwał w sekundach dla keepalive do serwera. 0 = wyłączone (tylko dla nowych klientów)", + "suggest": "Sugeruj", + "suggestDesc": "Wybierz adres IP lub nazwę hosta dla pola Host" + }, + "interface": { + "cidrSuccess": "Zmieniono CIDR", + "device": "Urządzenie", + "deviceDesc": "Urządzenie sieciowe, przez które ma być przekazywany ruch WireGuard", + "mtuDesc": "MTU używane przez WireGuard", + "portDesc": "Port UDP, na którym WireGuard będzie nasłuchiwał (prawdopodobnie trzeba też zmienić port w konfiguracji)", + "changeCidr": "Zmień CIDR", + "restart": "Restart interfejsu", + "restartDesc": "Zrestartuj interfejs WireGuard", + "restartWarn": "Czy na pewno chcesz zrestartować interfejs? Wszyscy klienci zostaną rozłączeni.", + "restartSuccess": "Interfejs zrestartowany" + }, + "introText": "Witamy w panelu administracyjnym.\n\nTutaj możesz zarządzać ustawieniami ogólnymi, konfiguracją, interfejsem i hookami.\n\nZacznij od wybrania jednej z sekcji w pasku bocznym." + }, + "zod": { + "generic": { + "required": "{0} jest wymagane", + "validNumber": "{0} musi być prawidłową liczbą", + "validString": "{0} musi być prawidłowym tekstem", + "validBoolean": "{0} musi być prawidłową wartością logiczną", + "validArray": "{0} musi być prawidłową tablicą", + "stringMin": "{0} musi mieć co najmniej {1} znaków", + "numberMin": "{0} musi być co najmniej {1}" + }, + "client": { + "id": "ID klienta", + "name": "Nazwa", + "expiresAt": "Wygasa", + "address4": "Adres IPv4", + "address6": "Adres IPv6", + "serverAllowedIps": "Dozwolone adresy IP serwera" + }, + "user": { + "username": "Nazwa użytkownika", + "password": "Hasło", + "remember": "Zapamiętaj", + "name": "Imię", + "email": "E-mail", + "emailInvalid": "E-mail musi być prawidłowy", + "passwordMatch": "Hasła muszą się zgadzać", + "totpEnable": "Włącz TOTP", + "totpEnableTrue": "TOTP musi być włączone", + "totpCode": "Kod TOTP" + }, + "userConfig": { + "host": "Host" + }, + "general": { + "sessionTimeout": "Limit czasu sesji", + "metricsEnabled": "Metryki", + "metricsPassword": "Hasło do metryk" + }, + "interface": { + "cidr": "CIDR", + "device": "Urządzenie", + "cidrValid": "CIDR musi być prawidłowy" + }, + "otl": "Jednorazowy link", + "stringMalformed": "Nieprawidłowy format tekstu", + "body": "Treść musi być prawidłowym obiektem", + "hook": "Hook", + "enabled": "Włączone", + "mtu": "MTU", + "port": "Port", + "persistentKeepalive": "Stałe utrzymywanie połączenia", + "address": "Adres IP", + "dns": "DNS", + "allowedIps": "Dozwolone adresy IP", + "file": "Plik" + }, + "hooks": { + "preUp": "PreUp", + "postUp": "PostUp", + "preDown": "PreDown", + "postDown": "PostDown" + } +} diff --git a/src/nuxt.config.ts b/src/nuxt.config.ts index c582e1dd..603ba820 100644 --- a/src/nuxt.config.ts +++ b/src/nuxt.config.ts @@ -73,6 +73,11 @@ export default defineNuxtConfig({ language: 'zh-HK', name: '繁體中文(香港)', }, + { + code: 'pl', + language: 'pl-PL', + name: 'Polski', + }, { code: 'pt-BR', language: 'pt-BR',