diff --git a/src/i18n/i18n.config.ts b/src/i18n/i18n.config.ts index 4cdcd7cd..21320157 100644 --- a/src/i18n/i18n.config.ts +++ b/src/i18n/i18n.config.ts @@ -1,9 +1,11 @@ import en from './locales/en.json'; +import uk from './locales/uk.json'; export default defineI18nConfig(() => ({ legacy: false, fallbackLocale: 'en', messages: { en, + uk, }, })); diff --git a/src/i18n/locales/uk.json b/src/i18n/locales/uk.json new file mode 100644 index 00000000..efee4625 --- /dev/null +++ b/src/i18n/locales/uk.json @@ -0,0 +1,237 @@ +{ + "pages": { + "me": "Обліковий запис", + "clients": "Клієнти", + "admin": { + "panel": "Панель адміністратора", + "general": "Загальні налаштування", + "config": "Конфігурація", + "interface": "Інтерфейс", + "hooks": "Hooks" + } + }, + "user": { + "email": "Електронна пошта" + }, + "me": { + "currentPassword": "Поточний пароль", + "enable2fa": "Увімкнути двофакторну автентифікацію", + "enable2faDesc": "Відскануйте QR-код за допомогою програми автентифікації або введіть ключ вручну.", + "2faKey": "TOTP Ключ", + "2faCodeDesc": "Введіть код з вашої програми автентифікатора.", + "disable2fa": "Вимкнути двофакторну автентифікацію", + "disable2faDesc": "Введіть свій пароль, щоб вимкнути двофакторну автентифікацію." + }, + "general": { + "name": "Ім'я", + "username": "Ім'я користувача", + "password": "Пароль", + "newPassword": "Новий пароль", + "updatePassword": "Оновити пароль", + "mtu": "MTU", + "allowedIps": "Дозволені IP", + "dns": "DNS", + "persistentKeepalive": "Постійна підтримка активності", + "logout": "Вийти", + "continue": "Продовжити", + "host": "Хост", + "port": "Порт", + "yes": "Так", + "no": "Ні", + "confirmPassword": "Підтвердити пароль", + "loading": "Завантаження...", + "2fa": "Двофакторна автентифікація", + "2faCode": "TOTP код" + }, + "setup": { + "welcome": "Ласкаво просимо до вашого першого налаштування wg-easy", + "welcomeDesc": "Ви знайшли найпростіший спосіб встановити та керувати WireGuard на будь-якому хості Linux", + "existingSetup": "Ви маєте існуючу конфігурацію?", + "createAdminDesc": "Спочатку введіть ім'я адміністратора та надійний пароль. Ці дані використовуватимуться для входу в панель адміністратора.", + "setupConfigDesc": "Введіть інформацію про хост і порт. Вона буде використана у конфігурації клієнта при налаштуванні WireGuard на їх пристроях.", + "setupMigrationDesc": "Будь ласка, надайте файл резервної копії, якщо ви хочете перенести дані з попередньої версії wg-easy до нової конфігурації.", + "upload": "Завантажити", + "migration": "Відновити резервну копію:", + "createAccount": "Створити обліковий запис", + "successful": "Налаштування успішне", + "hostDesc": "Публічне ім'я хоста для підключення клієнтів", + "portDesc": "Публічний UDP порт, на якому клієнти підключаються і який слухає WireGuard" + }, + "update": { + "updateAvailable": "Доступне оновлення!", + "update": "Оновлення" + }, + "theme": { + "dark": "Темна тема", + "light": "Світла тема", + "system": "Системна тема" + }, + "layout": { + "toggleCharts": "Показати/приховати діаграми", + "donate": "Пожертвувати" + }, + "login": { + "signIn": "Увійти", + "rememberMe": "Запам'ятай мене", + "rememberMeDesc": "Залишатися в системі після закриття браузера", + "insecure": "Ви не можете увійти через незахищене з'єднання. Використовуйте HTTPS.", + "2faRequired": "Потрібна двофакторна автентифікація", + "2faWrong": "Неправильний код двофакторної автентифікації" + }, + "client": { + "empty": "Клієнтів поки немає.", + "newShort": "Новий", + "sort": "Сортувати", + "create": "Створити клієнта", + "created": "Клієнт створено", + "new": "Новий клієнт", + "name": "Ім'я", + "expireDate": "Термін дії", + "expireDateDesc": "Дата, коли клієнт буде відключений. Порожнє для постійного користування", + "deleteClient": "Видалити клієнта", + "deleteDialog1": "Ви впевнені, що бажаєте видалити", + "deleteDialog2": "Цю дію неможливо скасувати.", + "enabled": "Увімкнено", + "address": "Адреса", + "serverAllowedIps": "Дозволені IP-адреси сервера", + "otlDesc": "Створити коротке одноразове посилання", + "permanent": "Постійний", + "createdOn": "Створено ", + "lastSeen": "Останнє підключення в ", + "totalDownload": "Всього завантажено: ", + "totalUpload": "Всього відправлено: ", + "newClient": "Новий клієнт", + "disableClient": "Вимкнути клієнта", + "enableClient": "Увімкнути клієнта", + "noPrivKey": "У цього клієнта відсутній приватний ключ. Неможливо створити конфігурацію.", + "showQR": "Показати QR-код", + "downloadConfig": "Завантажити конфігурацію", + "allowedIpsDesc": "Які IP-адреси будуть маршрутизовані через VPN (перевизначає глобальну конфігурацію)", + "serverAllowedIpsDesc": "Які IP-адреси сервер буде перенаправляти до клієнта", + "mtuDesc": "Встановлює максимальний розмір пакета (одиницю передачі) для VPN-тунелю", + "persistentKeepaliveDesc": "Встановлює інтервал (у секундах) для пакетів keep-alive. 0 вимикає його", + "hooks": "Hooks", + "hooksDescription": "Hooks працюють лише з wg-quick", + "hooksLeaveEmpty": "Тільки для wg-quick. Інакше залиште порожнім", + "dnsDesc": "DNS сервер, який використовуватимуть клієнти (перевизначає глобальну конфігурацію)" + }, + "dialog": { + "change": "Змінити", + "cancel": "Скасувати", + "create": "Створити" + }, + "toast": { + "success": "Успіх", + "saved": "Збережено", + "error": "Помилка" + }, + "form": { + "actions": "Дії", + "save": "Зберегти", + "revert": "Повернути", + "sectionGeneral": "Загальні", + "sectionAdvanced": "Додатково", + "noItems": "Немає елементів", + "nullNoItems": "Немає елементів. Використовується глобальна конфігурація", + "add": "Додати" + }, + "admin": { + "general": { + "sessionTimeout": "Час очікування сеансу", + "sessionTimeoutDesc": "Тривалість сеансу для функції 'Запам'ятати мене' (секунди)", + "metrics": "Метрики", + "metricsPassword": "Пароль", + "metricsPasswordDesc": "Пароль Bearer для точки доступу метрик (пароль або хеш argon2)", + "json": "JSON", + "jsonDesc": "Маршрут для метрик у форматі JSON", + "prometheus": "Prometheus", + "prometheusDesc": "Маршрут для метрики Prometheus" + }, + "config": { + "connection": "З'єднання", + "hostDesc": "Публічне ім'я хоста для підключення клієнтів (спрацьовує при зміні конфігурації)", + "portDesc": "Публічний UDP порт для підключення клієнтів (спрацьовує при зміні конфігурації, можливо, варто змінити порт інтерфейсу теж)", + "allowedIpsDesc": "Дозволені IP-адреси, які використовуватимуть клієнти (глобальна конфігурація)", + "dnsDesc": "DNS-сервера, який використовуватимуть клієнти (глобальну конфігурацію)", + "mtuDesc": "MTU, який використовуватимуть клієнти (лише для нових клієнтів)", + "persistentKeepaliveDesc": "Інтервал у секундах для надсилання keepalive на сервер. 0 = вимкнено (лише для нових клієнтів)", + "suggest": "Запропонувати", + "suggestDesc": "Виберіть IP-адресу або ім'я хоста для поля 'Хост'" + }, + "interface": { + "cidrSuccess": "CIDR змінено", + "device": "Пристрій", + "deviceDesc": "Ethernet-пристрій, через який має проходити трафік WireGuard", + "mtuDesc": "MTU, яке використовуватиме WireGuard", + "portDesc": "UDP порт, який слухатиме WireGuard (ймовірно, варто змінити порт у конфігурації теж)", + "changeCidr": "Змінити CIDR", + "restart": "Перезавантажити інтерфейс", + "restartDesc": "Перезавантажити інтерфейс WireGuard", + "restartWarn": "Ви впевнені, що бажаєте перезавантажити інтерфейс? Це призведе до відключення всіх клієнтів.", + "restartSuccess": "Інтерфейс перезавантажено" + }, + "introText": "Ласкаво просимо до панелі адміністратора.\n\nТут ви можете керувати загальними налаштуваннями, конфігурацією, налаштуваннями інтерфейсу та перехоплювачами.\n\nПочніть з вибору одного з розділів на боковій панелі." + }, + "zod": { + "generic": { + "required": "{0} обов'язковий", + "validNumber": "{0} має бути дійсним числом", + "validString": "{0} має бути дійсним рядком", + "validBoolean": "{0} має бути дійсним логічним значенням", + "validArray": "{0} має бути дійсним масивом", + "stringMin": "{0} має містити щонайменше {1} символів", + "numberMin": "{0} має бути щонайменше {1}" + }, + "client": { + "id": "Ідентифікатор клієнта", + "name": "Ім'я", + "expiresAt": "Термін дії закінчується о", + "address4": "IPv4-адреса", + "address6": "IPv6-адреса", + "serverAllowedIps": "Дозволені IP-адреси сервера" + }, + "user": { + "username": "Ім'я користувача", + "password": "Пароль", + "remember": "Пам'ятати", + "name": "Ім'я", + "email": "Електронна пошта", + "emailInvalid": "Email має бути дійсною", + "passwordMatch": "Паролі мають збігатися", + "totpEnable": "Увімкнути TOTP", + "totpEnableTrue": "Увімкнення TOTP має бути true", + "totpCode": "TOTP Код" + }, + "userConfig": { + "host": "Хост" + }, + "general": { + "sessionTimeout": "Час очікування сеансу", + "metricsEnabled": "Метрики", + "metricsPassword": "Пароль метрик" + }, + "interface": { + "cidr": "CIDR", + "device": "Пристрій", + "cidrValid": "CIDR має бути дійсним" + }, + "otl": "Одноразове посилання", + "stringMalformed": "Рядок має неправильний формат", + "body": "Тіло має бути коректним об'єктом", + "hook": "Hook", + "enabled": "Увімкнено", + "mtu": "MTU", + "port": "Порт", + "persistentKeepalive": "Постійна підтримка активності", + "address": "IP-адреса", + "dns": "DNS", + "allowedIps": "Дозволені IP-адреси", + "file": "Файл" + }, + "hooks": { + "preUp": "PreUp", + "postUp": "PostUp", + "preDown": "PreDown", + "postDown": "PostDown" + } +} diff --git a/src/nuxt.config.ts b/src/nuxt.config.ts index e07cad71..15a0773a 100644 --- a/src/nuxt.config.ts +++ b/src/nuxt.config.ts @@ -34,6 +34,11 @@ export default defineNuxtConfig({ language: 'en-US', name: 'English', }, + { + code: 'uk', + language: 'uk-UA', + name: 'Українська', + }, ], defaultLocale: 'en', vueI18n: './i18n.config.ts',