32b4460b66
Добавляет zh-CN, fa, ar, tr, uk, be, vi, uz словари (170 ключей, идентичная
вложенная структура) к существующим en/ru. lib/locales.ts — единый источник
списка локалей/дефолтной локали/RTL-набора вместо захардкоженного ["en","ru"]
в proxy.ts. language-switcher.tsx: переключение языка резало только
двухбуквенные коды регэкспом (/^\/[a-z]{2}/), из-за чего zh-CN никогда не
матчился и путь задваивался — заменено на honest-поиск по списку locales.
app/[lang]/layout.tsx — dir="rtl"/"ltr" на <html> по локали (SSR, в отличие
от реактивного клиентского переключения в netrunner-app). Header.tsx/
Footer.tsx — разбитое на три <span> имя бренда визуально переворачивалось
Flexbox'ом под dir=rtl ("VPNrunnerNet"), исправлено через dir="ltr" на
самом враппере.
BlogPreview/Faq/Pricing и обе blog-страницы: fallback на *_en-коллекцию
PocketBase, если для языка ещё нет переведённого контента (FAQ-ответы,
детали тарифов, посты блога не тянутся автоматически — это отдельный от
статических словарей CMS-контент), плюс i18n-ключи period1m/period6m/
period1y вместо захардкоженных ru/en-подписей периодов в Pricing.tsx.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
243 lines
12 KiB
JSON
243 lines
12 KiB
JSON
{
|
||
"nav": {
|
||
"features": "Можливості",
|
||
"pricing": "Тарифи",
|
||
"faq": "Питання",
|
||
"blog": "Логи",
|
||
"terminal": "Термінал",
|
||
"docs": "Документація",
|
||
"cta": "Завантажити Netrunner",
|
||
"profile": "Профіль",
|
||
"menu": "Menu.exe",
|
||
"speedtest": "Діагностика",
|
||
"doom": "DOOM OS"
|
||
},
|
||
"hero": {
|
||
"badge": "Система стежить за всіма",
|
||
"badgeSecure": "Захищений тунель встановлено",
|
||
"titleStart": "Система стежить за всіма,",
|
||
"titleHighlight": "крім тебе.",
|
||
"subtitle": "Цифровий слід прихований. Логи знищені. Швидкість не обмежена.",
|
||
"switchLabel": "Netrunner VPN",
|
||
"ctaPrimary": "Завантажити клієнт",
|
||
"ctaSecondary": "Список вузлів"
|
||
},
|
||
"features": {
|
||
"title": "Технології доступу",
|
||
"items": [
|
||
{
|
||
"title": "Обхід DPI та uTLS",
|
||
"description": "Протокол Netrunner маскує трафік під звичайні HTTPS-запити. Системи глибокого аналізу пакетів бачать лише білий шум."
|
||
},
|
||
{
|
||
"title": "Криптографія ChaCha20-Poly1305",
|
||
"description": "Високошвидкісний потоковий шифр з Perfect Forward Secrecy. Ключі сесій змінюються динамічно."
|
||
},
|
||
{
|
||
"title": "Adaptive Backpressure",
|
||
"description": "Розмір буфера масштабується залежно від затримки з'єднання. Автоматично запобігає стрибкам латентності."
|
||
},
|
||
{
|
||
"title": "Multi-Platform Core",
|
||
"description": "Низькорівневе ядро на Rust гарантує бездоганну сумісність і нульовий оверхед на Android, Windows та Linux. Підтримка macOS та iOS у розробці."
|
||
},
|
||
{
|
||
"title": "Власна інфраструктура",
|
||
"description": "Ми використовуємо власні сервери, а не орендуємо їх у хмарних провайдерів — з мультиплексуванням потоків між вузлами для стабільного з'єднання, яке важко занести в чорний список."
|
||
}
|
||
]
|
||
},
|
||
"pricing": {
|
||
"badge": "Тарифні протоколи",
|
||
"title": "Оберіть свій Uplink",
|
||
"perMonth": "/міс",
|
||
"recommend": "Рекомендуємо",
|
||
"syncing": "Синхронізація_Вузлів...",
|
||
"empty": "0 доступних підключень.",
|
||
"discount": "ЗНИЖКА",
|
||
"mo": "/ міс",
|
||
"billedOnce": "Спишеться одразу:",
|
||
"period1m": "1 місяць",
|
||
"period6m": "6 місяців",
|
||
"period1y": "1 рік"
|
||
},
|
||
"faq": {
|
||
"title": "Системні запити (FAQ)",
|
||
"empty": "База знань порожня."
|
||
},
|
||
"blog": {
|
||
"badge": "Data Logs",
|
||
"title": "Мережеві Хроніки",
|
||
"more": "Усі записи",
|
||
"readMore": "Читати далі",
|
||
"empty": "Сигнали не знайдено.",
|
||
"archive": "Архів термінала",
|
||
"systemLogs": "Системні Логи",
|
||
"emptySector": "[Записи не знайдено в цьому секторі]",
|
||
"decrypt": "Дешифрувати →",
|
||
"backBtn": "cd ../logs",
|
||
"readTime": "Читання: 4 хв",
|
||
"verified": "Перевірено: Netrunner",
|
||
"endTransmission": "Кінець передачі // node_th_01"
|
||
},
|
||
"footer": {
|
||
"brand": "Netrunner VPN",
|
||
"tagline": "Система стежить за всіма, крім тебе.",
|
||
"sections": {
|
||
"product": "Продукт",
|
||
"resources": "Ресурси",
|
||
"legal": "Право"
|
||
},
|
||
"links": {
|
||
"features": "Можливості",
|
||
"pricing": "Тарифи",
|
||
"faq": "FAQ",
|
||
"protocol": "Протокол",
|
||
"comms": "Блог",
|
||
"privacy": "Приватність",
|
||
"terms": "Умови",
|
||
"profile": "Профіль"
|
||
},
|
||
"rights": "© 2026 Netrunner VPN. Усі пакети зашифровано.",
|
||
"protocolStatus": "ПРОТОКОЛ // ЗАХИЩЕНИЙ ДОСТУП",
|
||
"uplinkStatus": "Статус Uplink",
|
||
"activeNode": "Активний Вузол",
|
||
"latency": "Затримка (RTT)"
|
||
},
|
||
"download": {
|
||
"title": "Встановлення Вузла",
|
||
"subtitle": "Оберіть вашу платформу для завантаження клієнта Netrunner.",
|
||
"badges": {
|
||
"active": "Стабільна",
|
||
"dev": "У розробці"
|
||
},
|
||
"buttons": {
|
||
"direct": "Завантажити напряму",
|
||
"store": "У Store",
|
||
"github": "Source Code",
|
||
"notify": "Повідомити",
|
||
"soon": "Скоро в Store",
|
||
"pending": "Очікування збірки"
|
||
},
|
||
"platforms": {
|
||
"windows": "Windows 10 / 11",
|
||
"android": "Android 8.0+",
|
||
"linux": "Ubuntu / Debian / Arch",
|
||
"macos": "macOS 12.0+",
|
||
"ios": "iOS 15.0+"
|
||
},
|
||
"accessingBuild": "Доступ_до_Build_Сервера..."
|
||
},
|
||
"terminal": {
|
||
"title": "GLOBAL COMM-LINK",
|
||
"description": "Загальний канал зв'язку. Нескінченна історія.",
|
||
"alias": "ПОЗИВНИЙ",
|
||
"message": "ВВЕДЕННЯ ДАНИХ...",
|
||
"send": "НАДІСЛАТИ",
|
||
"systemReady": "SYSTEM_READY // UPLINK_SECURED",
|
||
"loadingHistory": "Завантаження архіву...",
|
||
"noMoreLogs": "ДОСЯГНУТО КІНЦЯ АРХІВУ",
|
||
"encrypting": "ШИФРУВАННЯ...",
|
||
"cooldown": "ОЧІКУВАННЯ: {{time}}с",
|
||
"manifestoTitle": "МАНІФЕСТ ВІЛЬНОГО ЗВ'ЯЗКУ // v1.0",
|
||
"manifestoText": "Цей термінал є прямим каналом зв'язку з ядром Netrunner. Ми транслюємо логи без цензури в реальному часі, тому що протокол, здатний обходити DPI, не повинен боятися правди.",
|
||
"rulesTitle": "ПРОТОКОЛ ПОВЕДІНКИ:",
|
||
"rule1": "— Жодної премодерації. Ваше повідомлення миттєво потрапляє в мережу.",
|
||
"rule2": "— Критика VPN, баг-репорти чи незручні питання — дозволено все.",
|
||
"rule3": "— Єдине обмеження: прямі образи інших учасників мережі та спам. Будьте кіберпанком, а не тролем.",
|
||
"statusReady": "UPLINK_ESTABLISHED // NO_FILTERS_DETECTED"
|
||
},
|
||
"loading": {
|
||
"establishing": "Встановлення з'єднання"
|
||
},
|
||
"notFound": {
|
||
"errorBadge": "[ Помилка: Вузол не знайдено ]",
|
||
"message": "У таблиці маршрутизації немає запитуваного вузла. Передачу перервано. Поверніться до захищеної мережі.",
|
||
"returnHome": "Повернутися на базу"
|
||
},
|
||
"nodes": {
|
||
"title": "Глобальна Мережа Вузлів",
|
||
"subtitle": "Топологія серверів Netrunner у реальному часі.",
|
||
"status": {
|
||
"online": "У мережі",
|
||
"full": "Перевантажено",
|
||
"maintenance": "Обслуговування"
|
||
},
|
||
"labels": {
|
||
"load": "Навантаження",
|
||
"latency": "Затримка"
|
||
}
|
||
},
|
||
"guestbook": {
|
||
"title": "COMM-LINK_",
|
||
"subtitle": "Термінал зв'язку",
|
||
"description": "Прямий канал зв'язку з вузлами Netrunner.",
|
||
"philosophyTitle": "Нам не потрібна модерація",
|
||
"philosophyText": "Ми створили Netrunner для обходу будь-яких бар'єрів, тому не боїмося того, що ви напишете. Ця стрічка — живий доказ свободи слова. Поки інші ховають негатив, ми виводимо його в реальному часі. Якщо наш протокол витримує атаки DPI, він витримає і вашу чесність.",
|
||
"liveFeed": "Пряма трансляція (Останні 50)",
|
||
"noTransmissions": "Активних передач не виявлено.",
|
||
"labelAlias": "Позивний",
|
||
"labelPayload": "Дані",
|
||
"placeholderAlias": "Guest_77",
|
||
"placeholderPayload": "Введіть повідомлення...",
|
||
"statusSuccess": "Дані успішно доставлено в мережу.",
|
||
"statusErrorBreach": "Порушення безпеки. З'єднання розірвано.",
|
||
"statusErrorEmpty": "Потрібні позивний і пакет даних.",
|
||
"statusErrorSize": "Розмір пакета перевищує ліміт.",
|
||
"statusErrorFirewall": "Файрвол активний. Зачекайте {{time}} с.",
|
||
"statusErrorOffline": "Передачу перервано. Вузол недоступний.",
|
||
"statusErrorFilter": "⛔ Відхилено: Ваше повідомлення порушує політику безпеки (лайка, спам чи токсичність). Будь ласка, змініть формулювання для проходження фільтра.",
|
||
"btnEncrypting": "Шифрування...",
|
||
"btnBroadcast": "Транслювати",
|
||
"cooldown": "Кулдаун: {{time}}с"
|
||
},
|
||
"auth": {
|
||
"title": "АВТОРИЗАЦІЯ UPLINK",
|
||
"processing": "Обробка облікових даних...",
|
||
"verifying": "Перевірка криптографічного підпису...",
|
||
"granted": "ДОСТУП ДОЗВОЛЕНО",
|
||
"denied": "У ДОСТУПІ ВІДМОВЛЕНО",
|
||
"noToken": "Токен авторизації не знайдено. Будь ласка, пройдіть автентифікацію через термінал Netrunner у Telegram.",
|
||
"redirecting": "Перенаправлення в захищений сектор...",
|
||
"toBot": "Відкрити термінал Telegram",
|
||
"awaiting": "ОЧІКУВАННЯ ОБЛІКОВИХ ДАНИХ",
|
||
"authPrompt": "Ініціалізуйте захищене з'єднання через Telegram для доступу до панелі керування.",
|
||
"logs": {
|
||
"waitInit": "> [ОЧІКУВАННЯ] ІНІЦІАЛІЗАЦІЯ ЗАХИЩЕНОГО ВХОДУ TELEGRAM...",
|
||
"sigValid": "> [OK] ПІДПИС ДІЙСНИЙ",
|
||
"apiRejected": "> [ПОМИЛКА] API ВІДХИЛИВ ТОКЕН",
|
||
"coreOffline": "> [ПОМИЛКА] ЯДРО НЕДОСТУПНЕ",
|
||
"authPayload": "> [AUTH] ОТРИМАНО ДАНІ TELEGRAM",
|
||
"verifyHmac": "> ПЕРЕВІРКА ПІДПИСУ HMAC-SHA256...",
|
||
"invalidSig": "> [ПОМИЛКА] НЕДІЙСНИЙ АБО ПРОСТРОЧЕНИЙ ПІДПИС",
|
||
"networkError": "> [ПОМИЛКА] МЕРЕЖЕВИЙ ЗБІЙ"
|
||
}
|
||
},
|
||
"docs": {
|
||
"establishing": "Встановлення_захищеного_з'єднання...",
|
||
"vaultTitle": "DATA_VAULT",
|
||
"vaultSubtitle": "Системні логи та документація // V4.2",
|
||
"searchPlaceholder": "root@nrxp:~# grep -i ...",
|
||
"empty": "0 записів знайдено за запитом",
|
||
"closeSession": "Закрити сесію",
|
||
"noContent": "ДАНІ_НЕ_ЗНАЙДЕНО",
|
||
"eof": "EOF"
|
||
},
|
||
"speedtest": {
|
||
"title": "Діагностика Uplink",
|
||
"mockMode": "Локальна симуляція",
|
||
"prodMode": "Пряме вимірювання до мережевого шлюзу Netrunner.",
|
||
"btnError": "ПОВТОРИТИ ЦИКЛ",
|
||
"btnDone": "ПЕРЕЗАПУСТИТИ",
|
||
"btnIdle": "ПОЧАТИ ТЕСТ",
|
||
"statusPinging": "ПІНГ",
|
||
"statusDownloading": "ЗАВАНТАЖЕННЯ",
|
||
"statusUploading": "ВІДДАЧА",
|
||
"latency": "Затримка",
|
||
"download": "Завантаження",
|
||
"upload": "Віддача",
|
||
"unitMs": "мс",
|
||
"unitMbps": "Мбіт/с"
|
||
}
|
||
}
|