From a527177b67e80315ea2e889fdfc0883bc36f3e33 Mon Sep 17 00:00:00 2001 From: blagodaren Date: Sat, 28 Dec 2024 10:05:30 +0300 Subject: [PATCH] fix: add more lang and lang fix for tray --- src-tauri/src/core/tray.rs | 4 +- src-tauri/src/utils/i18n.rs | 43 ++- src/components/setting/setting-verge.tsx | 2 + src/locales/ar.json | 437 +++++++++++++++++++++++ src/locales/en.json | 40 ++- src/locales/fa.json | 36 +- src/locales/id.json | 433 ++++++++++++++++++++++ src/locales/ru.json | 34 +- src/locales/tt.json | 17 +- src/locales/zh.json | 34 +- src/services/i18n.ts | 4 + 11 files changed, 1069 insertions(+), 15 deletions(-) create mode 100644 src/locales/ar.json create mode 100644 src/locales/id.json diff --git a/src-tauri/src/core/tray.rs b/src-tauri/src/core/tray.rs index aa2ed9dd..9fe18389 100644 --- a/src-tauri/src/core/tray.rs +++ b/src-tauri/src/core/tray.rs @@ -323,7 +323,7 @@ fn create_tray_menu( let app_version = &MenuItem::with_id( app_handle, "app_version", - format!("Version {version}"), + format!("{} {version}", t("Verge Version")), true, None::<&str>, ).unwrap(); @@ -339,7 +339,7 @@ fn create_tray_menu( let quit = &MenuItem::with_id( app_handle, "quit", - t("Quit"), + t("Exit"), true, Some("CmdOrControl+Q"), ).unwrap(); diff --git a/src-tauri/src/utils/i18n.rs b/src-tauri/src/utils/i18n.rs index b0c8ddcc..d1359447 100644 --- a/src-tauri/src/utils/i18n.rs +++ b/src-tauri/src/utils/i18n.rs @@ -1,4 +1,6 @@ -use std::{fs, path::Path}; +use std::{fs, path::Path, collections::HashMap}; +use serde_json::Value; +use once_cell::sync::Lazy; use crate::config::Config; use sys_locale; @@ -32,15 +34,48 @@ pub fn get_supported_languages() -> Vec { vec!["en".to_string(), "ru".to_string(), "zh".to_string(), "fa".to_string()] } -pub fn t(text: &str) -> String { +static TRANSLATIONS: Lazy> = Lazy::new(|| { + let project_dir = Path::new(env!("CARGO_MANIFEST_DIR")).parent().unwrap(); + let locales_dir = project_dir.join("src/locales"); + let mut translations = HashMap::new(); + + for lang in ["en", "ru", "zh", "fa", "tt"] { + let file_path = locales_dir.join(format!("{}.json", lang)); + if let Ok(content) = fs::read_to_string(file_path) { + if let Ok(json) = serde_json::from_str(&content) { + translations.insert(lang.to_string(), json); + } + } + } + translations +}); + +pub fn t(key: &str) -> String { let config = Config::verge(); let verge = config.latest(); let current_lang = verge.language.as_ref().map_or_else( || get_system_language(), |lang| lang.to_string() ); - - text.to_string() + + if let Some(translations) = TRANSLATIONS.get(¤t_lang) { + if let Some(text) = translations.get(key) { + if let Some(text) = text.as_str() { + return text.to_string(); + } + } + } + + // Fallback to English + if let Some(translations) = TRANSLATIONS.get("en") { + if let Some(text) = translations.get(key) { + if let Some(text) = text.as_str() { + return text.to_string(); + } + } + } + + key.to_string() } fn get_system_language() -> String { diff --git a/src/components/setting/setting-verge.tsx b/src/components/setting/setting-verge.tsx index 538ed158..2a38c9be 100644 --- a/src/components/setting/setting-verge.tsx +++ b/src/components/setting/setting-verge.tsx @@ -100,7 +100,9 @@ const SettingVerge = ({ onError }: Props) => { English Русский فارسی + Bahasa Indonesia Татар + العربية diff --git a/src/locales/ar.json b/src/locales/ar.json new file mode 100644 index 00000000..07913544 --- /dev/null +++ b/src/locales/ar.json @@ -0,0 +1,437 @@ +{ + "millis": "ميلي ثانية", + "seconds": "ثواني", + "mins": "دقائق", + "Back": "رجوع", + "Close": "إغلاق", + "Cancel": "إلغاء", + "Confirm": "تأكيد", + "Maximize": "تكبير", + "Minimize": "تصغير", + "Format document": "تنسيق المستند", + "Empty": "فارغ", + "New": "جديد", + "Edit": "تعديل", + "Save": "حفظ", + "Delete": "حذف", + "Enable": "تمكين", + "Disable": "تعطيل", + "Label-Proxies": "الوكلاء", + "Label-Profiles": "الملفات الشخصية", + "Label-Connections": "الاتصالات", + "Label-Rules": "القواعد", + "Label-Logs": "السجلات", + "Label-Test": "اختبار", + "Label-Settings": "الإعدادات", + "Proxies": "الوكلاء", + "Proxy Groups": "مجموعات الوكلاء", + "Proxy Provider": "مزود الوكيل", + "Update All": "تحديث الكل", + "Update At": "التحديث عند", + "rule": "قاعدة", + "global": "عالمي", + "direct": "مباشر", + "script": "سكريبت", + "Location": "الموقع", + "Delay check": "فحص التأخير", + "Sort by default": "الترتيب الافتراضي", + "Sort by delay": "الترتيب حسب التأخير", + "Sort by name": "الترتيب حسب الاسم", + "Delay check URL": "رابط فحص التأخير", + "Delay check to cancel fixed": "فحص التأخير لإلغاء الثابت", + "Proxy basic": "إعدادات الوكيل الأساسية", + "Proxy detail": "تفاصيل الوكيل", + "Profiles": "الملفات الشخصية", + "Update All Profiles": "تحديث جميع الملفات الشخصية", + "View Runtime Config": "عرض تكوين وقت التشغيل", + "Reactivate Profiles": "إعادة تنشيط الملفات الشخصية", + "Paste": "لصق", + "Profile URL": "رابط الملف الشخصي", + "Import": "استيراد", + "From": "من", + "Update Time": "وقت التحديث", + "Used / Total": "المستخدم / الإجمالي", + "Expire Time": "وقت الانتهاء", + "Create Profile": "إنشاء ملف شخصي", + "Edit Profile": "تعديل الملف الشخصي", + "Edit Proxies": "تعديل الوكلاء", + "Use newlines for multiple uri": "استخدم أسطرًا جديدة لعدّة عناوين URI (يدعم التشفير Base64)", + "Edit Rules": "تعديل القواعد", + "Rule Type": "نوع القاعدة", + "Rule Content": "محتوى القاعدة", + "Proxy Policy": "سياسة الوكيل", + "No Resolve": "لا يوجد حل", + "Prepend Rule": "إضافة قاعدة في البداية", + "Append Rule": "إضافة قاعدة في النهاية", + "Prepend Group": "إضافة مجموعة في البداية", + "Append Group": "إضافة مجموعة في النهاية", + "Prepend Proxy": "إضافة وكيل في البداية", + "Append Proxy": "إضافة وكيل في النهاية", + "Rule Condition Required": "شرط القاعدة مطلوب", + "Invalid Rule": "قاعدة غير صالحة", + "Advanced": "متقدم", + "Visualization": "تصور", + "DOMAIN": "مطابقة اسم المجال الكامل", + "DOMAIN-SUFFIX": "مطابقة لاحقة المجال", + "DOMAIN-KEYWORD": "مطابقة كلمة مفتاحية في المجال", + "DOMAIN-REGEX": "مطابقة المجال باستخدام التعبيرات العادية", + "GEOSITE": "مطابقة المجالات ضمن Geosite", + "GEOIP": "مطابقة رمز البلد لعنوان IP", + "SRC-GEOIP": "مطابقة رمز البلد لعنوان IP المصدر", + "IP-ASN": "مطابقة ASN لعنوان IP", + "SRC-IP-ASN": "مطابقة ASN لعنوان IP المصدر", + "IP-CIDR": "مطابقة نطاق عنوان IP", + "IP-CIDR6": "مطابقة نطاق عناوين IPv6", + "SRC-IP-CIDR": "مطابقة نطاق عنوان IP المصدر", + "IP-SUFFIX": "مطابقة لاحقة عنوان IP", + "SRC-IP-SUFFIX": "مطابقة لاحقة عنوان IP المصدر", + "SRC-PORT": "مطابقة نطاق المنفذ المصدر", + "DST-PORT": "مطابقة نطاق المنفذ الوجهة", + "IN-PORT": "مطابقة المنفذ الوارد", + "DSCP": "علامة DSCP (لـ tproxy على UDP فقط)", + "PROCESS-NAME": "مطابقة اسم العملية (اسم حزمة Android)", + "PROCESS-PATH": "مطابقة المسار الكامل للعملية", + "PROCESS-NAME-REGEX": "مطابقة اسم العملية باستخدام التعبيرات العادية (اسم حزمة Android)", + "PROCESS-PATH-REGEX": "مطابقة المسار الكامل للعملية باستخدام التعبيرات العادية", + "NETWORK": "مطابقة بروتوكول النقل (TCP/UDP)", + "UID": "مطابقة معرف المستخدم في Linux", + "IN-TYPE": "مطابقة نوع الإدخال", + "IN-USER": "مطابقة اسم المستخدم للإدخال", + "IN-NAME": "مطابقة اسم الإدخال", + "SUB-RULE": "قاعدة فرعية", + "RULE-SET": "مطابقة مجموعة القواعد", + "AND": "منطقي AND", + "OR": "منطقي OR", + "NOT": "منطقي NOT", + "MATCH": "مطابقة جميع الطلبات", + "DIRECT": "البيانات تخرج مباشرة", + "REJECT": "رفض الطلبات", + "REJECT-DROP": "تجاهل الطلبات", + "PASS": "تخطي هذه القاعدة عند المطابقة", + "Edit Groups": "تعديل مجموعات الوكلاء", + "Group Type": "نوع المجموعة", + "select": "اختيار الوكيل يدويًا", + "url-test": "اختيار الوكيل بناءً على تأخير اختبار الرابط", + "fallback": "التبديل إلى وكيل آخر عند حدوث خطأ", + "load-balance": "توزيع التحميل بين الوكلاء", + "relay": "التمرير عبر سلسلة الوكلاء المحددة", + "Group Name": "اسم المجموعة", + "Use Proxies": "استخدام الوكلاء", + "Use Provider": "استخدام المزود", + "Health Check Url": "رابط فحص الصحة", + "Expected Status": "الحالة المتوقعة", + "Interval": "الفاصل الزمني", + "Lazy": "كسول", + "Timeout": "مهلة", + "Max Failed Times": "الحد الأقصى لمحاولات الفشل", + "Interface Name": "اسم الواجهة", + "Routing Mark": "علامة التوجيه", + "Include All": "تضمين جميع الوكلاء والمزودين", + "Include All Providers": "تضمين جميع المزودين", + "Include All Proxies": "تضمين جميع الوكلاء", + "Exclude Filter": "استبعاد المرشح", + "Exclude Type": "استبعاد النوع", + "Disable UDP": "تعطيل UDP", + "Hidden": "مخفي", + "Group Name Required": "اسم المجموعة مطلوب", + "Group Name Already Exists": "اسم المجموعة موجود بالفعل", + "Extend Config": "توسيع الإعدادات", + "Extend Script": "توسيع السكربت", + "Global Merge": "دمج عالمي للإعدادات", + "Global Script": "سكريبت عالمي", + "Type": "النوع", + "Name": "الاسم", + "Descriptions": "الوصف", + "Subscription URL": "رابط الاشتراك", + "Update Interval": "فاصل التحديث", + "Choose File": "اختر ملف", + "Use System Proxy": "استخدام وكيل النظام", + "Use Clash Proxy": "استخدام وكيل Clash", + "Accept Invalid Certs (Danger)": "قبول الشهادات غير الصالحة (خطر)", + "Refresh": "تحديث", + "Home": "الصفحة الرئيسية", + "Select": "اختيار", + "Edit Info": "تعديل المعلومات", + "Edit File": "تعديل الملف", + "Open File": "فتح الملف", + "Update": "تحديث", + "Update(Proxy)": "تحديث (الوكيل)", + "Confirm deletion": "تأكيد الحذف", + "This operation is not reversible": "لا يمكن التراجع عن هذه العملية", + "Script Console": "وحدة التحكم للسكريبت", + "To Top": "إلى الأعلى", + "To End": "إلى النهاية", + "Connections": "الاتصالات", + "Table View": "عرض الجدول", + "List View": "عرض القائمة", + "Close All": "إغلاق الكل", + "Default": "افتراضي", + "Download Speed": "سرعة التنزيل", + "Upload Speed": "سرعة الرفع", + "Host": "المضيف", + "Downloaded": "تم التنزيل", + "Uploaded": "تم الرفع", + "DL Speed": "سرعة التنزيل", + "UL Speed": "سرعة الرفع", + "Chains": "السلاسل", + "Rule": "قاعدة", + "Process": "عملية", + "Time": "الوقت", + "Source": "المصدر", + "Destination IP": "عنوان IP الوجهة", + "Close Connection": "إغلاق الاتصال", + "Rules": "القواعد", + "Rule Provider": "مزود القواعد", + "Logs": "السجلات", + "Pause": "إيقاف مؤقت", + "Clear": "مسح", + "Test": "اختبار", + "Test All": "اختبار الكل", + "Create Test": "إنشاء اختبار", + "Edit Test": "تعديل الاختبار", + "Icon": "أيقونة", + "Test URL": "رابط الاختبار", + "Settings": "الإعدادات", + "System Setting": "إعدادات النظام", + "Tun Mode": "وضع TUN", + "Reset to Default": "إعادة تعيين إلى الافتراضي", + "Tun Mode Info": "وضع TUN (بطاقة شبكة افتراضية): يلتقط كل حركة المرور في النظام. عند تمكينه، لا حاجة لتفعيل وكيل النظام.", + "Stack": "مكدس TUN", + "System and Mixed Can Only be Used in Service Mode": "لا يمكن استخدام النظام والمختلط إلا في وضع الخدمة", + "Device": "اسم الجهاز", + "Auto Route": "توجيه تلقائي", + "Strict Route": "توجيه صارم", + "Auto Detect Interface": "الكشف التلقائي عن الواجهة", + "DNS Hijack": "اختطاف DNS", + "MTU": "وحدة الإرسال القصوى", + "Service Mode": "وضع الخدمة", + "Service Mode Info": "يرجى تثبيت وضع الخدمة قبل تمكين وضع TUN. يمكن للعمليات الأساسية التي يبدأها وضع الخدمة الحصول على إذن لتثبيت بطاقة الشبكة الافتراضية (TUN).", + "Current State": "الحالة الحالية", + "pending": "معلق", + "installed": "مثبت", + "uninstall": "إلغاء التثبيت", + "active": "نشط", + "unknown": "غير معروف", + "Information: Please make sure that the Clash Verge Service is installed and enabled": "معلومة: يرجى التأكد من تثبيت وتشغيل خدمة Clash Verge", + "Install": "تثبيت", + "Uninstall": "إلغاء التثبيت", + "Disable Service Mode": "تعطيل وضع الخدمة", + "System Proxy": "وكيل النظام", + "System Proxy Info": "عند التمكين، سيتم تعديل إعدادات الوكيل في نظام التشغيل. إذا فشل التمكين، فقم بتعديل إعدادات الوكيل في النظام يدويًا.", + "System Proxy Setting": "إعداد وكيل النظام", + "Current System Proxy": "الوكيل الحالي للنظام", + "Enable status": "حالة التمكين:", + "Enabled": "ممكّن", + "Disabled": "معطّل", + "Server Addr": "عنوان الخادم:", + "Not available": "غير متوفر", + "Proxy Guard": "حماية الوكيل", + "Proxy Guard Info": "عند التمكين، يمنع برامج أخرى من تعديل إعدادات وكيل النظام", + "Guard Duration": "مدة الحماية", + "Always use Default Bypass": "استخدام التخطي الافتراضي دائمًا", + "Proxy Bypass": "إعدادات تخطي الوكيل:", + "Bypass": "تخطي:", + "Use PAC Mode": "استخدام وضع PAC", + "PAC Script Content": "محتوى سكريبت PAC", + "PAC URL": "رابط PAC:", + "Auto Launch": "إطلاق تلقائي", + "Silent Start": "بدء صامت", + "Silent Start Info": "بدء البرنامج في الخلفية دون عرض الواجهة", + "TG Channel": "قناة تيليجرام", + "Manual": "دليل", + "Github Repo": "مستودع Github", + "Clash Setting": "إعدادات Clash", + "Allow Lan": "السماح بالشبكة المحلية", + "Network Interface": "واجهة الشبكة", + "Ip Address": "عنوان IP", + "Mac Address": "عنوان MAC", + "IPv6": "IPv6", + "Unified Delay": "تأخير موحد", + "Unified Delay Info": "عند تفعيل التأخير الموحد، سيتم إجراء اختبارين للتأخير لتقليل الفروقات الناتجة عن مفاوضات الاتصال", + "Log Level": "مستوى السجلات", + "Port Config": "تكوين المنافذ", + "Random Port": "منفذ عشوائي", + "Mixed Port": "منفذ مختلط", + "Socks Port": "منفذ SOCKS", + "Http Port": "منفذ HTTP(S)", + "Redir Port": "منفذ إعادة التوجيه", + "Tproxy Port": "منفذ Tproxy", + "External": "خارجي", + "External Controller": "وحدة التحكم الخارجية", + "Core Secret": "المفتاح السري للنواة", + "Recommended": "موصى به", + "Open URL": "فتح الرابط", + "Replace host, port, secret with %host, %port, %secret": "استبدل المضيف والمنفذ والمفتاح بـ %host و%port و%secret", + "Support %host, %port, %secret": "يدعم %host و%port و%secret", + "Clash Core": "نواة Clash", + "Upgrade": "ترقية", + "Restart": "إعادة التشغيل", + "Release Version": "إصدار مستقر", + "Alpha Version": "إصدار ألفا", + "Please Enable Service Mode": "يرجى تثبيت وتفعيل وضع الخدمة أولاً", + "Please enter your root password": "يرجى إدخال كلمة مرور الرووت", + "Grant": "منح الصلاحيات", + "Open UWP tool": "فتح أداة UWP", + "Open UWP tool Info": "منذ نظام ويندوز 8، يتم تقييد تطبيقات UWP من الوصول المباشر إلى المضيف المحلي. هذه الأداة تتيح تجاوز هذا التقييد", + "Update GeoData": "تحديث البيانات الجغرافية", + "Verge Setting": "إعدادات Verge", + "Language": "اللغة", + "Theme Mode": "وضع السمة", + "theme.light": "سمة فاتحة", + "theme.dark": "سمة داكنة", + "theme.system": "سمة النظام", + "Tray Click Event": "حدث النقر على الأيقونة في شريط المهام", + "Show Main Window": "إظهار النافذة الرئيسية", + "Copy Env Type": "نسخ نوع البيئة", + "Copy Success": "تم النسخ بنجاح", + "Start Page": "صفحة البدء", + "Startup Script": "سكريبت بدء التشغيل", + "Browse": "استعراض", + "Theme Setting": "إعدادات السمة", + "Primary Color": "اللون الأساسي", + "Secondary Color": "اللون الثانوي", + "Primary Text": "النص الأساسي", + "Secondary Text": "النص الثانوي", + "Info Color": "لون المعلومات", + "Warning Color": "لون التحذير", + "Error Color": "لون الخطأ", + "Success Color": "لون النجاح", + "Font Family": "عائلة الخط", + "CSS Injection": "حقن CSS", + "Layout Setting": "إعدادات التخطيط", + "Traffic Graph": "مخطط حركة المرور", + "Memory Usage": "استهلاك الذاكرة", + "Memory Cleanup": "انقر لتنظيف الذاكرة", + "Proxy Group Icon": "أيقونة مجموعة الوكلاء", + "Nav Icon": "أيقونة التنقل", + "Monochrome": "أحادي اللون", + "Colorful": "ملون", + "Tray Icon": "أيقونة شريط المهام", + "Common Tray Icon": "أيقونة شريط مهام عامة", + "System Proxy Tray Icon": "أيقونة شريط المهام لوكيل النظام", + "Tun Tray Icon": "أيقونة شريط المهام لـ TUN", + "Miscellaneous": "متفرقات", + "App Log Level": "مستوى سجلات التطبيق", + "Auto Close Connections": "إغلاق الاتصالات تلقائيًا", + "Auto Close Connections Info": "إنهاء الاتصالات القائمة عند تغيير اختيار مجموعة الوكيل أو وضع الوكيل", + "Auto Check Update": "فحص التحديث تلقائيًا", + "Enable Builtin Enhanced": "تفعيل التحسين المدمج", + "Enable Builtin Enhanced Info": "معالجة توافق ملف التكوين", + "Proxy Layout Columns": "أعمدة عرض الوكيل", + "Auto Columns": "أعمدة تلقائية", + "Auto Log Clean": "تنظيف السجلات تلقائيًا", + "Never Clean": "عدم التنظيف أبدًا", + "Retain _n Days": "الاحتفاظ لمدة {{n}} يومًا", + "Default Latency Test": "اختبار التأخير الافتراضي", + "Default Latency Test Info": "يُستخدم فقط لاختبار طلب HTTP العميل. لن يؤثر على ملف التكوين", + "Default Latency Timeout": "مهلة التأخير الافتراضية", + "Hotkey Setting": "إعدادات الاختصارات", + "open_or_close_dashboard": "فتح/إغلاق لوحة التحكم", + "clash_mode_rule": "وضع القواعد", + "clash_mode_global": "الوضع العالمي", + "clash_mode_direct": "الوضع المباشر", + "toggle_system_proxy": "تفعيل/تعطيل وكيل النظام", + "toggle_tun_mode": "تفعيل/تعطيل وضع TUN", + "Backup Setting": "إعداد النسخ الاحتياطي", + "Runtime Config": "تكوين وقت التشغيل", + "Open Conf Dir": "فتح مجلد التكوين", + "Open Conf Dir Info": "إذا عمل البرنامج بشكل غير طبيعي، قم بالنسخ الاحتياطي ثم حذف جميع الملفات في هذا المجلد ثم أعد تشغيل البرنامج", + "Open Core Dir": "فتح مجلد النواة", + "Open Logs Dir": "فتح مجلد السجلات", + "Check for Updates": "التحقق من وجود تحديثات", + "Go to Release Page": "الانتقال إلى صفحة الإصدارات", + "Portable Updater Error": "الإصدار المحمول لا يدعم التحديث داخل التطبيق. يرجى التنزيل والاستبدال يدويًا", + "Break Change Update Error": "هذا الإصدار هو تحديث رئيسي ولا يدعم التحديث داخل التطبيق. يرجى إلغاء التثبيت وتنزيل الإصدار الجديد وتثبيته يدويًا", + "Open Dev Tools": "أدوات المطور", + "Exit": "خروج", + "Verge Version": "إصدار Verge", + "ReadOnly": "للقراءة فقط", + "ReadOnlyMessage": "لا يمكن التعديل في محرر القراءة فقط", + "Filter": "تصفية", + "Filter conditions": "شروط التصفية", + "Match Case": "مطابقة الحالة", + "Match Whole Word": "مطابقة الكلمة بأكملها", + "Use Regular Expression": "استخدام التعبيرات العادية", + "Profile Imported Successfully": "تم استيراد الملف الشخصي بنجاح", + "Profile Switched": "تم التبديل إلى الملف الشخصي", + "Profile Reactivated": "تم إعادة تنشيط الملف الشخصي", + "Only YAML Files Supported": "لا يتم دعم سوى ملفات YAML", + "Settings Applied": "تم تطبيق الإعدادات", + "Service Installed Successfully": "تم تثبيت الخدمة بنجاح", + "Service Uninstalled Successfully": "تم إلغاء تثبيت الخدمة بنجاح", + "Proxy Daemon Duration Cannot be Less than 1 Second": "لا يمكن أن تقل مدة خادم الوكيل عن ثانية واحدة", + "Invalid Bypass Format": "تنسيق التخطي غير صالح", + "Clash Port Modified": "تم تعديل منفذ Clash", + "Port Conflict": "تعارض في المنفذ", + "Restart Application to Apply Modifications": "أعد تشغيل التطبيق لتطبيق التعديلات", + "External Controller Address Modified": "تم تعديل عنوان وحدة التحكم الخارجية", + "Permissions Granted Successfully for _clash Core": "تم منح الأذونات بنجاح لـ {{core}} Core", + "Core Version Updated": "تم تحديث إصدار النواة", + "Clash Core Restarted": "تم إعادة تشغيل نواة Clash", + "Switched to _clash Core": "تم التبديل إلى {{core}} Core", + "GeoData Updated": "تم تحديث البيانات الجغرافية", + "Currently on the Latest Version": "أنت على أحدث إصدار حاليًا", + "Import Subscription Successful": "تم استيراد الاشتراك بنجاح", + "WebDAV Server URL": "عنوان خادم WebDAV", + "Username": "اسم المستخدم", + "Password": "كلمة المرور", + "Backup": "نسخ احتياطي", + "Filename": "اسم الملف", + "Actions": "الإجراءات", + "Restore": "استعادة", + "No Backups": "لا توجد نسخ احتياطية متاحة", + "WebDAV URL Required": "لا يمكن ترك رابط WebDAV فارغًا", + "Invalid WebDAV URL": "تنسيق رابط WebDAV غير صالح", + "Username Required": "لا يمكن ترك اسم المستخدم فارغًا", + "Password Required": "لا يمكن ترك كلمة المرور فارغة", + "Failed to Fetch Backups": "فشل في جلب ملفات النسخ الاحتياطي", + "WebDAV Config Saved": "تم حفظ إعدادات WebDAV بنجاح", + "WebDAV Config Save Failed": "فشل حفظ إعدادات WebDAV: {{error}}", + "Backup Created": "تم إنشاء النسخة الاحتياطية بنجاح", + "Backup Failed": "فشل في النسخ الاحتياطي: {{error}}", + "Delete Backup": "حذف النسخة الاحتياطية", + "Restore Backup": "استعادة النسخة الاحتياطية", + "Backup Time": "وقت النسخ الاحتياطي", + "Confirm to delete this backup file?": "هل تريد بالتأكيد حذف ملف النسخة الاحتياطية هذا؟", + "Confirm to restore this backup file?": "هل تريد بالتأكيد استعادة ملف النسخة الاحتياطية هذا؟", + "Restore Success, App will restart in 1s": "تمت الاستعادة بنجاح، سيعاد تشغيل التطبيق خلال ثانية واحدة", + "Failed to fetch backup files": "فشل في جلب ملفات النسخ الاحتياطي", + "Profile": "الملف الشخصي", + "Help": "مساعدة", + "About": "حول", + "Theme": "السمة", + "TUN Mode": "وضع TUN", + "Main Window": "النافذة الرئيسية", + "Group Icon": "أيقونة المجموعة", + "Menu Icon": "أيقونة القائمة", + "System Proxy Bypass": "تخطي وكيل النظام", + "PAC File": "ملف PAC", + "Web UI": "واجهة الويب", + "Hotkeys": "اختصارات لوحة المفاتيح", + "Auto Close Connection": "إغلاق الاتصال تلقائيًا", + "Enable Built-in Enhanced": "تفعيل التحسين المدمج", + "Proxy Layout Column": "عمود عرض الوكيل", + "Test List": "قائمة الاختبارات", + "Enable Random Port": "تفعيل المنفذ العشوائي", + "Verge Mixed Port": "منفذ Verge المختلط", + "Verge Socks Port": "منفذ Verge SOCKS", + "Verge Redir Port": "منفذ إعادة التوجيه لـ Verge", + "Verge Tproxy Port": "منفذ Tproxy لـ Verge", + "Verge Port": "منفذ Verge", + "Verge HTTP Enabled": "تمكين Verge HTTP", + "WebDAV URL": "رابط WebDAV", + "WebDAV Username": "اسم المستخدم لـ WebDAV", + "WebDAV Password": "كلمة مرور WebDAV", + "Copy Env": "نسخ البيئة", + "Conf Dir": "مجلد الإعدادات", + "Core Dir": "مجلد النواة", + "Logs Dir": "مجلد السجلات", + "Open Dir": "فتح المجلد", + "Restart Clash Core": "إعادة تشغيل نواة Clash", + "Restart App": "إعادة تشغيل التطبيق", + "More": "المزيد", + "Dashboard": "لوحة التحكم", + "Rule Mode": "وضع القواعد", + "Global Mode": "الوضع العالمي", + "Direct Mode": "الوضع المباشر" +} diff --git a/src/locales/en.json b/src/locales/en.json index c00d6e7e..07768096 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -395,5 +395,43 @@ "Confirm to delete this backup file?": "Confirm to delete this backup file?", "Confirm to restore this backup file?": "Confirm to restore this backup file?", "Restore Success, App will restart in 1s": "Restore Success, App will restart in 1s", - "Failed to fetch backup files": "Failed to fetch backup files" + "Failed to fetch backup files": "Failed to fetch backup files", + "Profile": "Profile", + "Help": "Help", + "About": "About", + "Theme": "Theme", + "TUN Mode": "TUN Mode", + "Main Window": "Main Window", + "Group Icon": "Group Icon", + "Menu Icon": "Menu Icon", + "System Proxy Bypass": "System Proxy Bypass", + "PAC File": "PAC File", + "Web UI": "Web UI", + "Hotkeys": "Hotkeys", + "Auto Close Connection": "Auto Close Connection", + "Enable Built-in Enhanced": "Enable Built-in Enhanced", + "Proxy Layout Column": "Proxy Layout Column", + "Test List": "Test List", + "Enable Random Port": "Enable Random Port", + "Verge Mixed Port": "Verge Mixed Port", + "Verge Socks Port": "Verge Socks Port", + "Verge Redir Port": "Verge Redir Port", + "Verge Tproxy Port": "Verge Tproxy Port", + "Verge Port": "Verge Port", + "Verge HTTP Enabled": "Verge HTTP Enabled", + "WebDAV URL": "WebDAV URL", + "WebDAV Username": "WebDAV Username", + "WebDAV Password": "WebDAV Password", + "Copy Env": "Copy Env", + "Conf Dir": "Conf Dir", + "Core Dir": "Core Dir", + "Logs Dir": "Logs Dir", + "Open Dir": "Open Dir", + "Restart Clash Core": "Restart Clash Core", + "Restart App": "Restart App", + "More": "More", + "Dashboard": "Dashboard", + "Rule Mode": "Rule Mode", + "Global Mode": "Global Mode", + "Direct Mode": "Direct Mode" } diff --git a/src/locales/fa.json b/src/locales/fa.json index 106407b1..8d077564 100644 --- a/src/locales/fa.json +++ b/src/locales/fa.json @@ -113,7 +113,7 @@ "select": "انتخاب پروکسی به صورت دستی", "url-test": "انتخاب پروکسی بر اساس تأخیر آزمایش URL", "fallback": "تعویض به پروکسی دیگر در صورت بروز خطا", - "load-balance": "توزیع ��روکسی بر اساس توازن بار", + "load-balance": "توزیع پراکسی بر اساس توازن بار", "relay": "عبور از زنجیره پروکسی تعریف شده", "Group Name": "نام گروه", "Use Proxies": "استفاده از پروکسی‌ها", @@ -397,5 +397,37 @@ "Confirm to delete this backup file?": "آیا از حذف این فایل پشتیبان اطمینان دارید؟", "Confirm to restore this backup file?": "آیا از بازیابی این فایل پشتیبان اطمینان دارید؟", "Restore Success, App will restart in 1s": "بازیابی با موفقیت انجام شد، برنامه در 1 ثانیه راه‌اندازی مجدد می‌شود", - "Failed to fetch backup files": "دریافت فایل‌های پشتیبان ناموفق بود" + "Failed to fetch backup files": "دریافت فایل‌های پشتیبان ناموفق بود", + "Profile": "پروفایل", + "Help": "راهنما", + "About": "درباره", + "Theme": "پوسته", + "Main Window": "پنجره اصلی", + "Group Icon": "آیکون گروه", + "Menu Icon": "آیکون منو", + "PAC File": "فایل PAC", + "Web UI": "رابط وب", + "Hotkeys": "کلیدهای میانبر", + "Verge Mixed Port": "پورت ترکیبی Verge", + "Verge Socks Port": "پورت Socks Verge", + "Verge Redir Port": "پورت تغییر مسیر Verge", + "Verge Tproxy Port": "پورت Tproxy Verge", + "Verge Port": "پورت Verge", + "Verge HTTP Enabled": "HTTP Verge فعال", + "WebDAV URL": "آدرس WebDAV", + "WebDAV Username": "نام کاربری WebDAV", + "WebDAV Password": "رمز عبور WebDAV", + "Dashboard": "داشبورد", + "Restart App": "راه‌اندازی مجدد برنامه", + "Restart Clash Core": "راه‌اندازی مجدد هسته Clash", + "TUN Mode": "حالت TUN", + "Copy Env": "کپی متغیرهای محیطی", + "Conf Dir": "پوشه پیکربندی", + "Core Dir": "پوشه هسته", + "Logs Dir": "پوشه لاگ‌ها", + "Open Dir": "باز کردن پوشه", + "More": "بیشتر", + "Rule Mode": "حالت قوانین", + "Global Mode": "حالت جهانی", + "Direct Mode": "حالت مستقیم" } diff --git a/src/locales/id.json b/src/locales/id.json new file mode 100644 index 00000000..67cf34e8 --- /dev/null +++ b/src/locales/id.json @@ -0,0 +1,433 @@ +{ + "millis": "milidetik", + "seconds": "detik", + "mins": "menit", + "Back": "Kembali", + "Close": "Tutup", + "Cancel": "Batal", + "Confirm": "Konfirmasi", + "Maximize": "Maksimalkan", + "Minimize": "Minimalkan", + "Format document": "Format dokumen", + "Empty": "Kosong", + "New": "Baru", + "Edit": "Ubah", + "Save": "Simpan", + "Delete": "Hapus", + "Enable": "Aktifkan", + "Disable": "Nonaktifkan", + "Label-Proxies": "Proksi", + "Label-Profiles": "Profil", + "Label-Connections": "Koneksi", + "Label-Rules": "Aturan", + "Label-Logs": "Log", + "Label-Test": "Tes", + "Label-Settings": "Pengaturan", + "Dashboard": "Dasbor", + "Profile": "Profil", + "Help": "Bantuan", + "About": "Tentang", + "Theme": "Tema", + "Main Window": "Jendela Utama", + "Group Icon": "Ikon Grup", + "Menu Icon": "Ikon Menu", + "PAC File": "Berkas PAC", + "Web UI": "Antarmuka Web", + "Hotkeys": "Pintasan", + "Verge Mixed Port": "Port Campuran Verge", + "Verge Socks Port": "Port Socks Verge", + "Verge Redir Port": "Port Pengalihan Verge", + "Verge Tproxy Port": "Port Tproxy Verge", + "Verge Port": "Port Verge", + "Verge HTTP Enabled": "HTTP Verge Diaktifkan", + "WebDAV URL": "URL WebDAV", + "WebDAV Username": "Nama Pengguna WebDAV", + "WebDAV Password": "Kata Sandi WebDAV", + "Restart App": "Mulai Ulang Aplikasi", + "Restart Clash Core": "Mulai Ulang Core Clash", + "TUN Mode": "Mode TUN", + "Copy Env": "Salin Env", + "Conf Dir": "Direktori Konfigurasi", + "Core Dir": "Direktori Core", + "Logs Dir": "Direktori Log", + "Open Dir": "Buka Direktori", + "More": "Lainnya", + "Rule Mode": "Mode Aturan", + "Global Mode": "Mode Global", + "Direct Mode": "Mode Langsung", + "Proxies": "Proksi", + "Proxy Groups": "Grup Proksi", + "Proxy Provider": "Penyedia Proksi", + "Update All": "Perbarui Semua", + "Update At": "Diperbarui Pada", + "rule": "aturan", + "global": "global", + "direct": "langsung", + "script": "skrip", + "Location": "Lokasi", + "Delay check": "Periksa Keterlambatan", + "Sort by default": "Urutkan secara default", + "Sort by delay": "Urutkan berdasarkan keterlambatan", + "Sort by name": "Urutkan berdasarkan nama", + "Delay check URL": "URL Periksa Keterlambatan", + "Delay check to cancel fixed": "Periksa keterlambatan untuk membatalkan tetap", + "Proxy basic": "Dasar Proksi", + "Proxy detail": "Detail Proksi", + "Profiles": "Profil", + "Update All Profiles": "Perbarui Semua Profil", + "View Runtime Config": "Lihat Konfigurasi Runtime", + "Reactivate Profiles": "Reaktivasi Profil", + "Paste": "Tempel", + "Profile URL": "URL Profil", + "Import": "Impor", + "From": "Dari", + "Update Time": "Waktu Pembaruan", + "Used / Total": "Digunakan / Total", + "Expire Time": "Waktu Kedaluwarsa", + "Create Profile": "Buat Profil", + "Edit Profile": "Ubah Profil", + "Edit Proxies": "Ubah Proksi", + "Use newlines for multiple uri": "Gunakan baris baru untuk beberapa URI (mendukung pengkodean Base64)", + "Edit Rules": "Ubah Aturan", + "Rule Type": "Jenis Aturan", + "Rule Content": "Konten Aturan", + "Proxy Policy": "Kebijakan Proksi", + "No Resolve": "Tidak Menyelesaikan", + "Prepend Rule": "Tambahkan Aturan di Awal", + "Append Rule": "Tambahkan Aturan di Akhir", + "Prepend Group": "Tambahkan Grup di Awal", + "Append Group": "Tambahkan Grup di Akhir", + "Prepend Proxy": "Tambahkan Proksi di Awal", + "Append Proxy": "Tambahkan Proksi di Akhir", + "Rule Condition Required": "Kondisi Aturan Diperlukan", + "Invalid Rule": "Aturan Tidak Valid", + "Advanced": "Lanjutan", + "Visualization": "Visualisasi", + "DOMAIN": "Cocok dengan nama domain lengkap", + "DOMAIN-SUFFIX": "Cocok dengan sufiks domain", + "DOMAIN-KEYWORD": "Cocok dengan kata kunci domain", + "DOMAIN-REGEX": "Cocok dengan domain menggunakan ekspresi reguler", + "GEOSITE": "Cocok dengan domain dalam Geosite", + "GEOIP": "Cocok dengan kode negara alamat IP", + "SRC-GEOIP": "Cocok dengan kode negara alamat IP sumber", + "IP-ASN": "Cocok dengan ASN alamat IP", + "SRC-IP-ASN": "Cocok dengan ASN alamat IP sumber", + "IP-CIDR": "Cocok dengan rentang alamat IP", + "IP-CIDR6": "Cocok dengan rentang alamat IPv6", + "SRC-IP-CIDR": "Cocok dengan rentang alamat IP sumber", + "IP-SUFFIX": "Cocok dengan rentang sufiks alamat IP", + "SRC-IP-SUFFIX": "Cocok dengan rentang sufiks alamat IP sumber", + "SRC-PORT": "Cocok dengan rentang port sumber", + "DST-PORT": "Cocok dengan rentang port tujuan", + "IN-PORT": "Cocok dengan port masuk", + "DSCP": "Penandaan DSCP (hanya untuk tproxy UDP masuk)", + "PROCESS-NAME": "Cocok dengan nama proses (nama paket Android)", + "PROCESS-PATH": "Cocok dengan jalur proses lengkap", + "PROCESS-NAME-REGEX": "Cocok dengan nama proses lengkap menggunakan ekspresi reguler (nama paket Android)", + "PROCESS-PATH-REGEX": "Cocok dengan jalur proses lengkap menggunakan ekspresi reguler", + "NETWORK": "Cocok dengan protokol transportasi (tcp/udp)", + "UID": "Cocok dengan ID PENGGUNA Linux", + "IN-TYPE": "Cocok dengan jenis masuk", + "IN-USER": "Cocok dengan nama pengguna masuk", + "IN-NAME": "Cocok dengan nama masuk", + "SUB-RULE": "Sub-aturan", + "RULE-SET": "Cocok dengan set aturan", + "AND": "Logika DAN", + "OR": "Logika ATAU", + "NOT": "Logika TIDAK", + "MATCH": "Cocok dengan semua permintaan", + "DIRECT": "Data langsung keluar", + "REJECT": "Mencegat permintaan", + "REJECT-DROP": "Membuang permintaan", + "PASS": "Lewati aturan ini saat cocok", + "Edit Groups": "Ubah Grup Proksi", + "Group Type": "Jenis Grup", + "select": "Pilih proksi secara manual", + "url-test": "Pilih proksi berdasarkan keterlambatan tes URL", + "fallback": "Beralih ke proksi lain saat terjadi kesalahan", + "load-balance": "Distribusikan proksi berdasarkan penyeimbangan beban", + "relay": "Lewatkan melalui rantai proksi yang ditentukan", + "Group Name": "Nama Grup", + "Use Proxies": "Gunakan Proksi", + "Use Provider": "Gunakan Penyedia", + "Health Check Url": "URL Pemeriksaan Kesehatan", + "Expected Status": "Status yang Diharapkan", + "Interval": "Interval", + "Lazy": "Malas", + "Timeout": "Waktu Habis", + "Max Failed Times": "Jumlah Gagal Maksimal", + "Interface Name": "Nama Antarmuka", + "Routing Mark": "Tanda Routing", + "Include All": "Sertakan Semua Proksi dan Penyedia", + "Include All Providers": "Sertakan Semua Penyedia", + "Include All Proxies": "Sertakan Semua Proksi", + "Exclude Filter": "Kecualikan Filter", + "Exclude Type": "Kecualikan Jenis", + "Disable UDP": "Nonaktifkan UDP", + "Hidden": "Tersembunyi", + "Group Name Required": "Nama Grup Diperlukan", + "Group Name Already Exists": "Nama Grup Sudah Ada", + "Extend Config": "Perluas Konfigurasi", + "Extend Script": "Perluas Skrip", + "Global Merge": "Perluas Konfigurasi Global", + "Global Script": "Perluas Skrip Global", + "Type": "Jenis", + "Name": "Nama", + "Descriptions": "Deskripsi", + "Subscription URL": "URL Langganan", + "Update Interval": "Interval Pembaruan", + "Choose File": "Pilih Berkas", + "Use System Proxy": "Gunakan Proksi Sistem", + "Use Clash Proxy": "Gunakan Proksi Clash", + "Accept Invalid Certs (Danger)": "Terima Sertifikat Tidak Valid (Bahaya)", + "Refresh": "Segarkan", + "Home": "Beranda", + "Select": "Pilih", + "Edit Info": "Ubah Info", + "Edit File": "Ubah Berkas", + "Open File": "Buka Berkas", + "Update": "Perbarui", + "Update(Proxy)": "Perbarui (Proksi)", + "Confirm deletion": "Konfirmasi penghapusan", + "This operation is not reversible": "Operasi ini tidak dapat dibatalkan", + "Script Console": "Konsol Skrip", + "To Top": "Ke Atas", + "To End": "Ke Bawah", + "Connections": "Koneksi", + "Table View": "Tampilan Tabel", + "List View": "Tampilan Daftar", + "Close All": "Tutup Semua", + "Default": "Default", + "Download Speed": "Kecepatan Unduh", + "Upload Speed": "Kecepatan Unggah", + "Host": "Host", + "Downloaded": "Diunduh", + "Uploaded": "Diunggah", + "DL Speed": "Kecepatan Unduh", + "UL Speed": "Kecepatan Unggah", + "Chains": "Rantai", + "Rule": "Aturan", + "Process": "Proses", + "Time": "Waktu", + "Source": "Sumber", + "Destination IP": "IP Tujuan", + "Close Connection": "Tutup Koneksi", + "Rules": "Aturan", + "Rule Provider": "Penyedia Aturan", + "Logs": "Log", + "Pause": "Jeda", + "Clear": "Bersihkan", + "Test": "Tes", + "Test All": "Tes Semua", + "Create Test": "Buat Tes", + "Edit Test": "Ubah Tes", + "Icon": "Ikon", + "Test URL": "URL Tes", + "Settings": "Pengaturan", + "System Setting": "Pengaturan Sistem", + "Tun Mode": "Mode Tun (NIC Virtual)", + "Reset to Default": "Setel Ulang ke Default", + "Tun Mode Info": "Mode Tun (NIC Virtual): Menangkap semua lalu lintas sistem, saat diaktifkan, tidak perlu mengaktifkan proksi sistem.", + "Stack": "Tumpukan Tun", + "System and Mixed Can Only be Used in Service Mode": "Sistem dan Campuran Hanya Dapat Digunakan dalam Mode Layanan", + "Device": "Nama Perangkat", + "Auto Route": "Rute Otomatis", + "Strict Route": "Rute Ketat", + "Auto Detect Interface": "Deteksi Antarmuka Otomatis", + "DNS Hijack": "Pembajakan DNS", + "MTU": "Unit Transmisi Maksimum", + "Service Mode": "Mode Layanan", + "Service Mode Info": "Harap instal mode layanan sebelum mengaktifkan mode TUN. Proses kernel yang dimulai oleh layanan dapat memperoleh izin untuk menginstal kartu jaringan virtual (mode TUN)", + "Current State": "Status Saat Ini", + "pending": "tertunda", + "installed": "terinstal", + "uninstall": "dicopot", + "active": "aktif", + "unknown": "tidak diketahui", + "Information: Please make sure that the Clash Verge Service is installed and enabled": "Informasi: Harap pastikan bahwa Layanan Clash Verge terinstal dan diaktifkan", + "Install": "Instal", + "Uninstall": "Copot", + "Disable Service Mode": "Nonaktifkan Mode Layanan", + "System Proxy": "Proksi Sistem", + "System Proxy Info": "Aktifkan untuk mengubah pengaturan proksi sistem operasi. Jika pengaktifan gagal, ubah pengaturan proksi sistem operasi secara manual", + "System Proxy Setting": "Pengaturan Proksi Sistem", + "Current System Proxy": "Proksi Sistem Saat Ini", + "Enable status": "Status Pengaktifan:", + "Enabled": "Diaktifkan", + "Disabled": "Dinonaktifkan", + "Server Addr": "Alamat Server: ", + "Not available": "Tidak tersedia", + "Proxy Guard": "Penjaga Proksi", + "Proxy Guard Info": "Aktifkan untuk mencegah perangkat lunak lain mengubah pengaturan proksi sistem operasi", + "Guard Duration": "Durasi Penjagaan", + "Always use Default Bypass": "Selalu gunakan Bypass Default", + "Proxy Bypass": "Pengaturan Bypass Proksi: ", + "Bypass": "Bypass: ", + "Use PAC Mode": "Gunakan Mode PAC", + "PAC Script Content": "Konten Skrip PAC", + "PAC URL": "URL PAC: ", + "Auto Launch": "Peluncuran Otomatis", + "Silent Start": "Mulai Senyap", + "Silent Start Info": "Mulai program dalam mode latar belakang tanpa menampilkan panel", + "TG Channel": "Saluran Telegram", + "Manual": "Manual", + "Github Repo": "Repositori Github", + "Clash Setting": "Pengaturan Clash", + "Allow Lan": "Izinkan LAN", + "Network Interface": "Antarmuka Jaringan", + "Ip Address": "Alamat IP", + "Mac Address": "Alamat MAC", + "IPv6": "IPv6", + "Unified Delay": "Keterlambatan Terpadu", + "Unified Delay Info": "Saat keterlambatan terpadu diaktifkan, dua tes keterlambatan akan dilakukan untuk menghilangkan perbedaan keterlambatan antara berbagai jenis node yang disebabkan oleh jabat tangan koneksi, dll.", + "Log Level": "Tingkat Log", + "Log Level Info": "Ini hanya berlaku untuk file log kernel di folder layanan di direktori log.", + "Port Config": "Konfigurasi Port", + "Random Port": "Port Acak", + "Mixed Port": "Port Campuran", + "Socks Port": "Port Socks", + "Http Port": "Port Http(s)", + "Redir Port": "Port Redir", + "Tproxy Port": "Port Tproxy", + "External": "Eksternal", + "External Controller": "Alamat Pengendali Eksternal", + "Core Secret": "Rahasia Inti", + "Recommended": "Direkomendasikan", + "Open URL": "Buka URL", + "Replace host, port, secret with %host, %port, %secret": "Ganti host, port, rahasia dengan %host, %port, %secret", + "Support %host, %port, %secret": "Dukung %host, %port, %secret", + "Clash Core": "Inti Clash", + "Upgrade": "Tingkatkan", + "Restart": "Mulai Ulang", + "Release Version": "Versi Rilis", + "Alpha Version": "Versi Alpha", + "Please Enable Service Mode": "Harap Instal dan Aktifkan Mode Layanan Terlebih Dahulu", + "Please enter your root password": "Harap masukkan kata sandi root Anda", + "Grant": "Izinkan", + "Open UWP tool": "Buka alat UWP", + "Open UWP tool Info": "Sejak Windows 8, aplikasi UWP (seperti Microsoft Store) dibatasi dari mengakses layanan jaringan host lokal secara langsung, dan alat ini dapat digunakan untuk melewati pembatasan ini", + "Update GeoData": "Perbarui GeoData", + "Verge Setting": "Pengaturan Verge", + "Language": "Bahasa", + "Theme Mode": "Mode Tema", + "theme.light": "Terang", + "theme.dark": "Gelap", + "theme.system": "Sistem", + "Tray Click Event": "Acara Klik Tray", + "Show Main Window": "Tampilkan Jendela Utama", + "Copy Env Type": "Salin Jenis Env", + "Copy Success": "Salin Berhasil", + "Start Page": "Halaman Mulai", + "Startup Script": "Skrip Startup", + "Browse": "Jelajahi", + "Theme Setting": "Pengaturan Tema", + "Primary Color": "Warna Utama", + "Secondary Color": "Warna Sekunder", + "Primary Text": "Teks Utama", + "Secondary Text": "Teks Sekunder", + "Info Color": "Warna Info", + "Warning Color": "Warna Peringatan", + "Error Color": "Warna Kesalahan", + "Success Color": "Warna Keberhasilan", + "Font Family": "Keluarga Font", + "CSS Injection": "Injeksi CSS", + "Layout Setting": "Pengaturan Tata Letak", + "Traffic Graph": "Grafik Lalu Lintas", + "Memory Usage": "Penggunaan Memori", + "Memory Cleanup": "Ketuk untuk membersihkan memori", + "Proxy Group Icon": "Ikon Grup Proksi", + "Nav Icon": "Ikon Navigasi", + "Monochrome": "Monokrom", + "Colorful": "Berwarna", + "Tray Icon": "Ikon Tray", + "Common Tray Icon": "Ikon Tray Umum", + "System Proxy Tray Icon": "Ikon Tray Proksi Sistem", + "Tun Tray Icon": "Ikon Tray Tun", + "Miscellaneous": "Lain-lain", + "App Log Level": "Tingkat Log Aplikasi", + "Auto Close Connections": "Tutup Koneksi Otomatis", + "Auto Close Connections Info": "Hentikan koneksi yang sudah ada saat pemilihan grup proksi atau mode proksi berubah", + "Auto Check Update": "Periksa Pembaruan Otomatis", + "Enable Builtin Enhanced": "Aktifkan Peningkatan Bawaan", + "Enable Builtin Enhanced Info": "Penanganan kompatibilitas untuk file konfigurasi", + "Proxy Layout Columns": "Kolom Tata Letak Proksi", + "Auto Columns": "Kolom Otomatis", + "Auto Log Clean": "Pembersihan Log Otomatis", + "Never Clean": "Jangan Pernah Bersihkan", + "Retain _n Days": "Simpan {{n}} Hari", + "Default Latency Test": "Tes Latensi Default", + "Default Latency Test Info": "Digunakan hanya untuk pengujian permintaan klien HTTP dan tidak akan mempengaruhi file konfigurasi", + "Default Latency Timeout": "Waktu Habis Latensi Default", + "Hotkey Setting": "Pengaturan Pintasan", + "open_or_close_dashboard": "Buka/Tutup Dasbor", + "clash_mode_rule": "Mode Aturan", + "clash_mode_global": "Mode Global", + "clash_mode_direct": "Mode Langsung", + "toggle_system_proxy": "Aktifkan/Nonaktifkan Proksi Sistem", + "toggle_tun_mode": "Aktifkan/Nonaktifkan Mode Tun", + "Backup Setting": "Pengaturan Cadangan", + "Backup Setting Info": "Mendukung file konfigurasi cadangan WebDAV", + "Runtime Config": "Konfigurasi Runtime", + "Open Conf Dir": "Buka Direktori Konfigurasi", + "Open Conf Dir Info": "Jika perangkat lunak berjalan tidak normal, CADANGKAN dan hapus semua file di folder ini lalu mulai ulang perangkat lunak", + "Open Core Dir": "Buka Direktori Core", + "Open Logs Dir": "Buka Direktori Log", + "Check for Updates": "Periksa Pembaruan", + "Go to Release Page": "Pergi ke Halaman Rilis", + "Portable Updater Error": "Versi portabel tidak mendukung pembaruan dalam aplikasi. Harap unduh dan ganti secara manual", + "Break Change Update Error": "Versi ini adalah pembaruan besar dan tidak mendukung pembaruan dalam aplikasi. Harap hapus instalasi dan unduh serta instal versi baru secara manual", + "Open Dev Tools": "Buka Alat Pengembang", + "Exit": "Keluar", + "Verge Version": "Versi Verge", + "ReadOnly": "Hanya Baca", + "ReadOnlyMessage": "Tidak dapat mengedit di editor hanya baca", + "Filter": "Filter", + "Filter conditions": "Kondisi Filter", + "Match Case": "Cocokkan Kasus", + "Match Whole Word": "Cocokkan Kata Utuh", + "Use Regular Expression": "Gunakan Ekspresi Reguler", + "Profile Imported Successfully": "Profil Berhasil Diimpor", + "Profile Switched": "Profil Beralih", + "Profile Reactivated": "Profil Diaktifkan Kembali", + "Only YAML Files Supported": "Hanya File YAML yang Didukung", + "Settings Applied": "Pengaturan Diterapkan", + "Service Installed Successfully": "Layanan Berhasil Diinstal", + "Service Uninstalled Successfully": "Layanan Berhasil Dicopot", + "Proxy Daemon Duration Cannot be Less than 1 Second": "Durasi Daemon Proksi Tidak Boleh Kurang dari 1 Detik", + "Invalid Bypass Format": "Format Bypass Tidak Valid", + "Clash Port Modified": "Port Clash Diubah", + "Port Conflict": "Konflik Port", + "Restart Application to Apply Modifications": "Mulai Ulang Aplikasi untuk Menerapkan Modifikasi", + "External Controller Address Modified": "Alamat Pengendali Eksternal Diubah", + "Permissions Granted Successfully for _clash Core": "Izin Berhasil Diberikan untuk Core {{core}}", + "Core Version Updated": "Versi Core Diperbarui", + "Clash Core Restarted": "Core Clash Dimulai Ulang", + "Switched to _clash Core": "Beralih ke Core {{core}}", + "GeoData Updated": "GeoData Diperbarui", + "Currently on the Latest Version": "Saat ini pada Versi Terbaru", + "Import Subscription Successful": "Berlangganan Berhasil Diimpor", + "WebDAV Server URL": "URL Server WebDAV", + "Username": "Nama Pengguna", + "Password": "Kata Sandi", + "Backup": "Cadangan", + "Filename": "Nama Berkas", + "Actions": "Tindakan", + "Restore": "Pulihkan", + "No Backups": "Tidak ada cadangan yang tersedia", + "WebDAV URL Required": "URL WebDAV tidak boleh kosong", + "Invalid WebDAV URL": "Format URL WebDAV tidak valid", + "Username Required": "Nama pengguna tidak boleh kosong", + "Password Required": "Kata sandi tidak boleh kosong", + "Failed to Fetch Backups": "Gagal mengambil file cadangan", + "WebDAV Config Saved": "Konfigurasi WebDAV berhasil disimpan", + "WebDAV Config Save Failed": "Gagal menyimpan konfigurasi WebDAV: {{error}}", + "Backup Created": "Cadangan berhasil dibuat", + "Backup Failed": "Cadangan gagal: {{error}}", + "Delete Backup": "Hapus Cadangan", + "Restore Backup": "Pulihkan Cadangan", + "Backup Time": "Waktu Cadangan", + "Confirm to delete this backup file?": "Konfirmasi untuk menghapus file cadangan ini?", + "Confirm to restore this backup file?": "Konfirmasi untuk memulihkan file cadangan ini?", + "Restore Success, App will restart in 1s": "Pemulihan Berhasil, Aplikasi akan dimulai ulang dalam 1 detik", + "Failed to fetch backup files": "Gagal mengambil file cadangan" +} diff --git a/src/locales/ru.json b/src/locales/ru.json index 337bd534..336af148 100644 --- a/src/locales/ru.json +++ b/src/locales/ru.json @@ -397,5 +397,37 @@ "Confirm to delete this backup file?": "Вы уверены, что хотите удалить этот файл резервной копии?", "Confirm to restore this backup file?": "Вы уверены, что хотите восстановить этот файл резервной копии?", "Restore Success, App will restart in 1s": "Восстановление успешно выполнено, приложение перезапустится через 1 секунду", - "Failed to fetch backup files": "Не удалось получить файлы резервных копий" + "Failed to fetch backup files": "Не удалось получить файлы резервных копий", + "Profile": "Профиль", + "Help": "Помощь", + "About": "О программе", + "Theme": "Тема", + "Main Window": "Главное окно", + "Group Icon": "Иконка группы", + "Menu Icon": "Иконка меню", + "PAC File": "PAC файл", + "Web UI": "Веб-интерфейс", + "Hotkeys": "Горячие клавиши", + "Verge Mixed Port": "Смешанный порт Verge", + "Verge Socks Port": "Порт Verge Socks", + "Verge Redir Port": "Порт перенаправления Verge", + "Verge Tproxy Port": "Порт Verge Tproxy", + "Verge Port": "Порт Verge", + "Verge HTTP Enabled": "HTTP Verge включен", + "WebDAV URL": "URL WebDAV", + "WebDAV Username": "Имя пользователя WebDAV", + "WebDAV Password": "Пароль WebDAV", + "Dashboard": "Панель управления", + "Restart App": "Перезапустить приложение", + "Restart Clash Core": "Перезапустить ядро Clash", + "TUN Mode": "Режим TUN", + "Copy Env": "Копировать переменные окружения", + "Conf Dir": "Директория конфигурации", + "Core Dir": "Директория ядра", + "Logs Dir": "Директория логов", + "Open Dir": "Открыть директорию", + "More": "Ещё", + "Rule Mode": "Режим правил", + "Global Mode": "Глобальный режим", + "Direct Mode": "Прямой режим" } diff --git a/src/locales/tt.json b/src/locales/tt.json index b5720bd9..2d5c6dc0 100644 --- a/src/locales/tt.json +++ b/src/locales/tt.json @@ -403,11 +403,8 @@ "About": "Турында", "Theme": "Тема", "Main Window": "Төп тәрәзә", - "Traffic Graph": "Трафик графигы", - "Memory Usage": "Хәтер куллану", "Group Icon": "Төркем иконкасы", "Menu Icon": "Меню иконкасы", - "Tray Icon": "Трей иконкасы", "PAC File": "PAC файлы", "Web UI": "Веб-интерфейс", "Hotkeys": "Кызу төймәләр", @@ -420,5 +417,17 @@ "WebDAV URL": "WebDAV URL", "WebDAV Username": "WebDAV кулланучы исеме", "WebDAV Password": "WebDAV серсүзе", - "Dashboard": "Панель" + "Dashboard": "Панель", + "Restart App": "Кушымтаны яңадан ачу", + "Restart Clash Core": "Clash ядрони яңадан башлап ачу", + "TUN Mode": "TUN режимы", + "Copy Env": "Env күчереп алу", + "Conf Dir": "Кушымта папкасы", + "Core Dir": "Ядро папкасы", + "Logs Dir": "Логлар папкасы", + "Open Dir": "Папканы ачу", + "More": "Башҡа", + "Rule Mode": "Кагыйдә режимы", + "Global Mode": "Глобаль режим", + "Direct Mode": "Туры режим" } diff --git a/src/locales/zh.json b/src/locales/zh.json index 71252903..199ff9ab 100644 --- a/src/locales/zh.json +++ b/src/locales/zh.json @@ -397,5 +397,37 @@ "Confirm to delete this backup file?": "确认删除此备份文件吗?", "Confirm to restore this backup file?": "确认恢复此 份文件吗?", "Restore Success, App will restart in 1s": "恢复成功,应用将在1秒后重启", - "Failed to fetch backup files": "获取备份文件失败" + "Failed to fetch backup files": "获取备份文件失败", + "Profile": "配置", + "Help": "帮助", + "About": "关于", + "Theme": "主题", + "Main Window": "主窗口", + "Group Icon": "分组图标", + "Menu Icon": "菜单图标", + "PAC File": "PAC文件", + "Web UI": "网页界面", + "Hotkeys": "快捷键", + "Verge Mixed Port": "Verge混合端口", + "Verge Socks Port": "Verge Socks端口", + "Verge Redir Port": "Verge重定向端口", + "Verge Tproxy Port": "Verge透明代理端口", + "Verge Port": "Verge端口", + "Verge HTTP Enabled": "Verge HTTP已启用", + "WebDAV URL": "WebDAV地址", + "WebDAV Username": "WebDAV用户名", + "WebDAV Password": "WebDAV密码", + "Dashboard": "仪表板", + "Restart App": "重启应用", + "Restart Clash Core": "重启Clash核心", + "TUN Mode": "TUN模式", + "Copy Env": "复制环境变量", + "Conf Dir": "配置目录", + "Core Dir": "核心目录", + "Logs Dir": "日志目录", + "Open Dir": "打开目录", + "More": "更多", + "Rule Mode": "规则模式", + "Global Mode": "全局模式", + "Direct Mode": "直连模式" } diff --git a/src/services/i18n.ts b/src/services/i18n.ts index 687578c4..f72f10a6 100644 --- a/src/services/i18n.ts +++ b/src/services/i18n.ts @@ -5,6 +5,8 @@ import ru from "@/locales/ru.json"; import zh from "@/locales/zh.json"; import fa from "@/locales/fa.json"; import tt from "@/locales/tt.json"; +import id from "@/locales/id.json"; +import ar from "@/locales/ar.json"; const resources = { en: { translation: en }, @@ -12,6 +14,8 @@ const resources = { zh: { translation: zh }, fa: { translation: fa }, tt: { translation: tt }, + id: { translation: id }, + ar: { translation: ar }, }; i18n.use(initReactI18next).init({