Локализует приложение на 10 языков + RTL для арабского и персидского

Добавляет zh-CN, fa, ar, tr, uk, be, vi, uz локали (81 ключ, идентичная
структура) к существующим en/ru; ToggleLanguge.tsx переделан из
бинарного ru/en тумблера в выпадающий список всех 10 языков.

TelegramWeb.tsx был полностью на захардкоженном русском несмотря на импорт
useTranslation — переведён на i18n-ключи. rtlLanguages.ts выносит список
RTL-языков в отдельный .ts-файл (именованный импорт из .js падал на
allowJs). App.tsx реактивно переключает document.dir/lang при смене языка.

Логические CSS-свойства (ps-/pe-/start-/end-/border-e) вместо физических
в badge/button/dialog/select и BurgerMenu — Flexbox иначе визуально
переворачивает детей под dir=rtl, ломая анимацию бургер-меню.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-08 22:52:20 +07:00
parent 5f6e06589c
commit da77c8d755
22 changed files with 832 additions and 66 deletions
+83
View File
@@ -0,0 +1,83 @@
{
"rx": "Отримано",
"tx": "Надіслано",
"status_label": "Статус",
"disconnected": "ВІД'ЄДНАНО",
"connecting": "ПІДКЛЮЧЕННЯ...",
"connected": "ПІДКЛЮЧЕНО",
"about_title": "Netrunner VPN",
"about_desc": "Ми створили Netrunner не як звичайний VPN, а як захищений тунель, який провайдери бачать просто як звичайний веб-трафік.",
"proto_title": "Власний протокол",
"proto_desc": "Імітація TLS робить ваше з'єднання невидимим для систем DPI.",
"zk_title": "Zero-Knowledge",
"zk_desc": "Ми не зберігаємо логи. Наша архітектура гарантує, що ми технічно не можемо бачити, що ви передаєте.",
"version_info": "Версія 1.0.0-stable | 2026",
"footer_text": "Розроблено з турботою про свободу мережі.",
"select_location_placeholder": "Виберіть локацію VPN",
"loading_servers": "Завантаження серверів...",
"section_network": "Мережа",
"kill_switch": "Kill Switch",
"kill_switch_desc": "Блокувати інтернет при обриві з'єднання",
"stealth_mode": "Стелс-режим",
"stealth_mode_desc": "Посилене TLS-маскування",
"section_interface": "Інтерфейс",
"reduce_motion": "Зменшити анімацію",
"reduce_motion_desc": "Для економії ресурсів",
"theme_toggle": "Тема оформлення",
"language_toggle": "Мова інтерфейсу",
"home_label": "Головна",
"settings": "Налаштування",
"about_menu": "Про застосунок",
"excluded_domains": "Виключені домени (через кому)",
"excluded_domains_placeholder": "youtube.com, netflix.com",
"excluded_apps_desc": "Виключені застосунки (назви пакетів / PID)",
"excluded_apps": "Виключення",
"select_apps": "Виберіть застосунки",
"search_apps_placeholder": "Пошук за назвою або пакетом...",
"loading_apps": "Отримання списку застосунків...",
"no_apps_found": "Нічого не знайдено",
"tg_menu": "Продовжити підписку",
"tg_title": "Захищена сесія",
"tg_desc": "Немає доступу до Telegram, щоб оплатити чи продовжити підписку? Запустіть безпечну сесію. Цей вбудований клієнт гарантовано спрямує трафік через наш VPN-тунель.",
"tg_start_btn": "Почати сесію",
"tg_connecting": "Встановлення захищеного з'єднання...",
"usage_label": "Витрата трафіку",
"usage_unlimited": "Безліміт",
"login_button": "Увійти",
"login_title": "Доступ до акаунту",
"login_tab_seed": "Seed",
"login_tab_telegram": "Telegram",
"login_seed_current_label": "Ваш поточний seed",
"login_seed_copy": "Копіювати",
"login_seed_copied": "Скопійовано",
"login_seed_no_seed": "Цей акаунт прив'язаний до Telegram і не має власного seed.",
"login_seed_input_label": "Увійти за наявним seed",
"login_seed_input_placeholder": "Вставте seed-фразу",
"login_seed_submit": "Увійти",
"login_seed_invalid": "Невірний або невідомий seed",
"login_telegram_desc": "Відкрийте бота Netrunner у Telegram, натисніть «Код входу в застосунок» у меню та введіть отриманий код тут.",
"login_telegram_open_bot": "Відкрити бота",
"login_telegram_code_label": "Код від бота",
"login_telegram_code_placeholder": "Наприклад, aB3xQ9pL",
"login_telegram_submit": "Увійти",
"login_telegram_error": "Невірний або прострочений код, запросіть новий у бота",
"login_screen_title": "Netrunner VPN",
"login_screen_subtitle": "Увійдіть, щоб підключитися до мережі",
"login_screen_continue_anon": "Продовжити анонімно",
"login_screen_or": "або",
"login_anon_error": "Не вдалося створити анонімний доступ, спробуйте ще раз",
"connect_locked_hint": "Спочатку увійдіть в акаунт",
"tg_desktop_only_title": "Тільки для мобільних",
"tg_desktop_only_desc": "Безпечна сесія з інкапсуляцією трафіку вимагає запуску нативного застосунку Telegram. Будь ласка, відкрийте цей розділ зі свого смартфона.",
"tg_allowlist_badge": "Allow-List",
"tg_scope_detail": "Трафік телефону блокується. Доступ до мережі отримує <bold>лише застосунок Telegram</bold>. При закритті месенджера тунель негайно розривається.",
"tg_error_connect_failed": "Не вдалося встановити з'єднання.",
"tg_error_not_installed": "Telegram не встановлено на цьому пристрої.",
"tg_active_status": "АКТИВНО",
"tg_session_bound_label": "Сесія прив'язана до застосунку",
"tg_active_desc": "Telegram запущено в захищеному режимі. Якщо ви читаєте цей текст, значить ви згорнули Telegram і тунель буде відключено.",
"tg_reset_btn": "СКИНУТИ З'ЄДНАННЯ",
"splash_tagline_1": "Система стежить за всіма",
"splash_tagline_2": "Крім тебе",
"dialog_close": "Закрити"
}