Локализует приложение на 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": "Tải xuống",
"tx": "Tải lên",
"status_label": "Trạng thái",
"disconnected": "ĐÃ NGẮT KẾT NỐI",
"connecting": "ĐANG KẾT NỐI...",
"connected": "ĐÃ KẾT NỐI",
"about_title": "Netrunner VPN",
"about_desc": "Chúng tôi tạo ra Netrunner không phải như một VPN thông thường, mà là một đường hầm bảo mật mà nhà mạng chỉ thấy như lưu lượng web bình thường.",
"proto_title": "Giao Thức Độc Quyền",
"proto_desc": "Giả lập TLS khiến kết nối của bạn vô hình trước hệ thống DPI.",
"zk_title": "Zero-Knowledge",
"zk_desc": "Chúng tôi không lưu nhật ký. Kiến trúc của chúng tôi đảm bảo rằng về mặt kỹ thuật chúng tôi không thể thấy những gì bạn truyền tải.",
"version_info": "Phiên bản 1.0.0-stable | 2026",
"footer_text": "Được phát triển tận tâm vì tự do mạng.",
"select_location_placeholder": "Chọn vị trí VPN",
"loading_servers": "Đang tải máy chủ...",
"section_network": "Mạng",
"kill_switch": "Công Tắc Ngắt Khẩn Cấp",
"kill_switch_desc": "Chặn internet khi mất kết nối",
"stealth_mode": "Chế Độ Ẩn Danh",
"stealth_mode_desc": "Tăng cường làm rối TLS",
"section_interface": "Giao Diện",
"reduce_motion": "Giảm Chuyển Động",
"reduce_motion_desc": "Để tiết kiệm tài nguyên",
"theme_toggle": "Giao Diện Hiển Thị",
"language_toggle": "Ngôn Ngữ",
"home_label": "Trang Chủ",
"settings": "Cài Đặt",
"about_menu": "Giới Thiệu",
"excluded_domains": "Tên Miền Loại Trừ (cách nhau bằng dấu phẩy)",
"excluded_domains_placeholder": "youtube.com, netflix.com",
"excluded_apps_desc": "Ứng Dụng Loại Trừ (tên gói / PID)",
"excluded_apps": "Ứng Dụng Loại Trừ",
"select_apps": "Chọn Ứng Dụng",
"search_apps_placeholder": "Tìm theo tên hoặc gói...",
"loading_apps": "Đang lấy danh sách ứng dụng...",
"no_apps_found": "Không tìm thấy gì",
"tg_menu": "Gia Hạn Đăng Ký",
"tg_title": "Phiên Bảo Mật",
"tg_desc": "Mất quyền truy cập Telegram và không thể gia hạn đăng ký? Hãy bắt đầu một phiên bảo mật. Ứng dụng khách tích hợp này sẽ định tuyến lưu lượng của bạn hoàn toàn qua đường hầm VPN của chúng tôi.",
"tg_start_btn": "Bắt Đầu Phiên",
"tg_connecting": "Đang thiết lập kết nối bảo mật...",
"usage_label": "Dữ Liệu Đã Dùng",
"usage_unlimited": "Không Giới Hạn",
"login_button": "Đăng nhập",
"login_title": "Truy Cập Tài Khoản",
"login_tab_seed": "Seed",
"login_tab_telegram": "Telegram",
"login_seed_current_label": "Seed hiện tại của bạn",
"login_seed_copy": "Sao chép",
"login_seed_copied": "Đã sao chép",
"login_seed_no_seed": "Tài khoản này được liên kết với Telegram và không có seed riêng.",
"login_seed_input_label": "Đăng nhập bằng seed hiện có",
"login_seed_input_placeholder": "Dán cụm từ seed",
"login_seed_submit": "Đăng nhập",
"login_seed_invalid": "Seed không hợp lệ hoặc không xác định",
"login_telegram_desc": "Mở bot Netrunner trong Telegram, nhấn \"Mã đăng nhập ứng dụng\" trong menu, rồi nhập mã bạn nhận được vào đây.",
"login_telegram_open_bot": "Mở bot",
"login_telegram_code_label": "Mã từ bot",
"login_telegram_code_placeholder": "Ví dụ: aB3xQ9pL",
"login_telegram_submit": "Đăng nhập",
"login_telegram_error": "Mã không hợp lệ hoặc đã hết hạn, hãy yêu cầu mã mới từ bot",
"login_screen_title": "Netrunner VPN",
"login_screen_subtitle": "Đăng nhập để kết nối vào mạng",
"login_screen_continue_anon": "Tiếp tục ẩn danh",
"login_screen_or": "hoặc",
"login_anon_error": "Không thể tạo quyền truy cập ẩn danh, hãy thử lại",
"connect_locked_hint": "Vui lòng đăng nhập trước",
"tg_desktop_only_title": "Chỉ Dành Cho Di Động",
"tg_desktop_only_desc": "Phiên bảo mật với đóng gói lưu lượng yêu cầu khởi chạy ứng dụng Telegram gốc. Vui lòng mở phần này từ điện thoại thông minh của bạn.",
"tg_allowlist_badge": "Danh Sách Cho Phép",
"tg_scope_detail": "Lưu lượng điện thoại bị chặn ở cấp thiết bị. Chỉ <bold>ứng dụng Telegram</bold> được truy cập mạng — đóng ứng dụng nhắn tin sẽ ngắt đường hầm ngay lập tức.",
"tg_error_connect_failed": "Không thể thiết lập kết nối.",
"tg_error_not_installed": "Telegram chưa được cài đặt trên thiết bị này.",
"tg_active_status": "ĐANG HOẠT ĐỘNG",
"tg_session_bound_label": "Phiên được liên kết với ứng dụng",
"tg_active_desc": "Telegram đang chạy ở chế độ được bảo vệ. Nếu bạn đang đọc dòng này, nghĩa là bạn đã thu nhỏ Telegram và đường hầm sẽ bị ngắt.",
"tg_reset_btn": "ĐẶT LẠI KẾT NỐI",
"splash_tagline_1": "Hệ Thống Theo Dõi Mọi Người",
"splash_tagline_2": "Trừ Bạn",
"dialog_close": "Đóng"
}