Локализует лендинг на 10 языков + RTL для арабского и персидского
Добавляет 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>
This commit is contained in:
@@ -0,0 +1,242 @@
|
||||
{
|
||||
"nav": {
|
||||
"features": "Imkoniyatlar",
|
||||
"pricing": "Narxlar",
|
||||
"faq": "Savollar",
|
||||
"blog": "Jurnallar",
|
||||
"terminal": "Terminal",
|
||||
"docs": "Hujjatlar",
|
||||
"cta": "Netrunner'ni oling",
|
||||
"profile": "Profil",
|
||||
"menu": "Menu.exe",
|
||||
"speedtest": "Diagnostika",
|
||||
"doom": "DOOM OS"
|
||||
},
|
||||
"hero": {
|
||||
"badge": "Tizim kuzatmoqda",
|
||||
"badgeSecure": "Xavfsiz tunnel o'rnatildi",
|
||||
"titleStart": "Tizim hammani kuzatadi,",
|
||||
"titleHighlight": "sizdan tashqari.",
|
||||
"subtitle": "Raqamli iz yashirilgan. Jurnallar yo'q qilingan. Tezlik cheklanmagan.",
|
||||
"switchLabel": "Netrunner VPN",
|
||||
"ctaPrimary": "Klientni yuklab olish",
|
||||
"ctaSecondary": "Node ro'yxati"
|
||||
},
|
||||
"features": {
|
||||
"title": "Kirish Texnologiyalari",
|
||||
"items": [
|
||||
{
|
||||
"title": "DPI'ni Chetlab O'tish va uTLS",
|
||||
"description": "Netrunner trafikni oddiy HTTPS sifatida niqoblaydi. Chuqur paket tekshiruvi tizimlari faqat oq shovqinni ko'radi."
|
||||
},
|
||||
{
|
||||
"title": "ChaCha20-Poly1305 Shifrlash",
|
||||
"description": "Perfect Forward Secrecy bilan zamonaviy oqim shifrlash. Sessiya kalitlari dinamik tarzda yaratiladi."
|
||||
},
|
||||
{
|
||||
"title": "Moslashuvchan Backpressure",
|
||||
"description": "Bufer hajmi tizim RTT'siga qarab dinamik ravishda o'zgaradi. Kechikish sakrashlarining oldini avtomatik oladi."
|
||||
},
|
||||
{
|
||||
"title": "Ko'p Platformali Yadro",
|
||||
"description": "Quyi darajadagi Rust yadrosi Android, Windows va Linux'da mukammal moslik va nol qo'shimcha yukni ta'minlaydi. macOS va iOS qo'llab-quvvatlashi ishlab chiqilmoqda."
|
||||
},
|
||||
{
|
||||
"title": "O'z Infratuzilmamiz",
|
||||
"description": "Yirik bulutli provayderlardan ijaraga olish o'rniga o'z serverlarimizni ishlatamiz — tugunlar orasida oqimni multipleksatsiya qilish orqali barqaror va qora ro'yxatga kiritish qiyin bo'lgan ulanish."
|
||||
}
|
||||
]
|
||||
},
|
||||
"pricing": {
|
||||
"badge": "Narxlash Protokollari",
|
||||
"title": "Uplink'ingizni Tanlang",
|
||||
"perMonth": "/oy",
|
||||
"recommend": "Tavsiya etiladi",
|
||||
"syncing": "Tugunlar sinxronlanmoqda...",
|
||||
"empty": "Mavjud ulanishlar topilmadi.",
|
||||
"discount": "CHEGIRMA",
|
||||
"mo": "/oy",
|
||||
"billedOnce": "Bir martalik to'lov:",
|
||||
"period1m": "1 oy",
|
||||
"period6m": "6 oy",
|
||||
"period1y": "1 yil"
|
||||
},
|
||||
"faq": {
|
||||
"title": "Tizim So'rovlari (Savollar)",
|
||||
"empty": "Yozuvlar topilmadi."
|
||||
},
|
||||
"blog": {
|
||||
"badge": "Ma'lumotlar Jurnali",
|
||||
"title": "Tarmoq Xronikalari",
|
||||
"more": "Barcha yozuvlar",
|
||||
"readMore": "Batafsil o'qish",
|
||||
"empty": "Signallar topilmadi.",
|
||||
"archive": "Terminal Arxivi",
|
||||
"systemLogs": "Tizim Jurnallari",
|
||||
"emptySector": "[Bu bo'limda yozuvlar topilmadi]",
|
||||
"decrypt": "Yozuvni ochish →",
|
||||
"backBtn": "cd ../logs",
|
||||
"readTime": "O'qish: 4 daqiqa",
|
||||
"verified": "Tasdiqlangan: Netrunner",
|
||||
"endTransmission": "Uzatish yakuni // node_th_01"
|
||||
},
|
||||
"footer": {
|
||||
"brand": "Netrunner VPN",
|
||||
"tagline": "Tizim hammani kuzatadi, sizdan tashqari.",
|
||||
"sections": {
|
||||
"product": "Mahsulot",
|
||||
"resources": "Resurslar",
|
||||
"legal": "Huquqiy"
|
||||
},
|
||||
"links": {
|
||||
"features": "Imkoniyatlar",
|
||||
"pricing": "Narxlar",
|
||||
"faq": "Savollar",
|
||||
"protocol": "Protokol",
|
||||
"comms": "Blog",
|
||||
"privacy": "Maxfiylik",
|
||||
"terms": "Shartlar",
|
||||
"profile": "Profil"
|
||||
},
|
||||
"rights": "© 2026 Netrunner VPN. Barcha paketlar shifrlangan.",
|
||||
"protocolStatus": "PROTOKOL // SHIFRLANGAN KIRISH",
|
||||
"uplinkStatus": "Uplink Holati",
|
||||
"activeNode": "Faol Tugun",
|
||||
"latency": "Kechikish (RTT)"
|
||||
},
|
||||
"download": {
|
||||
"title": "Tugunni Joylashtirish",
|
||||
"subtitle": "Netrunner klientini o'rnatish uchun platformangizni tanlang.",
|
||||
"badges": {
|
||||
"active": "Barqaror Versiya",
|
||||
"dev": "Ishlab Chiqilmoqda"
|
||||
},
|
||||
"buttons": {
|
||||
"direct": "To'g'ridan-to'g'ri Yuklash",
|
||||
"store": "Do'kon Havolasi",
|
||||
"github": "Manba Kodi",
|
||||
"notify": "Menga Xabar Bering",
|
||||
"soon": "Tez Orada Do'konda",
|
||||
"pending": "Build Kutilmoqda"
|
||||
},
|
||||
"platforms": {
|
||||
"windows": "Windows 10 / 11",
|
||||
"android": "Android 8.0+",
|
||||
"linux": "Ubuntu / Debian / Arch",
|
||||
"macos": "macOS 12.0+",
|
||||
"ios": "iOS 15.0+"
|
||||
},
|
||||
"accessingBuild": "Build serveriga ulanmoqda..."
|
||||
},
|
||||
"terminal": {
|
||||
"title": "GLOBAL ALOQA KANALI",
|
||||
"description": "Ochiq aloqa kanali. Cheksiz tarix.",
|
||||
"alias": "TAXALLUS",
|
||||
"message": "MA'LUMOT KIRITING...",
|
||||
"send": "TARQATISH",
|
||||
"systemReady": "SYSTEM_READY // UPLINK_SECURED",
|
||||
"loadingHistory": "Arxiv yuklanmoqda...",
|
||||
"noMoreLogs": "ARXIV OXIRIGA YETILDI",
|
||||
"encrypting": "SHIFRLANMOQDA...",
|
||||
"cooldown": "KUTISH: {{time}}s",
|
||||
"manifestoTitle": "ERKIN ALOQA KANALI MANIFESTI // v1.0",
|
||||
"manifestoText": "Ushbu terminal Netrunner yadrosiga to'g'ridan-to'g'ri kanaldir. Biz jurnallarni tsenzurasiz va real vaqtda tarqatamiz, chunki DPI'ni chetlab o'tishga qodir protokol haqiqatdan qo'rqmasligi kerak.",
|
||||
"rulesTitle": "XULQ-ATVOR PROTOKOLI:",
|
||||
"rule1": "— Oldindan moderatsiya yo'q. Xabaringiz darhol tarmoqqa yetib boradi.",
|
||||
"rule2": "— VPN'ni tanqid qilish, xato haqida xabar berish yoki qiyin savollar — barchasiga ruxsat.",
|
||||
"rule3": "— Yagona cheklov: boshqa tarmoq a'zolarini to'g'ridan-to'g'ri haqorat qilish va spam. Trol emas, kiberpank bo'ling.",
|
||||
"statusReady": "UPLINK_ESTABLISHED // NO_FILTERS_DETECTED"
|
||||
},
|
||||
"loading": {
|
||||
"establishing": "Ulanish o'rnatilmoqda"
|
||||
},
|
||||
"notFound": {
|
||||
"errorBadge": "[ Xato: Tugun Topilmadi ]",
|
||||
"message": "Marshrutlash jadvalida so'ralgan tugun yo'q. Uzatish bekor qilindi. Xavfsiz tarmoqqa qayting.",
|
||||
"returnHome": "Bosh Sahifaga Qaytish"
|
||||
},
|
||||
"nodes": {
|
||||
"title": "Global Tugunlar Tarmog'i",
|
||||
"subtitle": "Netrunner serverlarining real vaqtdagi topologiyasi.",
|
||||
"status": {
|
||||
"online": "Onlayn",
|
||||
"full": "To'liq",
|
||||
"maintenance": "Texnik xizmat"
|
||||
},
|
||||
"labels": {
|
||||
"load": "Server Yuki",
|
||||
"latency": "Kechikish"
|
||||
}
|
||||
},
|
||||
"guestbook": {
|
||||
"title": "COMM-LINK_",
|
||||
"subtitle": "Aloqa Terminali",
|
||||
"description": "Netrunner tugunlariga to'g'ridan-to'g'ri kanal.",
|
||||
"philosophyTitle": "Nol Tsenzura",
|
||||
"philosophyText": "Biz Netrunner'ni barcha to'siqlarni chetlab o'tish uchun yaratdik, shuning uchun so'zlaringizdan qo'rqmaymiz. Bu lenta so'z erkinligining tirik dalilidir. Boshqalar fikr-mulohazalarni yashirganda, biz uni real vaqtda translyatsiya qilamiz. Agar bizning protokolimiz DPI'ga qarshi tursa, u sizning samimiyligingizga ham qarshi turadi.",
|
||||
"liveFeed": "Jonli Translyatsiya (Oxirgi 50)",
|
||||
"noTransmissions": "Faol uzatishlar topilmadi.",
|
||||
"labelAlias": "Taxallus",
|
||||
"labelPayload": "Mazmun",
|
||||
"placeholderAlias": "Guest_77",
|
||||
"placeholderPayload": "Uzatish ma'lumotlarini kiriting...",
|
||||
"statusSuccess": "Ma'lumot muvaffaqiyatli yetkazildi.",
|
||||
"statusErrorBreach": "Xavfsizlik buzilishi. Ulanish uzildi.",
|
||||
"statusErrorEmpty": "Taxallus va mazmun talab qilinadi.",
|
||||
"statusErrorSize": "Mazmun maksimal hajmdan oshib ketdi.",
|
||||
"statusErrorFirewall": "Firewall faol. {{time}}s kuting.",
|
||||
"statusErrorOffline": "Uzatish muvaffaqiyatsiz tugadi. Tugun oflayn.",
|
||||
"statusErrorFilter": "⛔ Rad etildi: Xabaringiz xavfsizlik siyosatimizni buzadi (haqoratli so'zlar, spam yoki zararli mazmun). Iltimos, qayta yozing.",
|
||||
"btnEncrypting": "Shifrlanmoqda...",
|
||||
"btnBroadcast": "Tarqatish",
|
||||
"cooldown": "Kutish: {{time}}s"
|
||||
},
|
||||
"auth": {
|
||||
"title": "UPLINK AVTORIZATSIYASI",
|
||||
"processing": "Kirish ma'lumotlari qayta ishlanmoqda...",
|
||||
"verifying": "Kriptografik imzo tekshirilmoqda...",
|
||||
"granted": "KIRISH RUXSAT ETILDI",
|
||||
"denied": "KIRISH RAD ETILDI",
|
||||
"noToken": "Avtorizatsiya tokeni topilmadi. Iltimos, Telegram'dagi Netrunner Terminali orqali autentifikatsiyadan o'ting.",
|
||||
"redirecting": "Xavfsiz bo'limga yo'naltirilmoqda...",
|
||||
"toBot": "Telegram Terminalini Ochish",
|
||||
"awaiting": "KIRISH MA'LUMOTLARI KUTILMOQDA",
|
||||
"authPrompt": "Boshqaruv paneliga kirish uchun Telegram orqali xavfsiz ulanishni ishga tushiring.",
|
||||
"logs": {
|
||||
"waitInit": "> [KUTILMOQDA] TELEGRAM XAVFSIZ KIRISHI BOSHLANMOQDA...",
|
||||
"sigValid": "> [OK] IMZO HAQIQIY",
|
||||
"apiRejected": "> [XATO] API TOKENNI RAD ETDI",
|
||||
"coreOffline": "> [XATO] YADRO OFLAYN",
|
||||
"authPayload": "> [AUTH] TELEGRAM MA'LUMOTLARI QABUL QILINDI",
|
||||
"verifyHmac": "> HMAC-SHA256 IMZOSI TEKSHIRILMOQDA...",
|
||||
"invalidSig": "> [XATO] IMZO NOTO'G'RI YOKI MUDDATI O'TGAN",
|
||||
"networkError": "> [XATO] TARMOQ XATOSI"
|
||||
}
|
||||
},
|
||||
"docs": {
|
||||
"establishing": "Xavfsiz aloqa o'rnatilmoqda...",
|
||||
"vaultTitle": "DATA_VAULT",
|
||||
"vaultSubtitle": "Tizim jurnallari va hujjatlar // V4.2",
|
||||
"searchPlaceholder": "root@nrxp:~# grep -i ...",
|
||||
"empty": "Ushbu so'rov uchun 0 ta yozuv topildi",
|
||||
"closeSession": "Sessiyani Yopish",
|
||||
"noContent": "MAZMUN_TOPILMADI",
|
||||
"eof": "EOF"
|
||||
},
|
||||
"speedtest": {
|
||||
"title": "Uplink Diagnostikasi",
|
||||
"mockMode": "Lokal Simulyatsiya Rejimi",
|
||||
"prodMode": "Netrunner tarmoq shlyuziga nisbatan to'g'ridan-to'g'ri o'lchov.",
|
||||
"btnError": "KETMA-KETLIKNI QAYTA URINISH",
|
||||
"btnDone": "UPLINK'NI QAYTA ISHGA TUSHIRISH",
|
||||
"btnIdle": "TESTNI BOSHLASH",
|
||||
"statusPinging": "PING QILINMOQDA",
|
||||
"statusDownloading": "YUKLAB OLINMOQDA",
|
||||
"statusUploading": "YUKLANMOQDA",
|
||||
"latency": "Kechikish",
|
||||
"download": "Yuklab olish",
|
||||
"upload": "Yuklash",
|
||||
"unitMs": "ms",
|
||||
"unitMbps": "Mbps"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user