diff --git a/client/.gitignore b/client/.gitignore index f6718b983a..1e0b54a49d 100644 --- a/client/.gitignore +++ b/client/.gitignore @@ -3,7 +3,7 @@ /platforms /plugins /third_party/Potatso/Pods -/www + coverage info.txt keystore.p12 diff --git a/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/uz.lproj/Localizable.strings b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/uz.lproj/Localizable.strings new file mode 100644 index 0000000000..ae0b88478d --- /dev/null +++ b/client/src/cordova/apple/xcode/ios/Outline/Classes/AppKitBridge/Resources/Strings/uz.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Ulandi"; +"disconnected_server_state" = "Uzildi"; +"tray_open_window" = "Ochish"; +"quit" = "Chiqish"; diff --git a/client/src/cordova/plugin/android/resources/strings/values-uz/strings.xml b/client/src/cordova/plugin/android/resources/strings/values-uz/strings.xml new file mode 100644 index 0000000000..8fe40ec69d --- /dev/null +++ b/client/src/cordova/plugin/android/resources/strings/values-uz/strings.xml @@ -0,0 +1,25 @@ + + + + + Outline + @string/app_name + @string/launcher_name + Ulandi + Qayta ulanmoqda... + Outline serveri + \ No newline at end of file diff --git a/client/src/www/messages/uz.json b/client/src/www/messages/uz.json new file mode 100644 index 0000000000..505bda6413 --- /dev/null +++ b/client/src/www/messages/uz.json @@ -0,0 +1,124 @@ +{ + "about-outline": "Outline – bu Jigsaw tomonidan ishlab chiqilgan mahsulot bo'lib, har kim o'zining VPN tarmog'ini yaratish, boshqarish va unga kirish huquqini berish imkoniyatiga ega. Outline to'siqlarga chidamli bo'lish uchun mo'ljallangan. Boshlash uchun getoutline.org saytiga tashrif buyuring.

Outline – bu Shadowsocks protokoli bilan ishlaydigan ochiq manba dasturi. Siz GitHub’da GitHub orqali kodga hissa qo'shishingiz va Reddit’dagi Reddit forumda ishtirok etishingiz mumkin.", + "about-page-title": "Ilova haqida", + "add-access-key-dialog-error-text": "Noto‘g‘ri kirish kaliti.", + "add-access-key-dialog-header": "VPN kirish kalitini qo‘shish", + "add-access-key-dialog-help-text": "Yangi kirish kaliti kerakmi? Uni {openLink}bizning saytimizda{closeLink} yarating.", + "add-access-key-dialog-label": "Kirish kalitini shu yerga joylashtiring", + "auto-connect-dialog-detail": "Agar Outline serveridan uzilmasangiz, qurilmangizni qayta yoqqaningizda Outline avtomatik ulanadi.", + "auto-connect-dialog-title": "Doimiy himoya", + "cancel": "Bekor qilish", + "change-language-page-title": "Tilni o‘zgartirish", + "close": "Yopish", + "confirm": "Tasdiqlash", + "connect-button-label": "Ulanish", + "connected-server-state": "Ulangan", + "connecting-server-state": "Ulanmoqda...", + "contact-page-title": "Biz bilan bog'laning", + "contact-view-exit-billing": "Outline jamoasi to'lovlarni yig'maydi. Iltimos, bu masalani hal qilish uchun sizga kirish kalitini bergan shaxs bilan bog'laning.", + "contact-view-exit-cannot-add-server": "Mutaxassislar server qo‘shish bo‘yicha yordam bera olmaydi. Iltimos, muammoni hal qilish uchun {openLink}ushbu yo‘riqnomalarga{closeLink} amal qiling va keyin sizga kirish kalitini bergan shaxs bilan bog‘laning.", + "contact-view-exit-connection": "Mutaxassislar serverga ulanish bo‘yicha yordam bera olmaydi. Iltimos, muammoni hal qilish uchun {openLink}ushbu yo‘riqnomalarga{closeLink} amal qiling va keyin sizga kirish kalitini bergan shaxs bilan bog‘laning.", + "contact-view-exit-no-server": "Outline jamoasi pullik yoki bepul kirish kalitlarini taqdim etmaydi. Kirish kalitini qanday olish haqida batafsil ma’lumotni {openLink}bu yerdan{closeLink} topishingiz mumkin.", + "contact-view-exit-open-ticket": "Hozirda bizga ko‘plab yordam so‘rovlari kelib tushmoqda. Tushunganingiz va sabringiz uchun tashakkur. Iltimos, ushbu masalaga oid yangi so‘rov yubormang. Agar bu so'rov bo'yicha sizda qo‘shimcha ma’lumot bo‘lsa, dastlabki elektron xabarga javob qaytaring.", + "contact-view-intro": "Muammoingiz haqida batafsilroq yozing. Agar so‘ralmagan bo‘lsa, shaxsiy ma’lumotlarni kiritmang.", + "contact-view-issue": "Outline muammosi", + "contact-view-issue-billing": "Menga to‘lov yoki obuna bilan bog‘liq yordam kerak", + "contact-view-issue-cannot-add-server": "Kirish kalitim orqali server qo‘shishda muammoga duch keldim", + "contact-view-issue-connection": "Outline VPN serverimga ulanishda muammoga duch keldim", + "contact-view-issue-general": "Menda umumiy fikr-mulohaza yoki takliflar bor", + "contact-view-issue-managing": "Outline VPN serverimni boshqarish yoki boshqalarni unga ulashda yordam kerak", + "contact-view-issue-no-server": "Menga kirish kaliti kerak", + "contact-view-issue-performance": "Outline VPN serveriga ulanganimda internet tezligi sekinlashmoqda", + "contact-view-open-ticket": "Ushbu masala bo‘yicha ochiqcha savalingiz bormi?", + "data-collection": "Ma’lumotlarni yig‘ish", + "disconnect-button-label": "Aloqani uzish", + "disconnected-server-state": "Aloqa uzilgan", + "disconnecting-server-state": "Aloqa uzilmoqda...", + "email-feedback-input": "Elektron pochta manzili (ixtiyoriy)", + "error-connection-configuration": "Noto‘g‘ri konfiguratsiya. Xatolik skrinshotini oling va sizga kirish kalitini bergan shaxsga yuboring.", + "error-connection-configuration-fetch": "Server konfiguratsiyasini yuklab bo‘lmadi. Xatolik skrinshotini oling va sizga kirish kalitini bergan shaxsga yuboring.", + "error-connection-proxy": "Ulanib bo‘lmadi. Iltimos, internet aloqsini tekshiring, so‘ng xatolik skrinshotini oling va sizga kirish kalitini bergan shaxsga yuboring.", + "error-details": "Tafsilotlar", + "error-details-dialog-copied": "Nusxa olindi", + "error-details-dialog-copy": "Nusxa olish", + "error-details-dialog-dismiss": "Yopish", + "error-details-dialog-header": "Xatolik tafsilotlari", + "error-feedback-submission": "Habaringizni yuborib bo‘lmadi. Internet aloqasini tekshirib, qayta urinib ko‘ring.", + "error-invalid-access-key": "Yaroqsiz kirish kaliti. Qayta urinib ko‘ring yoki yordam olish uchun habar yuboring.", + "error-server-already-added": "\"{serverName}\" serveri avval qo‘shilgan.", + "error-server-incompatible": "Bu kirish kaliti Outline ilovasining ushbu versiyasiga mos kelmaydi.", + "error-shadowsocks-unsupported-cipher": "Shadowsocks shifrlash usuli qo‘llab-quvvatlanmaydi", + "error-timeout": "Jarayon kutilganidan uzoqroq davom etmoqda. Dasturni qayta ishga tushirish foydali bo‘lishi mumkin. Agar bu holat yana takrorlansa, habar yuboring.", + "error-unexpected": "Kutilmagan xatolik yuz berdi. Dasturni qayta ishga tushirish yordam berishi mumkin. Agar bu holat yana takrorlansa, habar yuboring.", + "feedback-thanks": "Yordam berganingiz uchun rahmat! Sizning fikringiz biz uchun muhim.", + "fix-this": "Muammoni hal qilish", + "get-help": "Yordam olish", + "got-it": "Tushunarli", + "help-page-title": "Yordam", + "language-page-title": "Tilni tanlang", + "learn-more": "Batafsil", + "licenses-page-title": "Litsenziyalar", + "no": "Yo'q", + "non-system-vpn-warning-detail": "Aksariyat brauzerlar Outline'ga avtomatik ulanadi, ba'zilari esa ulanmasligi mumkin.", + "non-system-vpn-warning-title": "Brauzeringiz ulanishini tekshiring", + "outline-plugin-error-admin-permissions": "Outline dasturini ishga tushirish uchun administrator huquqlari kerak. Agar sizda ular bo‘lmasa, kompyuteringizni qayta ishga tushirib ko‘ring yoki administratoringizga murojaat qiling.", + "outline-plugin-error-antivirus": "Antivirus dasturingiz ulanishga to‘sqinlik qilayotganga o‘xshaydi.", + "outline-plugin-error-invalid-server-credentials": "Kirish kalitingiz yaroqsiz. Agar bu muammo takrorlansa, kalitni bergan shaxs bilan bog‘laning.", + "outline-plugin-error-routing-tables": "Yo‘naltirish jadvallarini sozlab bo‘lmadi. Agar bu muammo takrorlansa, biz bilan bog‘laning.", + "outline-plugin-error-server-unreachable": "Serveringizga ulanib bo‘lmadi. Internet aloqasini tekshirib, qayta urinib ko‘ring.", + "outline-plugin-error-system-configuration": "Outline dasturi to‘g‘ri o‘rnatilmaganga o'xshaydi. Uni qayta o‘rnatib ko‘ring. Agar bu yordam bermasa, ilova orqali habar yuboring.", + "outline-plugin-error-udp-forwarding-not-enabled": "Ushbu server UDP yo‘naltirishni qo‘llab-quvvatlamaydi. Agar bu muammo takrorlansa, sizga kirish ruxsatini bergan shaxs bilan bog‘laning.", + "outline-plugin-error-unsupported-routing-table": "Boshqa VPN yoqilganga o'xshaydi. Uni o'chirib qayta urinib ko‘ring.", + "outline-plugin-error-vpn-permission-not-granted": "Outline serverga VPN orqali ulanish uchun ruxsat talab qilinadi. Qayta urinib ko‘ring yoki yordam kerak bo‘lsa, habar yuboring.", + "outline-services-installation-confirmation": "Outline dasturini ishga tushirish uchun administrator huquqlari talab qilinishi mumkin. Davom etasizmi?", + "outline-services-installation-failed": "Outlineni ishga tushirib bo‘lmadi. Iltimos, ilova orqali habar yuboring.", + "outline-services-installed": "Outline ishga tushirildi. Serverga qaytadan ulanib ko‘ring.", + "outline-services-installing": "Outline ishga tushirilmoqda...", + "privacy": "Maxfiylik", + "privacy-text": "Agar ilovada xatolik yoki nosozlik yuzaga kelsa, yoki server admini anonim serverdan foydalanib ma'lumotlarini yuborishga ruxsat bergan bo'lsa, muayyan texnik ma'lumotlar ko'rib chiqishga kiritiladi.", + "privacy-title": "Outline sizning shaxsiy ma'lumotlaringizni to'plamaydi", + "quit": "Chiqish", + "reconnecting-server-state": "Qayta ulanmoqda...", + "save": "Saqlash", + "server-access-key-detected": "Kirish kaliti aniqlandi", + "server-access-key-label": "ss://kirish-kaliti", + "server-add": "Server qo‘shish", + "server-add-access-key": "Kirish kalitini qo‘shish", + "server-add-ignore": "E’tibor berilmasin", + "server-add-instructions": "Server qo‘shish uchun kirish kalitini nusxalang va joylashtiring.", + "server-add-invalid": "{openLine}Yaroqsiz kirish kaliti.{closeLine}Server qo‘shish uchun yaroqli kirish kalitini (ss://) kiriting.", + "server-add-zero-state-instructions": "Server qo‘shish uchun bosing.", + "server-added": "\"{serverName}\" serveri qo‘shildi!", + "server-connected": "\"{serverName}\" serveriga ulandi", + "server-create-your-own": "Kirish kalitingiz yo‘qmi?
{openLink}Bizning saytimizda{closeLink} orqali yarating.", + "server-create-your-own-zero-state": "Serveringiz yo‘qmi?
{openLink}Outline Manager{closeLink} orqali yarating.", + "server-create-your-own-zero-state-access": "Serveringiz yo‘qmi?
{openLink}Bizning saytimizda{closeLink} yaratishingiz yoki
{openLink2}kirish kalitini{closeLink} so‘rashingiz mumkin.", + "server-default-name": "Proksi-server", + "server-default-name-outline": "Outline serveri", + "server-detected": "Ushbu serverni qo‘shishni tasdiqlang.", + "server-disconnected": "“{serverName}” serveridan uzildi", + "server-forget": "O‘chirish", + "server-forgotten": "“{serverName}” serveri o‘chirildi.", + "server-forgotten-undo": "“{serverName}” serveri tiklandi.", + "server-rename": "Nomini o‘zgartirish", + "server-rename-complete": "Server nomi o‘zgartirildi", + "servers-menu-item": "Serverlar", + "servers-page-title": "Outline", + "submit": "Yuborish", + "submitting": "Yuborilmoqda...", + "support-form-access-key-source": "Kirish kalitini qayerdan oldingiz?", + "support-form-description": "Muammoning tavsifi", + "support-form-email": "Elektron po‘chta", + "support-form-email-invalid": "Noto‘g‘ri format kiritildi.", + "support-form-outreach-consent": "Ha, men hamkorlik imkoniyatlari haqida ma'lumot olishni xohlayman.", + "support-form-required-field": "Majburiy maydon", + "support-form-subject": "Mavzu", + "terms": "Foydalanish shartlari", + "tips": "Tavsiyalar", + "tray-open-window": "Ochish", + "undo-button-label": "Bekor qilish", + "unreachable-server-state": "Ulanish imkonsiz", + "update-downloaded": "Outline dasturining yangilangan versiyasi yuklab olindi. U dastur qayta ishga tushirilganida o'rnatiladi.", + "version": "Versiya {appVersion}", + "yes": "Ha" +} diff --git a/client/src/www/ui_components/app-root.js b/client/src/www/ui_components/app-root.js index 9cf7481259..fb58bef823 100644 --- a/client/src/www/ui_components/app-root.js +++ b/client/src/www/ui_components/app-root.js @@ -503,6 +503,7 @@ export class AppRoot extends mixinBehaviors( th: {id: 'th', name: 'ไทย', dir: 'ltr', supportId: 'th'}, tr: {id: 'tr', name: 'Türkçe', dir: 'ltr', supportId: 'tr'}, uk: {id: 'uk', name: 'Українська', dir: 'ltr', supportId: 'uk'}, + uz: {id: 'uz', name: 'O‘zbekcha', dir: 'ltr', supportId: 'uz'}, ur: {id: 'ur', name: 'اردو', dir: 'rtl', supportId: 'ur'}, vi: {id: 'vi', name: 'Tiếng Việt', dir: 'ltr', supportId: 'vi'}, 'zh-CN': { diff --git a/server_manager/messages/uz.json b/server_manager/messages/uz.json new file mode 100644 index 0000000000..c6694989c4 --- /dev/null +++ b/server_manager/messages/uz.json @@ -0,0 +1,342 @@ +{ + "about-outline": "Outline — bu Jigsaw tomonidan yaratilgan ochiq manbali loyiha bo‘lib, ommaviy axborot vositalari va jurnalistlar uchun internetdan xavfsiz foydalanish imkonini beradi.

Outline dasturi Shadowsocks texnologiyasiga asoslangan va hali ham dastlabki bosqichdagi mahsulot hisoblanadi. Siz bizning GitHub sahifamiz orqali kodga hissa qo‘shishingiz mumkin. Sizda, yangi platformalarga kengayishimiz va yangi funksiyalar qo‘shilishidan xabardor bo‘lish uchun bizni Reddit va Medium sahifalarimizda kuzatib borish imkoniyati mavjud.", + "about-version": "Versiya {version}", + "aws-lightsail-firewall-0": "{openLink}Amazon Lightsail{closeLink} namunalar ekraniga o‘ting.", + "aws-lightsail-firewall-1": "Outline joylashtirmoqchi bo‘lgan namunani tanlang.", + "aws-lightsail-firewall-2": "'Tarmoq' (Networking) yorlig‘iga o‘ting.", + "aws-lightsail-firewall-3": "'Brandmauer' (Firewall) bo‘limida 'Qo‘shish' (Add another) tugmasini bosing.", + "aws-lightsail-firewall-4": "'Ilova' (Application) sozlamasini 'Barcha portlar TCP+UDP' ga o‘rnating.", + "aws-lightsail-firewall-5": "'Saqlash' (Save) tugmasini bosing.", + "cancel": "Bekor qilish", + "close": "Yopish", + "confirmation-server-destroy": "Mavjud foydalanuvchilar kirish huquqidan mahrum bo‘ladi. Bu amalni bekor qilib bo‘lmaydi.", + "confirmation-server-destroy-title": "Serverni o‘chirasizmi?", + "confirmation-server-remove": "Bu amal serveringizni Outline Manager dasturidan olib tashlaydi, ammo foydalanuvchilar proksi orqali ulanishni davom ettirishlari mumkin. Serverni to‘liq o‘chirish uchun xost qurilmangizda, qo‘lda o‘chirishingiz kerak.", + "confirmation-server-remove-title": "Dasturdan serverni olib tashlaysizmi?", + "contact-view-exit-cannot-add-server": "Mutaxassislar server qo‘shish bo‘yicha yordam bera olmaydi. Iltimos, muammoni hal qilish uchun {openLink}ushbu yo‘riqnomalarga{closeLink} amal qiling va keyin sizga kirish kalitini bergan shaxs bilan bog‘laning.", + "contact-view-exit-connection": "Mutaxassislar serverga ulanish bo‘yicha yordam bera olmaydi. Iltimos, muammoni hal qilish uchun {openLink}ushbu yo‘riqnomalarga{closeLink} amal qiling va keyin sizga kirish kalitini bergan shaxs bilan bog‘laning.", + "contact-view-exit-open-ticket": "Hozirda bizga ko‘plab yordam so‘rovlari kelib tushmoqda. Tushunganingiz va sabringiz uchun tashakkur. Iltimos, ushbu masalaga oid yangi so‘rov yubormang. Agar bu so'rov bo'yicha sizda qo‘shimcha ma’lumot bo‘lsa, dastlabki elektron xabarga javob qaytaring.", + "contact-view-intro": "Muammoingiz haqida batafsilroq yozing. Agar so‘ralmagan bo‘lsa, shaxsiy ma’lumotlarni kiritmang.", + "contact-view-issue": "Outline muammosi", + "contact-view-issue-cannot-add-server": "Kalitim orqali server qo‘shishda muammoga duch keldim", + "contact-view-issue-connection": "Outline VPN serverimga ulanishda muammoga duch keldim", + "contact-view-issue-general": "Menda umumiy fikr-mulohaza yoki takliflar bor", + "contact-view-issue-managing": "Outline VPN serverimni boshqarish yoki boshqalarni unga ulashda yordam kerak", + "contact-view-issue-performance": "Outline VPN serveriga ulanganimda internet tezligi sekinlashmoqda", + "contact-view-open-ticket": "Ushbu masala bo‘yicha ochiqcha savalingiz bormi?", + "data-limit": "Trafik chegarasi", + "data-limit-per-key": "Har bir kalit uchun trafik chegarasi", + "data-limits": "Ma'lumot uzatish cheklovlari", + "data-limits-description": "Ushbu serverdagi kalitlar uchun 30 kunlik ma'lumot uzatish chegarasini o‘rnating.", + "data-limits-dialog-text": "Ushbu serverdagi kalitlar uchun ma'lumot uzatish chegarasini o‘rnatish uchun Sozlamalar (Settings) bo‘limiga o‘ting.", + "data-limits-dialog-title": "Ma'lumotlar haddan tashqari ko‘payishidan saqlaning.", + "data-limits-disclaimer": "Hozirda siz statistikani hisobot shaklida yuboryapsiz, shuning uchun ushbu trafik cheklovlari funksiyasi qo‘llanilgan deb hisoblanadi. Batafsil ma’lumot uchun {openLink}ma’lumot yig‘ish siyosati{closeLink} bilan tanishing.", + "data-limits-usage": "{total} dan {used} foydalanilgan", + "destroy": "O‘chirish", + "digitalocean-disconnect-account": "DigitalOcean akkauntini uzish", + "digitalocean-unreachable": "Bu xato tarmoqdagi 'Brandmauer' (firewall) yoki digitalocean.com bilan vaqtincha uzulishlar tufayli yuzaga kelgan bo‘lishi mumkin.", + "disabled": "O‘chirilgan", + "disconnect": "Uzish", + "done": "Tayyor", + "enabled": "Yoqilgan", + "error-connectivity": "DigitalOcean akkauntingizga ulanishda muammo yuz berdi. Bu ba'zida DigitalOcean xizmatidagi vaqtinchalik nosozliklar yoki internet aloqangizdagi muammolar bilan bog‘liq bo‘lishi mumkin. Agar qayta urinib ko‘rish yordam bermasa, DigitalOcean’ga qayta kirish muammoni hal qilishi mumkin.", + "error-connectivity-title": "Ulanish muammosi", + "error-do-account-info": "DigitalOcean akkaunt ma'lumotlarini olish muvaffaqiyatsiz yakunlandi", + "error-do-auth": "DigitalOcean orqali autentifikatsiya amalga oshmadi", + "error-do-limit": "Sizning DigitalOcean akkauntingizda {num} ta Droplet chegarasiga yetgan. Limitni oshirish uchun quyidagi sahifaga o‘ting: https://cloud.digitalocean.com/account/team/droplet_limit_increase", + "error-do-regions": "Mavjud mintaqalar roʻyxatini olish muvaffaqiyatsiz yakunlandi", + "error-do-warning": "DigitalOcean ogohlantirishi: \"{message}\"", + "error-feedback": "Habarni yuborib bo‘lmadi. Qayta urinib ko‘ring.", + "error-gcp-auth": "Google Cloud Platform orqali autentifikatsiya muvaffaqiyatsiz yakunlandi", + "error-hostname-invalid": "IP manzil yoki yaroqli host nomi kiritilishi kerak.", + "error-key-add": "Kalit qo‘shilmadi", + "error-key-remove": "Kalit o'chirilmadi", + "error-key-rename": "Kalit nomi o‘zgartirilmadi", + "error-keys-get": "Kalitlar yuklanmadi", + "error-keys-port-bad-input": "Port uchun 1 dan 65,535 gacha bo‘lgan butun son kiriting.", + "error-keys-port-in-use": "Bu port serverda allaqachon ishlatilmoqda.", + "error-licenses": "Litsenziyalarni yuklab bo‘lmadi.", + "error-metrics": "Statistika maʼlumotlarini yoqishda xatolik yuz berdi.", + "error-network": "Tarmoqda xatolik yuz berdi.", + "error-not-saved": "Saqlanmadi.", + "error-remove-data-limit": "Standart trafik cheklovini o‘chirib bo‘lmadi.", + "error-remove-per-key-limit": "Ushbu kalit uchun trafik cheklovi bekor qilinmadi.", + "error-server-creation": "Outline serverini yaratishda xatolik yuz berdi.", + "error-server-destroy": "Serverni o‘chirish muvaffaqiyatsiz yakunlandi.", + "error-server-removed": "{serverName} serveri endi DigitalOcean akkauntingizda mavjud emas.", + "error-server-rename": "Server nomini o‘zgartirish muvaffaqiyatsiz yakunlandi.", + "error-server-unreachable": "Outline serveringiz muvaffaqiyatli o‘rnatilgan, lekin unga ulana olmayapmiz. Ehtimol, bu serveringizdagi Brandmauer (firewall) tomonidan bloklangan bo'lishi mumkin. Sozlamalarni ko‘rib chiqib 1024 dan 65,535 gacha bo'lgan port oralig'ida kiruvchi TCP ulanishlariga ruxsat berilganligiga ishonch hosil qiling.", + "error-server-unreachable-title": "Outline serveringizga ulanib bo'lmadi", + "error-servers-removed": "{serverNames} serverlari endi DigitalOcean akkauntingizda mavjud emas.", + "error-set-data-limit": "Standart trafik cheklovi o‘rnatilmadi.", + "error-set-per-key-limit": "Ushbu kalit uchun trafik cheklovi o‘rnatilmadi.", + "error-unexpected": "Kutilmagan xatolik yuz berdi.", + "experimental": "Tajriba", + "experiments": "Tajribalar", + "experiments-description": "Yangi funksiyalarni ommaga taqdim etishdan oldin sinab ko‘ring va fikr-mulohazalaringizni bizga yuboring.", + "experiments-disclaimer": "Eksperimental funksiyalar ishlab chiqish bosqichida bo‘lib, ular o‘zgarishi yoki ilovadan olib tashlanishi mumkin. Agar siz statistik ma'lumotlarni yuborayotgan bo‘lsangiz, eksperimental funksiyalardan foydalanish hisobga olinadi. Batafsil ma'lumot uchun {openLink}ma'lumot yig‘ish siyosati{closeLink} bilan tanishing.", + "experiments-feedback": "Taklifingiz bormi? {openLink}Bu yerda taklifingizni yuboring.{closeLink}", + "feedback-cloud-provider": "Bulutli xizmat provayderini tanlang", + "feedback-cloud-provider-error": "Iltimos bulutli xizmat provayderini tanlang.", + "feedback-connection": "Serverimga ulana olmayapman", + "feedback-connection-others": "Boshqalar mening serverimga ulana olishmayapti", + "feedback-disclaimer": "Eslatma: Bizning jamoa faqat ingliz tilidagi habarlarga javob bera oladi.", + "feedback-email": "Elektron pochta manzili (ixtiyoriy)", + "feedback-error": "Habar yozing.", + "feedback-explanation-install": "Outline dasturini serveringizga o‘rnatishda xatolik yuz berdi. Agar muammoni hal qila olmasangiz, Bizga habar yuboring. Sizga javob qaytarishimiz uchun elektron pochta manzilingizni qoldirishingiz mumkin.", + "feedback-general": "Umumiy habar", + "feedback-install": "Outline o‘rnatishda muammo yuz berdi", + "feedback-label": "Sizning habaringiz", + "feedback-management": "Serverni boshqarishda muammo yuz berdi", + "feedback-other": "Boshqa", + "feedback-privacy": "Sizning habaringiz, elektron pochta manzilingiz (agar ko‘rsatilgan bo‘lsa) va {openLink}Maxfiylik siyosati{closeLink}da bayon etilgan qo‘shimcha ma’lumotlar Outline jamoasiga yuboriladi.", + "feedback-submit": "Yuborish", + "feedback-suggestion": "Takliflar", + "feedback-title-generic": "Habar yuborish", + "feedback-title-install": "Outline serveri o‘rnatilmadi", + "gcp-billing-action": "Keyingisi", + "gcp-billing-body": "Google Cloud uchun {openLink}to‘lov hisobi{closeLink}ni qo‘shing.", + "gcp-billing-description": "{openLink}Cloud Console to‘lov sahifasi{closeLink}ni oching va to'lov hisobini qo‘shing.", + "gcp-billing-error": "To‘lov ma’lumotlarini olishning imkoni bo‘lmadi.", + "gcp-billing-error-zero": "Davom etish uchun to‘lov hisobini qo‘shishingiz kerak.", + "gcp-click-create": "'Yaratish' (Create) tugmasini bosing.", + "gcp-create-new-project": "{openLink}Google Cloud loyihasini yarating{closeLink}.", + "gcp-create-new-vm": "{openLink}VM namunasini yarating{closeLink}.", + "gcp-create-project": "Google Cloud loyihasi qanday yaratiladi?", + "gcp-create-server": "Google Cloud loyihangizni yarating", + "gcp-create-vm": "VM namunasini qanday yaratiladi?", + "gcp-disconnect-account": "Google Cloud Platform akkauntini o'chirish", + "gcp-firewall-create-0": "Compute Engine loyihangizga yangi {openLink}Brandmauer (firewall) qoidasini qo‘shing{closeLink}.", + "gcp-firewall-create-1": "'Name' maydoniga 'outline' yozing.", + "gcp-firewall-create-2": "'Target tags' maydoniga 'outline' yozing.", + "gcp-firewall-create-3": "'Source IP ranges' maydoniga '0.0.0.0/0' yozing.", + "gcp-firewall-create-4": "'Protocols and ports' bo‘limida 'Allow all' ni tanlang.", + "gcp-name-your-project": "'Project name' maydoniga loyihangiz nomini yozing.", + "gcp-project-setup-error": "Google Cloud loyihangizni sozlashda xatolik yuz berdi.", + "gcp-select-machine-type": "'Machine type' bo‘limida 'f1-micro' ni tanlang.", + "gcp-select-networking": "'Management, security, disks, networking, sole tenancy' ga bosib 'Networking' ni tanlang.", + "gcp-select-region": "'Region' bo‘limida server foydalanuvchilari joylashgan joyga yaqin hududni tanlang.", + "gcp-type-network-tag": "'Network tags' maydoniga 'outline' yozing.", + "gcp-type-outline-server": "'Name' maydoniga 'outline-server' yozing.", + "geo-amsterdam": "Amsterdam", + "geo-bangalore": "Bangalor", + "geo-changhua-county": "Changxua", + "geo-delhi": "Dehli", + "geo-eemshaven": "Eemshaven", + "geo-frankfurt": "Frankfurt", + "geo-hamina": "Hamina", + "geo-hk": "Gonkong", + "geo-iowa": "Ayova", + "geo-jakarta": "Jakarta", + "geo-jurong-west": "Jurong G‘arbiy", + "geo-las-vegas": "Las-Vegas", + "geo-london": "London", + "geo-los-angeles": "Los-Anjeles", + "geo-melbourne": "Melburn", + "geo-montreal": "Monreal", + "geo-mumbai": "Mumbay", + "geo-new-york-city": "Nyu-York", + "geo-northern-virginia": "Shimoliy Virjiniya", + "geo-oregon": "Oregon", + "geo-osaka": "Osaka", + "geo-salt-lake-city": "Solt-Leyk-Siti", + "geo-san-francisco": "San-Fransisko", + "geo-sao-paulo": "San-Paulu", + "geo-seoul": "Seul", + "geo-sg": "Singapur", + "geo-south-carolina": "Janubiy Karolina", + "geo-st-ghislain": "Sen-Gilen", + "geo-sydney": "Sidney", + "geo-tokyo": "Tokio", + "geo-toronto": "Toronto", + "geo-warsaw": "Varshava", + "geo-zurich": "Syurix", + "key": "Kalit {keyId}", + "management-api-documentation": "Server boshqaruvi bo'yicha API hujjatlari", + "manager-resources": "Menejer resurslari", + "manual-server-assign-firewall": "Brandmauer (Firewall) qoidasini o'rnating", + "manual-server-assign-group": "Xavfsizlik guruhini belgilang", + "manual-server-create-firewall": "Brandmauer (Firewall) qoidasini yarating", + "manual-server-create-group": "Xavfsizlik guruhini yarating", + "manual-server-description": "Quyidagi bosqichlar yordamida Outline dasturini {cloudProvider} Linux serveriga o‘rnatasiz.", + "manual-server-firewall": "Brandmauerni (Firewall) sozlamalang", + "manual-server-install-paste": "O‘rnatish natijasini bu yerga joylang.", + "manual-server-install-run": "Serverga kiring va ushbu buyruqni bajaring.", + "manual-server-instructions": "Ko‘rsatmalar", + "manual-server-show-me": "Ko'rsatish", + "manual-server-title": "Quyidagi ko‘rsatmalarga amal qiling", + "metrics-description": "Outline serveringizning ishonchliligi va unumdorligini siz va serveringiz foydalanuvchilari uchun yaxshilash maqsadida anonim statistika maʼlumotlarni ulashing. {openLink}Batafsil maʼlumot.{closeLink}", + "metrics-setup-description": "Outline serverining ishonchliligi va unumdorligini yaxshilashga yordam berish uchun anonim statistika maʼlumotlarni ulashing. Bu sozlamani istalgan vaqtda server sozlamalari bo‘limida o‘zgartirishingiz mumkin.", + "metrics-setup-learn-more": "Batafsil maʼlumot", + "metrics-setup-title": "Ushbu server uchun anonim statistika maʼlumotlarni ulashish", + "metrics-share": "Statistika malumotlarini ulashish", + "metrics-skip": "O‘tkazib yuborish", + "metrics-title": "Statistika malumotlarini ulashish", + "nav-about": "Ilova haqida", + "nav-contact-us": "Biz bilan bog‘lanish", + "nav-data-collection": "Maʼlumot yig'ish", + "nav-feedback": "Fikr bildirish", + "nav-help": "Yordam", + "nav-licenses": "Litsenziyalar", + "nav-privacy": "Maxfiylik", + "nav-terms": "Foydalanish shartlari", + "no": "Yo'q", + "no-data-limit": "Cheklov o'rnatilmagan", + "notification-app-update": "Outline Manager dasturining yangi versiyasini yuklab olindi. Ilovani qayta ishga tushirganingizdan, u o‘rnatiladi.", + "notification-feedback-thanks": "Rivojlanishimiz uchun hissa qo'shganingizdan minnatdormiz! Sizning fikringiz biz uchun muhim.", + "notification-key-added": "Kalit qo'shildi", + "notification-key-removed": "Kalit o'chirildi", + "notification-server-destroyed": "Server o‘chirildi", + "notification-server-exists": "Server allaqachon qo‘shilgan", + "notification-server-removed": "Server ilovadan o‘chirildi", + "oauth-account-active": "DigitalOcean akkauntingiz faollashtirildi.", + "oauth-account-active-tag": "Akkaunt faollashtirildi! Server joylashuvlari yuklanmoqda...", + "oauth-activate-account": "DigitalOcean akkauntingizni faollashtiring.", + "oauth-billing": "digitalocean.com saytiga to‘lov ma’lumotlaringizni kiritib ilovaga qayting.", + "oauth-billing-tag": "To‘lov ma’lumotlarini kiriting...", + "oauth-connect-description": "Akkauntingiz orqali Outline serverini yaratish va ulanish osonlashadi.", + "oauth-connect-tag": "Akkauntingizga ulanish kutilmoqda...", + "oauth-connect-title": "DigitalOcean orqali tizimga kiring yoki yangi akkaunt yarating.", + "oauth-sign-out": "Chiqish", + "oauth-verify": "DigitalOcean tomonidan yuborilgan elektron pochtani, pochta qutingizdan toping va akkauntingizni tasdiqlash uchun havolani bosing.", + "oauth-verify-tag": "Elektron pochtangizni tasdiqlang...", + "okay": "OK", + "per-key-data-limit-dialog-set-custom": "Trafik chegarasini o‘rnatish", + "per-key-data-limit-dialog-title": "Trafik chegarasi – {keyName}", + "region-best-value": "Eng yaxshi tanlov", + "region-description": "Aynan shu yerdan sizning internetingiz boshlanadi.", + "region-setup": "Outline dasturini sozlash", + "region-title": "Server joylashuvini tanlang.", + "remove": "O'chirish", + "retry": "Takrorlash", + "save": "Saqlash", + "saved": "Saqlandi", + "saving": "Saqlanmoqda...", + "server-access": "Serverga kirish", + "server-access-key-new": "Yangi kalit qo'shish", + "server-access-key-rename": "Nomini o'zgartirish", + "server-access-keys": "Kirish kalitlari", + "server-access-keys-tab": "Kirish kalitlari ({keyCount})", + "server-connections": "Ulanishlar", + "server-data-transfer": "Uzatilgan trafik / so‘nggi 30 kun", + "server-data-used": "Foydalanilgan trafik / so‘nggi 30 kun", + "server-destroy": "Serverni o'chirish", + "server-help-access-key-description": "Foydalanuvchilarga kalitlarini bering, shunda ular sizning Outline serveringizga ulanishadi. Foydalanuvchilar barcha qurilmalarida bir xil kalitni ishlatishi mumkin.", + "server-help-access-key-next": "Keyingisi", + "server-help-access-key-title": "Kalitlar yarating va kirish huquqini ulashing", + "server-help-connection-description": "Bu yerga bosib, Outline mijoz ilovasini o‘rnating va shaxsiy kalitingiz yordamida Outline serveriga ulaning.", + "server-help-connection-ok": "Tushunarli", + "server-help-connection-title": "Siz hali ulanmagansiz!", + "server-keys": "Kalitlar", + "server-metrics": "Ko'rsatkichlar", + "server-metrics-average-devices": "So‘nggi 30 kun ichida ishlatilgan qurilmalarning o‘rtacha soni", + "server-metrics-data-transferred": "So‘nggi 30 kun ichida uzatilgan ma’lumotlar hajmi", + "server-metrics-user-hours": "So‘nggi 30 kun ichida VPN foydalanuvchilari sarflagan soatlar", + "server-metrics-user-hours-unit": "soat", + "server-my-access-key": "Mening kalitim", + "server-name": "Outline serveri {serverLocation}", + "server-remove": "Serverni o'chirish", + "server-settings": "Sozlamalar", + "server-unreachable": "Server mavjud emas", + "server-unreachable-description": "Serverga ulanishda muammo yuz berdi.", + "server-unreachable-managed-description": "Qayta urinib ko‘ring yoki bu serverni ilovadan o‘chiring.", + "server-unreachable-manual-description": "Yana bir bor urinib ko‘ring yoki ushbu server va virtual xostni butunlay o‘chirib tashlang.", + "server-usage": "Foydalanish (oxirgi 30 kun)", + "server-view-access-keys-add-key-action": "Kalit yaratish", + "server-view-access-keys-as-count-column-header": "Noyob avtonom tizimlar {openItalics}(so‘nggi 30 kun){closeItalics}", + "server-view-access-keys-as-count-tooltip": "Bu ko‘rsatkich so‘nggi 30 kun ichida ushbu kalit yordamida serverga ulangan Avtonom tizimlar sonini bildiradi. Avtonom tizim bu, tashkilot masalan internet-provayder, yirik kompaniya yoki universitet tomonidan boshqariladigan tarmoq.", + "server-view-access-keys-key-column-header": "Kalit", + "server-view-access-keys-last-active-column-header": "Oxirgi faollik", + "server-view-access-keys-last-active-tooltip": "Bu kalit oxirgi marta serverga muvaffaqiyatli ulanish uchun foydalanilgan.", + "server-view-access-keys-last-connected-column-header": "Oxirgi ulanish", + "server-view-access-keys-peak-devices-column-header": "Maksimal qurilmalar {openItalics}(so‘nggi 30 kun){closeItalics}", + "server-view-access-keys-peak-devices-tooltip": "(So‘nggi 30 kun ichida) bu kalit yordamida serverga bir vaqtda ulangan maksimal qurilmalar soni va u sodir bo'lgan vaqt.", + "server-view-access-keys-tab": "Kirish kalitlari ({accessKeyCount})", + "server-view-access-keys-usage-column-header": "Foydalanish {openItalics}(so‘nggi 30 kun){closeItalics}", + "server-view-access-keys-usage-limit": ">80% ishlatilgan", + "server-view-access-keys-usage-tooltip": "So‘nggi 30 kun ichida ushbu kalit yordamida server orqali uzatilgan ma'lumotlar miqdori", + "server-view-privacy-statement": "Foydalanuvchilarimizning maxfiyligi va xavfsizligini himoya qilish asosiy maqsadlarimizdan biri. Har bir Outline serveri avtomatik ravishda umumlashtirilgan va anonim tarzda ishlatilgan ma’lumotlarni to‘playdi. Ushbu ma’lumotlar, foydalanuvchilar kirgan saytlar yoki ularning muloqotlarini o‘z ichiga olmaydi. Faqat server boshqaruvchisi ruxsat bersagina, bu ma’lumotlar Outline jamoasi yuboriladi.", + "server-view-privacy-statement-link": "Batafsil ma'lumot", + "server-view-server-metrics-advanced-metrics-link": "Serverning batafsil ko‘rsatkichlarini qanday ko‘rishni bilib oling", + "server-view-server-metrics-bandwidth-as-breakdown": "Eng ko‘p trafik ishlatgan avtonom tizimlar {openItalics}(so‘nggi 30 kun){closeItalics}", + "server-view-server-metrics-bandwidth-limit-tooltip": "So‘nggi 30 kun ichida yuqori trafik sarfi aniqlandi. Ortiqcha sarfni oldini olish va xizmatni barqaror saqlash uchun trafik cheklovlarini o‘rnating.", + "server-view-server-metrics-bandwidth-title": "Umumiy trafik sarfi {openItalics}(so‘nggi 30 kun){closeItalics}", + "server-view-server-metrics-bandwidth-tooltip": "So‘nggi 30 kun ichida server orqali o‘tgan umumiy ma’lumot hajmi.", + "server-view-server-metrics-bandwidth-usage": "Joriy trafik", + "server-view-server-metrics-bandwidth-usage-max": "Eng ko‘p ishlatilgan trafik {openItalics}(so‘nggi 30 kun){closeItalics}", + "server-view-server-metrics-devices-as-breakdown": "Eng ko‘p qurilma ulangan autonom tizimlar {openItalics}(so‘nggi 30 kun){closeItalics}", + "server-view-server-metrics-devices-title": "Ulangan qurilmalar{openItalics}(so‘nggi 30 kun){closeItalics}", + "server-view-server-metrics-devices-tooltip": "So‘nggi 30 kun ichida serverga ulangan qurilmalarning {openItalics}minimal{closeItalics} soni", + "server-view-server-metrics-devices-unit-label": "Qurilmalar", + "server-view-server-metrics-tab": "Server ko'rsatkichlari", + "server-view-server-metrics-tunnel-time-as-breakdown": "Eng uzoq ulanish vaqti bo‘lgan autonom tizimlar {openItalics}(so‘nggi 30 kun){closeItalics}", + "server-view-server-metrics-tunnel-time-title": "Umumiy ulanish vaqti {openItalics}(so‘nggi 30 kun){closeItalics}", + "server-view-server-metrics-tunnel-time-tooltip": "So‘nggi 30 kun ichida foydalanuvchilarning serverga ulangan umumiy vaqti. Bu har bir qurilmaning ulanish vaqti yig‘indisi asosida hisoblanadi.", + "server-view-update-notification-bar-link": "Qanday qilishni bilib oling", + "server-view-update-notification-bar-message": "Serverning yangi versiyasi mavjud! Eng so‘nggi funksiyalardan foydalanish uchun serveringizni yangilang.", + "servers-add": "Server qo'shish", + "servers-digitalocean": "DigitalOcean serverlari", + "servers-gcp": "Google Cloud Platform serverlari", + "servers-manual": "Serverlar", + "settings-access-key-port": "Yangi kalitlari uchun port", + "settings-metrics-header": "Anonim ko'rsatkicharni ulashish", + "settings-server-api-url": "Management API uchun URL havola", + "settings-server-cost": "Oylik to'lov", + "settings-server-creation": "Yaratilgan", + "settings-server-hostname": "Host nomi", + "settings-server-id": "Server ID", + "settings-server-info": "Server malumotlari", + "settings-server-location": "Server joylashuvi", + "settings-server-name": "Nomi", + "settings-server-rename": "Serveringizga yangi nom o'rnating. Bu nom siz taklif qilgan foydalanuvchilarning qurilmalarida ko'rsatilmaydi.", + "settings-server-version": "Server versiyasi", + "settings-transfer-limit": "Ma'lumot uzatish uchun ajratilgan trafik", + "setup-action": "Sozlash", + "setup-advanced": "Kengaytirilgan", + "setup-anywhere": "Outline’ni istalgan joyda sozlang", + "setup-cancel": "Istalgan vaqtda bekor qilish mumkin", + "setup-create": "Server yaratish", + "setup-description": "Serveringiz yo‘qmi? DigitalOcean akkauntingizni yarating.", + "setup-do-cost": "1 oy uchun atiga $6", + "setup-do-create": "DigitalOcean akkauntingiz yordamida $6 evaziga 1 TB trafik bilan yangi server yarating.", + "setup-do-data": "Ma’lumot uzatish chegarasi 1 TB", + "setup-do-description": "Bu bir necha daqiqa vaqt olishi mumkin. Siz ushbu serverni istalgan vaqtda o‘chirishingiz mumkin.", + "setup-do-easiest": "Oson sozlash jarayoni", + "setup-do-title": "Outline’ni sozlash.", + "setup-firewall-instructions": "Brandmauer (Firewall) bo‘yicha ko‘rsatmalar", + "setup-gcp-create": "Google hisobingiz orqali yangi server yarating. Narxlar joylashuv va foydalanishga qarab farqlanadi.", + "setup-gcp-easy": "Oson sozlash jarayoni", + "setup-gcp-free-tier": "{openLinkFreeTier}Bepul sinov muddati{closeLink} bilan birinchi serveringiz narxi {openLinkIpPrice}oyiga $3 dan{closeLink} boshlanadi", + "setup-gcp-free-trial": "Yangi foydalanuvchilar uchun {openLinkFreeTrial}90 kunlik bepul sinov muddati{closeLink}", + "setup-gcp-promo": "Google Cloud uchun Outline serverini avtomatik yaratish jarayonini sinab ko‘ring", + "setup-recommended": "Tavsiya etiladi", + "setup-simple-commands": "O‘rnatish uchun oddiy buyruqlar", + "setup-step-by-step": "Bosqichma-bosqich qo'llanma", + "setup-tested": "VULTR, Linode va Liquid Web sinovdan o‘tkazilgan", + "setup-title": "Outline’ni sozlash uchun bulutli xizmatni tanlang.", + "share-description": "Ushbu taklifni nusxalab, ishonchli aloqa vositasi orqali yuboring. {openLink}Yordam kerakmi?{closeLink}", + "share-invite-access-key-copied": "Kalitdan nusxa olindi", + "share-invite-copied": "Taklifdan nusxa olindi", + "share-invite-copy": "Taklifdan nusxa olish", + "share-invite-copy-access-key": "Kalitdan nusxa olish", + "share-invite-html": "Internetga xavfsiz ulanish uchun ushbu serverdan foydalaning.

1) Qurilmangiz uchun Outline ilovasini yuklab oling:

- iOS: https://itunes.apple.com/app/outline-app/id1356177741
- MacOS: https://itunes.apple.com/app/outline-app/id1356178125
- Windows: https://s3.amazonaws.com/outline-releases/client/windows/stable/Outline-Client.exe
- Linux: https://s3.amazonaws.com/outline-releases/client/linux/stable/Outline-Client.AppImage
- Android: https://play.google.com/store/apps/details?id=org.outline.android.client
- Android uchun qo‘shimcha havola: https://s3.amazonaws.com/outline-releases/client/android/stable/Outline-Client.apk

2) Sizga ss:// bilan boshlanuvchi kalit beriladi. Uni olganingizdan so‘ng, kalitni nusxalang.

3) Outline ilovasini oching. Agar kalitingiz avtomatik aniqlansa, \"Ulanish\" tugmasini bosing va davom eting. Agar aniqlanmasa, kalitni maydonga joylashtiring, keyin \"Ulanish\" tugmasini bosing.

Endi siz ochiq internetdan foydalanishga tayyorsiz! Serverga muvaffaqiyatli ulanganingizni tekshirish uchun, Googlega \"what is my ip\" deb yozing. Googleda ko‘rsatilgan IP manzil Outline ilovasidagi IP manzilga mos kelishi kerak.

Outline haqida batafsil ma’lumot: https://getoutline.org/", + "share-invite-instructions": "GitHub’dagi ko‘rsatmalarimizga amal qiling:", + "share-invite-trouble": "Taklif havolasiga kirishda muammo bormi?", + "share-title": "Kirish huquqini ulashish", + "support-form-cloud-provider": "Bulutli xizmat ko'rsatuvchi provayder", + "support-form-cloud-provider-aws": "Amazon Web Services", + "support-form-cloud-provider-digitalocean": "DigitalOcean", + "support-form-cloud-provider-gcloud": "Google Cloud", + "support-form-description": "Muammoning tavsifi", + "support-form-email": "Elektron po‘chta", + "support-form-email-invalid": "Noto‘g‘ri format kiritildi.", + "support-form-outreach-consent": "Ha, men hamkorlik imkoniyatlari haqida ma'lumot olishni xohlayman.", + "support-form-required-field": "Majburiy maydon", + "support-form-subject": "Mavzu", + "survey-data-limits-title": "Trafik cheklovlarini yaxshilashga yordam bering", + "survey-decline": "Rad etish", + "survey-disclaimer": "(So‘rovnomaga o‘tish)ni bossangiz, qisqa so‘rovnoma uchun Google Forms sahifasiga yo‘naltirilasiz. Formani Outline-ga ulanib to'ldirishingizni tavsiya qilamiz.", + "survey-go-to-survey": "So‘rovnomaga o‘tish", + "terms-of-service": "Men {openLink}Outline foydalanish shartlarini{closeLink} o'qib chiqdim va ularga roziman.", + "yes": "Ha" +} \ No newline at end of file diff --git a/server_manager/www/main.ts b/server_manager/www/main.ts index f9abd29b4b..ea82f141eb 100644 --- a/server_manager/www/main.ts +++ b/server_manager/www/main.ts @@ -85,6 +85,7 @@ const SUPPORTED_LANGUAGES: {[key: string]: LanguageDef} = { th: {id: 'th', name: 'ไทย', dir: 'ltr'}, tr: {id: 'tr', name: 'Türkçe', dir: 'ltr'}, uk: {id: 'uk', name: 'Українська', dir: 'ltr'}, + uz: {id: 'uz', name: 'O‘zbekcha', dir: 'ltr'}, ur: {id: 'ur', name: 'اردو', dir: 'rtl'}, vi: {id: 'vi', name: 'Tiếng Việt', dir: 'ltr'}, 'zh-CN': {id: 'zh-CN', name: '简体中文', dir: 'ltr'},