From d80105d35f2b049cfa7f04e051db03de770e2df1 Mon Sep 17 00:00:00 2001 From: lxm <1274844347@qq.com> Date: Fri, 13 Mar 2026 15:54:02 +0800 Subject: [PATCH] =?UTF-8?q?feat(i18n):=20=E4=B8=B0=E5=AF=8C=E9=98=BF?= =?UTF-8?q?=E6=8B=89=E4=BC=AF=E8=AF=AD=E8=AF=AD=E8=A8=80=E5=8C=85=E5=8F=8A?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=A4=9A=E6=A8=A1=E5=9D=97=E6=96=87=E6=9C=AC?= =?UTF-8?q?=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增常用时间相关文案如“刚刚”、“分钟前”等 - 完善商品模块中支付流程及会员相关文案 - 细化AI、翻译、会议等商品页描述与功能说明 - 增强会议模块功能支持,包括转写、总结、模板管理、文件操作 - 更新会议模块错误提示、播放器提示及云端同步信息 - 优化设备管理模块及Agent模块主界面和功能提示 - 扩展Agent模块音乐、导航、天气卡片内容及交互提示 - 补充翻译模块文本翻译、图片翻译、历史记录及质量设置相关文案 - 修正设置页面及相关模块网络错误、权限提示和加载状态文案 --- lib/core/translations/language/ar_sa.dart | 1038 ++++++++++---------- lib/core/translations/language/bg_bg.dart | 1057 ++++++++++---------- lib/core/translations/language/cs_cz.dart | 1051 ++++++++++---------- lib/core/translations/language/da_dk.dart | 1053 ++++++++++---------- lib/core/translations/language/de_de.dart | 1054 ++++++++++---------- lib/core/translations/language/el_gr.dart | 1069 +++++++++++---------- lib/core/translations/language/en_us.dart | 1012 +++++++++---------- lib/core/translations/language/es_es.dart | 1051 ++++++++++---------- lib/core/translations/language/et_ee.dart | 1051 ++++++++++---------- lib/core/translations/language/fa_ir.dart | 1049 ++++++++++---------- lib/core/translations/language/fi_fi.dart | 1051 ++++++++++---------- lib/core/translations/language/fr_fr.dart | 1050 ++++++++++---------- lib/core/translations/language/hi_in.dart | 1051 ++++++++++---------- lib/core/translations/language/hr_hr.dart | 1051 ++++++++++---------- lib/core/translations/language/hu_hu.dart | 1051 ++++++++++---------- lib/core/translations/language/id_id.dart | 1049 ++++++++++---------- lib/core/translations/language/is_is.dart | 1051 ++++++++++---------- lib/core/translations/language/it_it.dart | 1054 ++++++++++---------- lib/core/translations/language/ja_jp.dart | 1040 ++++++++++---------- lib/core/translations/language/ko_kr.dart | 1032 ++++++++++---------- lib/core/translations/language/lt_lt.dart | 1052 ++++++++++---------- lib/core/translations/language/lv_lv.dart | 1051 ++++++++++---------- lib/core/translations/language/ms_my.dart | 1049 ++++++++++---------- lib/core/translations/language/nb_no.dart | 1051 ++++++++++---------- lib/core/translations/language/nl_nl.dart | 1051 ++++++++++---------- lib/core/translations/language/pl_pl.dart | 1051 ++++++++++---------- lib/core/translations/language/pt_pt.dart | 1053 ++++++++++---------- lib/core/translations/language/ro_ro.dart | 1051 ++++++++++---------- lib/core/translations/language/ru_ru.dart | 1054 ++++++++++---------- lib/core/translations/language/sk_sk.dart | 1051 ++++++++++---------- lib/core/translations/language/sl_si.dart | 1051 ++++++++++---------- lib/core/translations/language/sr_rs.dart | 1051 ++++++++++---------- lib/core/translations/language/sv_se.dart | 999 +++++++++---------- lib/core/translations/language/th_th.dart | 999 +++++++++---------- lib/core/translations/language/tl_ph.dart | 999 +++++++++---------- lib/core/translations/language/tr_tr.dart | 999 +++++++++---------- lib/core/translations/language/uk_ua.dart | 999 +++++++++---------- lib/core/translations/language/vi_vn.dart | 999 +++++++++---------- lib/core/translations/language/zh_cn.dart | 1019 +++++++++----------- lib/core/translations/language/zh_hk.dart | 1006 +++++++++---------- lib/core/translations/language/zh_tw.dart | 1006 +++++++++---------- 41 files changed, 21374 insertions(+), 21232 deletions(-) diff --git a/lib/core/translations/language/ar_sa.dart b/lib/core/translations/language/ar_sa.dart index d0d0ca055..3fd0d0523 100644 --- a/lib/core/translations/language/ar_sa.dart +++ b/lib/core/translations/language/ar_sa.dart @@ -1,4 +1,5 @@ const Map arSA = { + // 通用 'continue': 'متابعة', 'confirm': 'تأكيد', @@ -18,6 +19,11 @@ const Map arSA = { "unknownError": "خطأ غير معروف", "asrConnectionFailed": "فشل الاتصال بخدمة التعرف على الصوت. يرجى التحقق من الشبكة والمحاولة مرة أخرى لاحقًا.", + "justNow": "الآن", + "minutesAgo": "قبل @minutes دقيقة", + "yesterday": "أمس", + "daysAgo": "قبل @days يوم", + "hoursAgo": "قبل @hours ساعة", // 启动页 "slogan": "تواصل مع العالم، أبعد من مجرد صوت", @@ -28,7 +34,7 @@ const Map arSA = { "explore": "اكتشف", "settings": "الإعدادات", - // 语言 + // 语言列表 "followingSystem": "متابعة النظام", "chinese": "الصينية", "english": "الإنجليزية", @@ -72,7 +78,7 @@ const Map arSA = { "arabic": "العربية", "persian": "الفارسية", - // 登录页 + // 登录模块 "welcome": "أهلاً بك", "loginTips": "يرجى استخدام رقم الهاتف أو البريد الإلكتروني لتسجيل الدخول/التسجيل", @@ -101,13 +107,9 @@ const Map arSA = { "resendVerificationCode": "إعادة إرسال رمز التحقق", "login": "تسجيل الدخول", "usePasswordLogin": "استخدام كلمة المرور لتسجيل الدخول", - - // 隐私政策弹窗 "loginDeclaration": "إعلان Voitrans", // Voitrans 声明 "welcomeToThisApp": "مرحبًا بك في Voitrans، يرجى القراءة بعناية", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": "، بالنقر على 'أوافق وأدخل'، فإنك تقر بأنك قد قرأت ووافقت على الاتفاقيات المذكورة أعلاه. النقر على 'لا أوافق' سيؤدي إلى الخروج من التطبيق.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "لا أوافق", // 不同意 @@ -189,6 +191,7 @@ const Map arSA = { "usageStats": "إحصائيات الاستخدام", "usageStatsInfo": "عرض إحصائيات استخدامك", "scene": "مشهد", + // 用量统计模块 "aiChat": "دردشة الذكاء الاصطناعي", "translationStats": "إحصائيات الترجمة", @@ -209,7 +212,6 @@ const Map arSA = { "translationApi": "API الترجمة", "asr": "التعرف على الكلام", "tts": "تحويل النص إلى كلام", - //"aiSummary": "AI摘要", "dataVolumeStats": "إحصائيات حجم البيانات", "sourceTextCharacters": "أحرف النص المصدر", "ttsTextCharacters": "أحرف نص TTS", @@ -226,7 +228,6 @@ const Map arSA = { "totalAudioDuration": "إجمالي مدة الصوت", "audioFileSize": "حجم ملف الصوت", "transcriptBytes": "بايت النسخ", - // 通知文案 "loadFailed": "فشل التحميل", "statsLoadFailedTryLater": "فشل تحميل الإحصائيات، يرجى المحاولة لاحقًا", "cleanupComplete": "اكتمل التنظيف", @@ -234,56 +235,122 @@ const Map arSA = { "exportFeature": "ميزة التصدير", "exportInDevelopment": "ميزة تصدير البيانات قيد التطوير", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'الباقات المتاحة', 'remainingQuota': 'الحصة المتبقية', 'totalQuota': 'إجمالي الحصة', 'remaining': 'المتبقي', 'featureDescription': 'وصف الميزة', - // AI 功能卡片 + 'paymentSuccess': 'تم الدفع بنجاح', + 'paymentFailed': 'فشل الدفع', + 'gotIt': 'فهمت', + 'paymentFailedTryAgain': 'فشل الدفع. يرجى المحاولة مرة أخرى.', + 'selectPaymentMethod': 'اختر طريقة الدفع', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'فشل إنشاء طلب WeChat', + 'alipayOrderCreateFailed': 'فشل إنشاء طلب Alipay', + 'appleOrderCreateFailed': 'فشل إنشاء طلب Apple', + 'googleOrderCreateFailed': 'فشل إنشاء طلب Google', + 'paypalOrderCreateFailed': 'فشل إنشاء طلب PayPal', + 'paymentException': 'استثناء في الدفع', + 'paymentLaunchFailed': 'فشل بدء الدفع', + 'paymentExceptionWithError': 'استثناء في الدفع: @error', + 'paymentProcessingCheckLater': 'طلبك قيد المعالجة. يرجى التحقق لاحقًا.', + 'paymentResultQueryException': 'فشل الاستعلام عن نتيجة الدفع: @error', + 'orderConfirmedQuotaRefreshed': 'تم تأكيد الطلب. تم تحديث رصيدك.', + 'paymentCompletedConfirming': 'تم الدفع. جاري التأكيد…', + 'paymentCancelled': 'تم إلغاء الدفع', + 'paypalOpenedCompleteInBrowser': 'تم فتح PayPal. يرجى إكمال الدفع في متصفحك.', + 'paypalOpenFailed': 'تعذر فتح صفحة الدفع عبر PayPal', + 'paymentTestTitle': 'اختبار الدفع', + 'paymentTestOrderInfo': 'معلومات طلب الاختبار', + 'paymentTestProductId': 'معرّف المنتج', + 'paymentTestProductDescription': 'وصف المنتج', + 'paymentTestWechatDescription': 'اختبار الدفع عبر WeChat', + 'paymentTestAlipayDescription': 'اختبار الدفع عبر Alipay', + 'paymentTestAmount': 'المبلغ', + 'paymentTestSelectAmount': 'اختر مبلغ الاختبار', + 'paying': 'جاري الدفع...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'حالة الدفع', + 'errorInfoWithMessage': 'خطأ: @message', + 'retest': 'إعادة الاختبار', + 'paymentTestInstructionsTitle': 'التعليمات', + 'paymentTestInstructionsContent': '1. اختر مبلغ اختبار (يُنصح بـ: ¥0.01)\n2. انقر على زر الدفع للبدء\n3. أكمل الدفع في تطبيق الدفع\n4. ارجع للتحقق من النتيجة', + 'startingWechatPayment': 'جاري تشغيل WeChat Pay...', + 'startingAlipayPayment': 'جاري تشغيل Alipay...', + 'wechatPaymentSuccess': 'تم الدفع عبر WeChat Pay بنجاح!', + 'wechatPaymentFailed': 'فشل WeChat Pay', + 'wechatPaymentLaunchFailed': 'فشل تشغيل WeChat Pay', + 'cannotLaunchWechatPayment': 'تعذر تشغيل WeChat Pay', + 'wechatPaymentException': 'استثناء WeChat Pay', + 'wechatPaymentTestCompleted': 'اكتمل اختبار WeChat Pay', + 'alipayPaymentSuccess': 'تم الدفع عبر Alipay بنجاح!', + 'alipayPaymentFailed': 'فشل Alipay', + 'alipayPaymentLaunchFailed': 'فشل تشغيل Alipay', + 'cannotLaunchAlipayPayment': 'تعذر تشغيل Alipay', + 'alipayPaymentException': 'استثناء Alipay', + "insufficientIntegral": "نقاط غير كافية", + "insufficientBalanceDesc": + "الرصيد غير كافٍ، يرجى الانتقال إلى صفحة الشحن المقابلة للشحن", + "recharge": "الذهاب للشحن", + "aiMemberExpiredDesc": + "انتهت عضوية AI، يرجى الانتقال إلى شحن العضوية للتجديد", + + // 商品模块 - AI商品页 'musicAndRecommendation': 'الموسيقى والتوصيات', 'navigationAndRoutes': 'الملاحة والمسارات', 'nearbySearch': 'البحث القريب', 'newsInformation': 'الأخبار والمعلومات', 'communicationAssistant': 'مساعد الاتصال', - // 翻译功能卡片 + 'aiHeaderDesc1': + 'حصة محادثة أطول، المزيد من استدعاءات الأدوات، دعم سياق أطول.', + 'aiHeaderDesc2': + 'مناسب للأسئلة والأجوبة الذكية، التلخيص والتحليل، وتنفيذ المهام.', + 'musicSearchPlaybackControl': 'البحث في مكتبة الموسيقى والتحكم في التشغيل', + 'smartPlaylistAndSimilarRecommendations': + 'قائمة تشغيل ذكية وتوصيات لأغاني مماثلة', + 'routePlanningAndCongestionAvoidance': 'تخطيط المسار وتجنب الازدحام', + 'voiceBroadcastAndWaypoints': 'البث الصوتي وإعدادات نقاط الطريق', + 'realTimeWeatherForecast': 'الطقس في الوقت الفعلي والتوقعات', + 'clothingAdviceAndTravelReminders': 'نصائح الملابس وتذكيرات السفر', + 'poiSearchFoodGasParking': 'البحث عن نقاط الاهتمام: طعام/وقود/مواقف', + 'ratingsHoursAndDirectRoutes': 'التقييمات، ساعات العمل والمسارات المباشرة', + 'hotNewsAndTopicOverview': 'أخبار عاجلة ونظرة عامة على الموضوع', + 'longArticleSummariesAndKeyPoints': 'ملخصات المقالات الطويلة واستخراج النقاط', + 'helpCallAndSMS': 'المساعدة في إجراء المكالمات وإرسال الرسائل القصيرة', + 'templatedMessagesAndScheduleReminders': 'رسائل القوالب وتذكيرات الجدول', + 'aiDisclaimer': + 'تتأثر الميزات المذكورة أعلاه بأذونات الجهاز، توفر الخدمة وحالة الشبكة، يرجى الرجوع إلى الأداء الفعلي.', + + // 商品模块 - 翻译商品页 'realtimeTranscription': 'النسخ في الوقت الفعلي', - // 'textTranslation' 已存在 'sceneLexicon': 'معجم المشهد', 'subtitleDisplay': 'عرض الترجمة', - // 会议功能卡片 + 'transHeaderDesc1': + 'ترجمة فورية متعددة اللغات وترجمة نصوص، بث صوتي بزمن انتقال منخفض.', + 'transHeaderDesc2': 'مناسب للسفر، الأعمال، الخطب والتدريس.', + 'translateZhEn': 'ترجمة صينية-إنجليزية', + 'lowLatencyVoiceBroadcast': 'بث صوتي بزمن انتقال منخفض', + 'multiLangTextTranslation': 'ترجمة نصوص متعددة اللغات', + 'termOptimizationContextPreserve': 'تحسين المصطلحات والحفاظ على السياق', + 'lexiconTourBusinessLife': 'معاجم السياحة/الأعمال/الحياة', + 'personalVocabularyMemory': 'ذاكرة المفردات الشخصية', + 'conversationSubtitleLargeText': 'ترجمة المحادثة/وضع النص الكبير', + 'colorHighContrast': 'تباين ألوان عالي', + 'transDisclaimer': + 'يتأثر أداء الترجمة بالميكروفون، تأخير الشبكة وضوضاء البيئة، يرجى الرجوع إلى الأداء الفعلي.', + + // 商品模块 - 会议商品页 'meetingRecording': 'تسجيل الاجتماع', 'transcriptionAndSummary': 'النسخ والملخص', 'keywordSearch': 'بحث الكلمات الرئيسية', 'collaborationSharing': 'التعاون والمشاركة', - // 商品名称(按ID) - 'ai_001_name': 'أساسيات الذكاء الاصطناعي 100 مرة', - 'ai_002_name': 'أساسيات الذكاء الاصطناعي 500 مرة', - 'ai_003_name': 'أساسيات الذكاء الاصطناعي 1000 مرة', - 'meet_001_name': 'أساسيات الاجتماع 100 مرة', - 'meet_002_name': 'أساسيات الاجتماع 500 مرة', - 'meet_003_name': 'أساسيات الاجتماع 1000 مرة', - 'trans_001_name': 'أساسيات الترجمة 100 مرة', - 'trans_002_name': 'أساسيات الترجمة 500 مرة', - 'trans_003_name': 'أساسيات الترجمة 1000 مرة', - - // 商品描述(按ID) - 'ai_001_desc': 'يحتوي على 100 استخدام، يغطي ميزات الذكاء الاصطناعي الأساسية', - 'ai_002_desc': 'يحتوي على 500 استخدام، يغطي ميزات الذكاء الاصطناعي الأساسية', - 'ai_003_desc': 'يحتوي على 1000 استخدام، يغطي ميزات الذكاء الاصطناعي الأساسية', - 'meet_001_desc': 'يحتوي على 100 تسجيل/نسخ للاجتماعات', - 'meet_002_desc': 'يحتوي على 500 تسجيل/نسخ للاجتماعات', - 'meet_003_desc': 'يحتوي على 1000 تسجيل/نسخ للاجتماعات', - 'trans_001_desc': 'يحتوي على 100 ترجمة (صوت/نص)', - 'trans_002_desc': 'يحتوي على 500 ترجمة (صوت/نص)', - 'trans_003_desc': 'يحتوي على 1000 ترجمة (صوت/نص)', - -// 商品页通用页脚 - 'appNameProvider': 'اسم التطبيق: Voitrans · مزود الخدمة: Voitrans', - 'iapCustomerServiceQQLabel': 'خدمة عملاء المشتريات داخل التطبيق QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 'meetingHeaderDesc1': 'تسجيل ونسخ، بحث الكلمات الرئيسية والملخص التلقائي، تحسين كفاءة الاجتماعات.', 'meetingHeaderDesc2': @@ -299,43 +366,7 @@ const Map arSA = { 'meetingDisclaimer': 'يُقترح الاستخدام في بيئة هادئة، يتأثر الأداء بالميكروفون والشبكة، يرجى الرجوع إلى الأداء الفعلي.', - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'ترجمة فورية متعددة اللغات وترجمة نصوص، بث صوتي بزمن انتقال منخفض.', - 'transHeaderDesc2': 'مناسب للسفر، الأعمال، الخطب والتدريس.', - 'translateZhEn': 'ترجمة صينية-إنجليزية', - 'lowLatencyVoiceBroadcast': 'بث صوتي بزمن انتقال منخفض', - 'multiLangTextTranslation': 'ترجمة نصوص متعددة اللغات', - 'termOptimizationContextPreserve': 'تحسين المصطلحات والحفاظ على السياق', - 'lexiconTourBusinessLife': 'معاجم السياحة/الأعمال/الحياة', - 'personalVocabularyMemory': 'ذاكرة المفردات الشخصية', - 'conversationSubtitleLargeText': 'ترجمة المحادثة/وضع النص الكبير', - 'colorHighContrast': 'تباين ألوان عالي', - 'transDisclaimer': - 'يتأثر أداء الترجمة بالميكروفون، تأخير الشبكة وضوضاء البيئة، يرجى الرجوع إلى الأداء الفعلي.', - - // AI 商品页描述 - 'aiHeaderDesc1': - 'حصة محادثة أطول، المزيد من استدعاءات الأدوات، دعم سياق أطول.', - 'aiHeaderDesc2': - 'مناسب للأسئلة والأجوبة الذكية، التلخيص والتحليل، وتنفيذ المهام.', - 'musicSearchPlaybackControl': 'البحث في مكتبة الموسيقى والتحكم في التشغيل', - 'smartPlaylistAndSimilarRecommendations': - 'قائمة تشغيل ذكية وتوصيات لأغاني مماثلة', - 'routePlanningAndCongestionAvoidance': 'تخطيط المسار وتجنب الازدحام', - 'voiceBroadcastAndWaypoints': 'البث الصوتي وإعدادات نقاط الطريق', - 'realTimeWeatherForecast': 'الطقس في الوقت الفعلي والتوقعات', - 'clothingAdviceAndTravelReminders': 'نصائح الملابس وتذكيرات السفر', - 'poiSearchFoodGasParking': 'البحث عن نقاط الاهتمام: طعام/وقود/مواقف', - 'ratingsHoursAndDirectRoutes': 'التقييمات، ساعات العمل والمسارات المباشرة', - 'hotNewsAndTopicOverview': 'أخبار عاجلة ونظرة عامة على الموضوع', - 'longArticleSummariesAndKeyPoints': 'ملخصات المقالات الطويلة واستخراج النقاط', - 'helpCallAndSMS': 'المساعدة في إجراء المكالمات وإرسال الرسائل القصيرة', - 'templatedMessagesAndScheduleReminders': 'رسائل القوالب وتذكيرات الجدول', - 'aiDisclaimer': - 'تتأثر الميزات المذكورة أعلاه بأذونات الجهاز، توفر الخدمة وحالة الشبكة، يرجى الرجوع إلى الأداء الفعلي.', - - // 会员商品页 + // 商品模块 - VIP会员页 'benefitsOverview': 'نظرة عامة على المزايا', 'higherQuota': 'حصة استخدام أعلى', 'lowerUnitPrice': 'سعر وحدة أقل', @@ -351,7 +382,32 @@ const Map arSA = { 'vipDisclaimer': 'تخضع المزايا الفعلية لتوضيح الباقة، وقد يتم تعديلها مع تحديثات الإصدار.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'أساسيات الذكاء الاصطناعي 100 مرة', + 'ai_002_name': 'أساسيات الذكاء الاصطناعي 500 مرة', + 'ai_003_name': 'أساسيات الذكاء الاصطناعي 1000 مرة', + 'meet_001_name': 'أساسيات الاجتماع 100 مرة', + 'meet_002_name': 'أساسيات الاجتماع 500 مرة', + 'meet_003_name': 'أساسيات الاجتماع 1000 مرة', + 'trans_001_name': 'أساسيات الترجمة 100 مرة', + 'trans_002_name': 'أساسيات الترجمة 500 مرة', + 'trans_003_name': 'أساسيات الترجمة 1000 مرة', + 'ai_001_desc': 'يحتوي على 100 استخدام، يغطي ميزات الذكاء الاصطناعي الأساسية', + 'ai_002_desc': 'يحتوي على 500 استخدام، يغطي ميزات الذكاء الاصطناعي الأساسية', + 'ai_003_desc': 'يحتوي على 1000 استخدام، يغطي ميزات الذكاء الاصطناعي الأساسية', + 'meet_001_desc': 'يحتوي على 100 تسجيل/نسخ للاجتماعات', + 'meet_002_desc': 'يحتوي على 500 تسجيل/نسخ للاجتماعات', + 'meet_003_desc': 'يحتوي على 1000 تسجيل/نسخ للاجتماعات', + 'trans_001_desc': 'يحتوي على 100 ترجمة (صوت/نص)', + 'trans_002_desc': 'يحتوي على 500 ترجمة (صوت/نص)', + 'trans_003_desc': 'يحتوي على 1000 ترجمة (صوت/نص)', + + // 商品模块 - 页脚 + 'appNameProvider': 'اسم التطبيق: Voitrans · مزود الخدمة: Voitrans', + 'iapCustomerServiceQQLabel': 'خدمة عملاء المشتريات داخل التطبيق QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': 'تخطي', 'next': 'التالي', 'sayLilyHint': 'قل للميكروفون: "Lily Lily"', @@ -364,7 +420,6 @@ const Map arSA = { 'رائع! لقد نجحت في إيقاظ Lily، جرب الآن أن تطلب منها القيام بشيء ما', 'confirmInput': 'تأكيد الإدخال', 'guideClickSendPrefix': 'انقر للإرسال،', - // AI 引导步骤 'guideWeatherStart': 'قل لـ Lily: "كيف هو الطقس اليوم"', 'guideWeatherInput': 'كيف هو الطقس اليوم', 'guideWeatherSend': 'ستقوم Lily ببث الطقس لك في الوقت الفعلي', @@ -391,7 +446,7 @@ const Map arSA = { 'guideSmsSend': 'ستقوم Lily بإرسال الرسالة لك', 'guideSmsEnd': 'تم إرسال الرسالة، التحكم الصوتي أكثر ملاءمة', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "بدء الاجتماع", 'edit': 'تعديل', 'delete': 'حذف', @@ -403,8 +458,6 @@ const Map arSA = { 'recordingDetails': 'تفاصيل التسجيل', 'aiSummary': 'ملخص الذكاء الاصطناعي', 'meetingTranscript': 'نص الاجتماع', - - // Meeting模块 - 导航和基础功能 'files': 'ملفات', 'mine': 'أنا', 'connect': 'اتصال', @@ -455,7 +508,6 @@ const Map arSA = { 'summarizing': 'جاري التلخيص...', 'analyzing': 'جاري التحليل...', 'summaryComplete': 'اكتمل الملخص', - //'generating': '正在生成...', 'generate': 'إنشاء', 'overview': 'نظرة عامة', 'transcription': 'النسخ', @@ -464,6 +516,97 @@ const Map arSA = { 'editSpeaker': 'تعديل', 'nameSpeaker': 'تسمية المتحدث', + // Meeting模块 - 转写与总结 + 'reSummarize': 'إعادة التلخيص', + 'dateAndTime': 'التاريخ والوقت', + 'location': 'الموقع', + 'attendees': 'الحاضرين', + 'inputLocation': 'إدخال الموقع', + 'inputAttendees': 'إدخال الحاضرين', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'اختر قالب الملخص', + 'useThisTemplate': 'استخدم هذا القالب', + 'lastUsed': 'آخر استخدام', + 'create': 'إنشاء', + 'templateDetails': 'تفاصيل القالب', + 'tag': 'علامة', + 'description': 'الوصف', + 'template': 'قالب', + 'deleteTemplate': 'حذف القالب', + 'deleteTemplateConfirm': 'هل أنت متأكد من أنك تريد حذف هذا القالب؟', + 'editTemplate': 'تعديل القالب', + 'createTemplate': 'إنشاء قالب', + 'name': 'الاسم', + 'templateContentHint': 'يرجى إدخال محتوى القالب! نصيحة: انقر على زر الذكاء الاصطناعي أعلاه لإنشاء محتوى القالب بسرعة بناءً على الاسم والوصف الذي أدخلته', + 'inputNameHint': 'يرجى إدخال الاسم', + 'inputDescHint': 'يرجى إدخال الوصف', + 'custom': 'مخصص', + 'pleaseEnter': 'يرجى الإدخال', + 'viewAll': 'عرض الكل', + 'recordingLanguage': 'لغة التسجيل', + 'chineseSimplified': 'الصينية الماندرين (المبسطة)', + 'meetingGenerateNow': 'إنشاء الآن', + 'keyEventsAnalyzed': 'تم تحليل {count} حدث رئيسي.', + 'aiAnalysisDesc': + 'يحدد تحليل الذكاء الاصطناعي الأحداث الرئيسية في التسجيلات، مما يتيح لك اختيار الأحداث المهمة لإنشاء الذكاء الاصطناعي.', + + // Meeting模块 - 文件操作 + 'importing': 'جاري الاستيراد...', + 'batchImporting': 'جاري الاستيراد المجمع...', + 'importingLocalRecordings': 'جاري استيراد التسجيلات المحلية...', + 'importFailed': 'فشل استيراد الملف: {filePath}, error: {error}', + 'importSuccess': 'تم استيراد {count} تسجيل محلي بنجاح', + 'importError': 'فشل الاستيراد: {error}', + 'pleaseSelectAudioFile': 'يرجى اختيار ملف صوتي', + 'shareAudio': 'مشاركة صوت الاجتماع', + 'shareComplete': 'اكتملت المشاركة!', + 'shareFailed': 'فشلت المشاركة: {error}', + 'fileProcessingFailed': 'فشلت معالجة الملف: {filePath}, خطأ: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'حفظ الخريطة الذهنية', + 'shareMindMap': 'مشاركة الخريطة الذهنية', + 'shareSuccess': 'تمت المشاركة بنجاح', + + // Meeting模块 - AI问答 + 'askAI': 'اسأل AI ...', + 'askAIPrompt': 'ما الذي يمكنني مساعدتك به اليوم؟', + 'continueAsk': 'متابعة السؤال', + 'todoList': 'قائمة المهام', + 'extractConclusion': 'استخلاص النتائج', + 'generateKeyIndicators': 'إنشاء مؤشرات رئيسية', + + // Meeting模块 - 分享与导出 + 'shareLink': 'مشاركة الرابط', + 'copyTranscript': 'نسخ النص', + 'copySummary': 'نسخ الملخص', + 'exportAudio': 'تصدير الصوت', + 'exportTranscript': 'تصدير النص', + 'shareMeetingAudio': 'مشاركة صوت الاجتماع', + 'exportSummary': 'تصدير الملخص', + 'exportAs': 'تصدير كـ', + 'exportingPDF': 'جاري تصدير PDF...', + 'export': 'تصدير', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'تطبيق على جميع فقرات هذا المتحدث', + 'summaryWillBeUpdatedAutomatically': + 'سيتم تحديث الملخص تلقائيًا بناءً على القالب', + 'nameCurrentSpeaker': 'تسمية المتحدث الحالي', + 'recentlyUsedNames': 'الأسماء المستخدمة مؤخرًا', + 'applyToCurrentParagraph': 'تطبيق على الفقرة الحالية', + 'totalTime': 'الإجمالي', + 'summarySpeakerWillBeUpdatedAutomatically': + 'سيتم تحديث متحدثي الملخص تلقائيًا', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'مزامنة إلى السحابة', + 'syncToCloudTip': + 'مزامنة تسجيلاتك تلقائيًا إلى السحابة، يمكنك تشغيل وإدارة ومشاركة التسجيلات عبر أي تطبيق VOITRANS أو VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'مزامنة تطبيق VOITRANS', + 'transcriptionRecord': 'سجل النسخ', + // Meeting模块 - 我的页面 'transcriptionRecords': 'سجلات النسخ', 'templateCommunity': 'مجتمع القوالب', @@ -482,7 +625,7 @@ const Map arSA = { 'bindDeviceToActivate': 'ربط جهاز Voitrans لتفعيل عضوية Starter', 'unlockNow': 'فتح الآن', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'مقارنة', 'detailedInfo': 'معلومات مفصلة', 'monthlyTranscriptionTime': 'وقت النسخ الشهري', @@ -518,8 +661,6 @@ const Map arSA = { 'يمكنك استيراد ملفات الصوت بسهولة من التطبيقات المحلية أو التابعة لجهات خارجية، مثل المذكرات الصوتية، Google Drive، إلخ.', 'multipleExportFormatsDesc': 'تصدير تسجيلاتك الصوتية، نصوص النسخ والملخصات بتنسيقات مختلفة (TXT، PDF، JPEG) لتلبية احتياجاتك.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'ترقية عضويتك', 'yearlySubscription': 'اشتراك سنوي', 'monthlySubscription': 'اشتراك شهري', @@ -548,105 +689,26 @@ const Map arSA = { 'validityNote': 'يتم التفعيل فور الشراء، صالح لمدة عامين بعد التفعيل.', 'purchase': 'شراء', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'اختر قالب الملخص', - 'useThisTemplate': 'استخدم هذا القالب', - 'lastUsed': 'آخر استخدام', - 'viewAll': 'عرض الكل', - 'recordingLanguage': 'لغة التسجيل', - 'chineseSimplified': 'الصينية الماندرين (المبسطة)', - 'meetingGenerateNow': 'إنشاء الآن', - 'keyEventsAnalyzed': 'تم تحليل {count} حدث رئيسي.', - 'aiAnalysisDesc': - 'يحدد تحليل الذكاء الاصطناعي الأحداث الرئيسية في التسجيلات، مما يتيح لك اختيار الأحداث المهمة لإنشاء الذكاء الاصطناعي.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'جاري الاستيراد...', - 'batchImporting': 'جاري الاستيراد المجمع...', - 'importingLocalRecordings': 'جاري استيراد التسجيلات المحلية...', - 'importFailed': 'فشل استيراد الملف: {filePath}, error: {error}', - 'importSuccess': 'تم استيراد {count} تسجيل محلي بنجاح', - 'importError': 'فشل الاستيراد: {error}', - 'pleaseSelectAudioFile': 'يرجى اختيار ملف صوتي', - 'shareAudio': 'مشاركة صوت الاجتماع', - 'shareComplete': 'اكتملت المشاركة!', - 'shareFailed': 'فشلت المشاركة: {error}', - 'fileProcessingFailed': 'فشلت معالجة الملف: {filePath}, خطأ: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'لغة غير معروفة', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'تخزين', - 'meetingStoragePermissionExplanation': - 'نحتاج إلى الوصول إلى إذن التخزين حتى تتمكن من اختيار وتحميل ملفات الصوت.', - 'meetingStoragePermissionPermanentDenial': - 'تم اكتشاف أنك رفضت إذن التخزين بشكل دائم. للمتابعة في استخدام هذه الميزة، يرجى الانتقال إلى إعدادات التطبيق لتمكين إذن التخزين يدويًا.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'مشاركة الخريطة الذهنية', - 'shareSuccess': 'تمت المشاركة بنجاح', - - // Meeting模块 - AI相关 - 'askAI': 'اسأل AI ...', - 'askAIPrompt': 'ما الذي يمكنني مساعدتك به اليوم؟', - 'continueAsk': 'متابعة السؤال', - 'todoList': 'قائمة المهام', - 'extractConclusion': 'استخلاص النتائج', - 'generateKeyIndicators': 'إنشاء مؤشرات رئيسية', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'إعادة التلخيص', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'لغة التسجيل', - // 'chinese': '中文普通话(简体)', 'cantonese': 'الكانتونية', 'sichuan': 'لهجة سيتشوان', 'shanghai': 'لهجة شنغهاي', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - // Meeting模块 - 分享相关 - 'shareLink': 'مشاركة الرابط', - 'copyTranscript': 'نسخ النص', - 'copySummary': 'نسخ الملخص', - 'exportAudio': 'تصدير الصوت', - 'exportTranscript': 'تصدير النص', - 'shareMeetingAudio': 'مشاركة صوت الاجتماع', - 'exportSummary': 'تصدير الملخص', - 'exportAs': 'تصدير كـ', - 'exportingPDF': 'جاري تصدير PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'تطبيق على جميع فقرات هذا المتحدث', - 'summaryWillBeUpdatedAutomatically': - 'سيتم تحديث الملخص تلقائيًا بناءً على القالب', - 'nameCurrentSpeaker': 'تسمية المتحدث الحالي', - 'recentlyUsedNames': 'الأسماء المستخدمة مؤخرًا', - 'applyToCurrentParagraph': 'تطبيق على الفقرة الحالية', - 'totalTime': 'الإجمالي', - 'summarySpeakerWillBeUpdatedAutomatically': - 'سيتم تحديث متحدثي الملخص تلقائيًا', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'مزامنة إلى السحابة', - 'syncToCloudTip': - 'مزامنة تسجيلاتك تلقائيًا إلى السحابة، يمكنك تشغيل وإدارة ومشاركة التسجيلات عبر أي تطبيق VOITRANS أو VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'مزامنة تطبيق VOITRANS', - 'transcriptionRecord': 'سجل النسخ', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'التاريخ والوقت', - 'location': 'الموقع', - 'attendees': 'الحاضرين', - 'inputLocation': 'إدخال الموقع', - 'inputAttendees': 'إدخال الحاضرين', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'لغة غير معروفة', + 'analysisFailed': 'فشل التحليل، يرجى المحاولة لاحقًا', + 'transcriptionFailed': 'فشل النسخ، يرجى المحاولة لاحقًا', + 'summaryFailed': 'فشل الملخص، يرجى المحاولة لاحقًا', + 'summaryFailedShort': 'فشل الملخص', + 'transcriptionFailedShort': 'فشل النسخ', + + // Meeting模块 - 播放器 + 'playerNotReady': 'مشغل الصوت غير جاهز، يرجى الانتظار', + 'playFailed': 'فشل التشغيل', + 'audioFileNotFound': 'ملف الصوت غير موجود', + 'fetchingAudio': 'جاري جلب الصوت من السحابة...', + 'playerLoadFailed': 'فشل تحميل مشغل الصوت', // 设置页 "systemSettings": "إعدادات النظام", @@ -698,25 +760,14 @@ const Map arSA = { "bleHeadsetFirmwareUpgrade": "ترقية إصدار البرنامج الثابت لسماعة BLE", "deviceManagement": "إدارة الأجهزة", "manageConnectedDevices": "إدارة أجهزة البلوتوث المرتبطة", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'الإصدار الحالي هو الأحدث {version}', 'checkUpdateFailed': 'فشل التحقق من التحديث', 'networkErrorRetry': 'خطأ في الشبكة، يرجى المحاولة لاحقًا', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "محادثة صوتية في الوقت الفعلي", "realtimeVoiceChatInfo": "تجرية وظيفة التفاعل الصوتي الذكي (معاينة)", "loading": "جاري التحميل...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "جهاز غير معروف", "deviceTypeClassicBluetoothHeadset": "سماعة بلوتوث كلاسيكية", "deviceTypeBleBluetoothHeadset": "سماعة بلوتوث BLE", @@ -732,8 +783,7 @@ const Map arSA = { "هل أنت متأكد من أنك تريد فك ارتباط الجهاز \"{deviceName}\"؟", "confirmUnbindAction": "تأكيد فك الارتباط", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "مسح سجل الدردشة", "online": "متصل", @@ -763,8 +813,9 @@ const Map arSA = { "swipeUpForMore": "اسحب للأعلى لرؤية المزيد", "callingTool": "أنا أساعدك، يرجى الانتظار!", // 正在帮您,请稍等! "voice_interrupt": "مقاطعة صوتية", // 语音打断 + 'voice_interrupt_tip': 'عند التفعيل: لن يتم مقاطعة الذكاء الاصطناعي بصوتك أثناء تحدثه ويمكنه التعامل مع جولة محادثة واحدة فقط في كل مرة. لبدء جولة جديدة، ما عليك سوى قول كلمة التنبيه.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "شغل بعض الموسيقى", // 来点音乐 "presetNavigation": "ملاحة إلى", // 导航 "presetWeather": "طقس اليوم", // 今日天气 @@ -776,7 +827,7 @@ const Map arSA = { "todayNews": "ما هي الأخبار اليوم؟", // 今日新闻 "nearbyFood": "ما هي الأطعمة اللذيذة القريبة؟", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'مرحبًا! أنا **Lily**، يمكنني مساعدتك في:\n\n' '• الإجابة على الأسئلة وتوفير المعلومات\n\n' '• ترجمة صوتية في الوقت الفعلي\n\n' @@ -796,18 +847,17 @@ const Map arSA = { 'startVoiceInput': 'بدء الإدخال الصوتي', 'startPhoneCallMode': 'بدء وضع الاتصال، بدء الإدخال الصوتي', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'أدخل رسالتك هنا...', // 全屏编辑器输入提示 'characterCount': '{count} حرف', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'نسخ', 'copySuccess': 'تم النسخ بنجاح', 'report': 'إبلاغ', 'submitSuccess': 'تم الإرسال بنجاح', 'submitFailed': 'فشل الإرسال', 'reportSubmitted': 'تم إرسال البلاغ، سنقوم بمعالجته في أقرب وقت ممكن', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'ضار/غير آمن', 'pornographicVulgar': 'إباحي/مبتذل', 'misleadingAttack': 'مضلل/هجوم', @@ -817,17 +867,14 @@ const Map arSA = { 'other': 'أخرى', 'reportDescriptionHint': 'نود معرفة سبب إبلاغك، يمكنك وصف المشكلة التي واجهتها.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'تم إنشاؤه بواسطة AI', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'إليك بعض الموسيقى الموصى بها:', 'playList': 'قائمة التشغيل', 'moreMusic': 'المزيد من الموسيقى', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'كم', // 公里单位 'meters': 'م', // 米单位 'hours': 'ساعة', // 小时单位 @@ -842,7 +889,7 @@ const Map arSA = { "bicycling": "ركوب الدراجات", "tsransit": "نقل عام", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'استعلام عن الطقس:', 'highest': 'الأعلى', 'lowest': 'الأدنى', @@ -871,18 +918,8 @@ const Map arSA = { "friday": "الجمعة", "saturday": "السبت", "sunday": "الأحد", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "تاريخ الانتهاء:", - "notActivated": "غير مفعل", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "مشمس", "partlyCloudy": "غائم جزئيا", "partlySunny": "مشمس جزئيا", @@ -903,7 +940,128 @@ const Map arSA = { "haze": "سديم", "strongWind": "رياح قوية", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "ترجمة الصور", + "textTranslation": "ترجمة النصوص", + + // 翻译模块 - 主页 + "translationHistory": "سجل الترجمة", + "enableRecording": "هل تريد تمكين التسجيل", + "viewAudioFiles": "عرض ملفات التسجيل", + "headsetUser": "مستخدم سماعة الرأس", + "phoneUser": "مستخدم الهاتف", + "selectSourceLanguage": "اختر اللغة المصدر", + "selectTargetLanguage": "اختر اللغة الهدف", + "me": "أنا", + "counterPart": "الطرف الآخر", + "bluetoothCallStateError": + "يرجى التأكد من توصيل سماعة البلوتوث بالهاتف وفي حالة الاتصال", + "autoDetect": "كشف تلقائي", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "فشل اكتشاف اللغة", + "translationFailed": "فشلت الترجمة", + "pleaseInputText": "يرجى إدخال النص", + "textTooLong": "النص طويل جدًا، بحد أقصى 5000 حرف", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "لا يوجد سجل تاريخي", + "historyRecords": "السجلات التاريخية", + "clearResults": "مسح النتائج", + "clearHistory": "مسح السجل", + "clearHistoryConfirm": + "هل أنت متأكد من أنك تريد مسح كل سجل الترجمة؟ هذا الإجراء لا يمكن التراجع عنه.", + "unknownLanguage": "لغة غير معروفة", + "deleteSessionRecord": "حذف سجل الجلسة", + "deleteSessionConfirm": + "هل أنت متأكد من أنك تريد حذف جميع سجلات الترجمة لهذه الجلسة؟ هذا الإجراء لا يمكن التراجع عنه.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "اختر مصدر الصورة", + "imagePreview": "معاينة الصورة", + "translationResult": "نتيجة الترجمة", + "recognitionResult": "نتيجة التعرف", + "translatedImagePreview": "معاينة الصورة المترجمة", + "translatedImageLoadFailed": "فشل تحميل الصورة المترجمة", + "pleaseSelectImage": "يرجى اختيار صورة", + "imageLoadFailed": "فشل تحميل الصورة", + "imageQuality": "جودة الصورة", + "maxSize": "الحجم الأقصى", + "close": "إغلاق", + "setImageQuality": "تعيين جودة الصورة", + "currentQuality": "الجودة الحالية: @value%", + "setMaxSize": "تعيين الحجم الأقصى", + "currentMaxSize": "الحالي: @pxpx", + "waitingForAction": "في انتظار الإجراء", + "pleaseSelectImageToStart": "يرجى اختيار صورة للبدء", + "chooseImage": "اختر صورة", + "openingCamera": "جاري فتح الكاميرا...", + "openingPhotoAlbum": "جاري فتح ألبوم الصور...", + "cancelled": "تم الإلغاء", + "userCancelledSelection": "ألغى المستخدم الاختيار", + "translatingImage": "جاري ترجمة الصورة", + "callingImageTranslateService": "جاري استدعاء خدمة ترجمة الصور...", + "savingRecord": "جاري حفظ السجل", + "savingTranslationResult": "جاري حفظ نتيجة الترجمة...", + "translationCompleted": "اكتملت الترجمة", + "allStepsCompleted": "اكتملت جميع الخطوات", + "processingFailed": "فشلت المعالجة", + "imageProcessingOrTranslationFailed": + "فشلت معالجة الصورة أو الترجمة، يرجى إعادة المحاولة.\nمعلومات الخطأ: {error}", + "imageTooLarge": "حجم الصورة يتجاوز حد 4 ميجابايت", + "imageTooLargeHint": + "حجم الصورة يتجاوز حد 4 ميجابايت، يرجى تقليل الجودة أو الحجم والمحاولة مرة أخرى", + "emptyTranslationResult": "أعادت واجهة ترجمة الصور نتيجة فارغة", + "imageTranslationFailedTryLater": + "فشلت ترجمة الصورة، الأسباب المحتملة: شذوذ في الشبكة أو تحديد معدل الواجهة، يرجى المحاولة لاحقًا", + "imageTranslationApiException": + "استثناء في استدعاء واجهة ترجمة الصور، يرجى التحقق من الشبكة والمحاولة مرة أخرى", + "permissionRequired": "متطلبات الإذن", + "cameraPermissionRequired": "تحتاج إلى إذن الكاميرا لالتقاط الصور", + "photoAlbumPermissionRequired": "تحتاج إلى إذن الألبوم لاختيار الصور", + "translationDetails": "تفاصيل الترجمة", + "originalImage": "الصورة الأصلية", + "sourceLanguage": "اللغة المصدر", + "targetLanguage": "اللغة الهدف", + "translationTime": "وقت الترجمة", + "shareInDevelopment": "وظيفة المشاركة قيد التطوير", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "ترجمة ملفات التسجيل", + "noAudioFiles": "لا توجد ملفات صوتية", + "calculating": "جاري الحساب...", + "playing": "جاري التشغيل...", + "paused": "متوقف مؤقتًا", + "clickToPlay": "انقر للتشغيل", + "rename": "إعادة تسمية", + "smartTranscription": "نسخ ذكي", + "renameAudioFile": "إعادة تسمية ملف الصوت", + "enterNewFileName": "يرجى إدخال اسم ملف جديد", + + // 翻译模块 - 翻译详情 + "originalRecord": "السجل الأصلي", + "recordSummary": "ملخص السجل", + "clickToGenerateSummary": "انقر على الزر أدناه لإنشاء ملخص الجلسة", + "summaryContent": "محتوى الملخص", + "copied": "تم النسخ", + "summaryCopiledToClipboard": "تم نسخ الملخص إلى الحافظة", + "extractSummary": "استخراج الملخص", + "summaryGenerated": "تم إنشاء الملخص", + "generating": "جاري الإنشاء...", + "regenerate": "إعادة الإنشاء", + "summaryTimeoutMessage": + "انتهت مهلة طلب إنشاء الملخص، قد يكون ذلك بسبب مشكلة في الشبكة أو انشغال الخادم.", + "deleteTranslationRecord": "حذف سجل الترجمة", + "deleteTranslationConfirm": + "هل أنت متأكد من أنك تريد حذف سجل الترجمة هذا؟ هذا الإجراء لا يمكن التراجع عنه.", + "originalText": "النص الأصلي", + "translatedText": "النص المترجم", + "sessionSummary": "ملخص الجلسة", + "cannotShare": "لا يمكن المشاركة", + "generateSummaryFirst": "يرجى إنشاء ملخص أولاً", + "translationSessionRecord": "سجل جلسة الترجمة", + + // 个人资料模块 "editProfile": "تعديل المعلومات الشخصية", "avatar": "صورة رمزية", "nickname": "لقب", @@ -919,8 +1077,6 @@ const Map arSA = { 'هل أنت متأكد من أنك تريد حذف حسابك نهائيًا؟ هذا الإجراء لا يمكن التراجع عنه', 'clean': 'مسح الذاكرة المؤقتة', 'cleanTips': 'هل أنت متأكد من أنك تريد مسح الذاكرة المؤقتة الشخصية؟', - - // Profile 错误信息 'networkConnectionFailed': 'فشل الاتصال بالشبكة، يرجى التحقق من إعدادات الشبكة والمحاولة مرة أخرى', 'serverTemporarilyUnavailable': @@ -937,10 +1093,6 @@ const Map arSA = { 'networkConnectionFailedCheckSettings': 'فشل الاتصال بالشبكة، يرجى التحقق من إعدادات الشبكة', 'serverInternalErrorRetryLater': 'خطأ داخلي في الخادم، يرجى المحاولة لاحقًا', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'فشل ضغط الصورة', 'avatarUpdateFailed': 'فشل تحديث الصورة الرمزية', 'usernameCannotBeEmpty': 'لا يمكن أن يكون اسم المستخدم فارغًا', @@ -951,8 +1103,6 @@ const Map arSA = { 'logoutFailedRetry': 'فشل تسجيل الخروج، يرجى المحاولة مرة أخرى', 'accountPermanentlyDeleted': 'تم حذف الحساب نهائيًا', 'deleteAccountFailedRetry': 'فشل حذف الحساب، يرجى المحاولة مرة أخرى', - - // 账号服务相关 'clearUserDataFailed': 'فشل تنظيف بيانات المستخدم', // 清理用户数据失败 'deleteUserDataFailed': 'فشل حذف بيانات المستخدم', // 删除用户数据失败 'thirdPartyLogoutSuccess': @@ -965,7 +1115,12 @@ const Map arSA = { 'تم تنظيف جميع بيانات المستخدم بنجاح', // 所有用户数据清理成功 'accountServiceInitialized': 'تمت تهيئة خدمة الحساب', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'تخزين', + 'meetingStoragePermissionExplanation': + 'نحتاج إلى الوصول إلى إذن التخزين حتى تتمكن من اختيار وتحميل ملفات الصوت.', + 'meetingStoragePermissionPermanentDenial': + 'تم اكتشاف أنك رفضت إذن التخزين بشكل دائم. للمتابعة في استخدام هذه الميزة، يرجى الانتقال إلى إعدادات التطبيق لتمكين إذن التخزين يدويًا.', 'getPermissionStatusFailed': 'فشل الحصول على حالة الإذن', 'communicationPermissions': 'أذونات الاتصال', 'bluetoothPermissions': 'أذونات البلوتوث', @@ -978,7 +1133,6 @@ const Map arSA = { 'phone': 'هاتف', 'sms': 'رسائل قصيرة', 'contacts': 'جهات الاتصال', - //'bluetooth': '蓝牙', 'notification': 'إشعار', 'alarm': 'منبه', 'calendarWrite': 'كتابة التقويم', @@ -1030,8 +1184,6 @@ const Map arSA = { 'permanentDenialText': 'لقد رفضت إذن {permission} بشكل دائم، يرجى الانتقال إلى إعدادات التطبيق لفتحه', 'goToSettings': 'الذهاب للإعدادات', - - // 权限申请 'bluetoothScan': 'مسح البلوتوث', 'bluetoothConnect': 'اتصال البلوتوث', 'bluetoothScanExplanation': @@ -1055,7 +1207,6 @@ const Map arSA = { 'لقد رفضت إذن الإشعارات بشكل دائم، يرجى الانتقال إلى الإعدادات لتمكينه.', 'locationPermissionPermanentDenial': 'لقد رفضت إذن الموقع بشكل دائم، يرجى الانتقال إلى الإعدادات لتمكينه.', -//'microphonePermission': '录音', 'storagePermission': 'تخزين', 'microphonePermissionExplanation': 'نحن بحاجة إلى إذن الميكروفون لتسجيل المحتوى الصوتي.', @@ -1065,6 +1216,12 @@ const Map arSA = { 'تم اكتشاف أنك رفضت إذن التسجيل بشكل دائم. للمتابعة في استخدام هذه الميزة، يرجى الانتقال إلى إعدادات التطبيق لتمكين إذن الميكروفون يدويًا.', 'storagePermissionPermanentDenial': 'تم اكتشاف أنك رفضت إذن التخزين بشكل دائم. للمتابعة في استخدام هذه الميزة، يرجى الانتقال إلى إعدادات التطبيق لتمكين إذن التخزين يدويًا.', + 'permissionUtilNeed': 'يحتاج ', + 'permissionUtilPermission': ' إذن', + 'permissionUtilRestricted': ' الإذن مقيد', + 'permissionUtilRestrictedMessage': + 'هذه الميزة غير متوفرة أو مقيدة على الجهاز الحالي، يرجى التحقق من إعدادات الجهاز أو قيود النظام', + 'permissionUtilConfirm': 'تأكيد', // 原生前台服务通知(Android) 'native.notification.appName': 'VOITRANS', // VOITRANS @@ -1081,15 +1238,7 @@ const Map arSA = { 'native.notification.music.pause': 'إيقاف مؤقت', // 暂停 'native.notification.qqMusic.playing': 'يتم تشغيل الموسيقى', // 正在播放音乐 - //permission_util.dart - 'permissionUtilNeed': 'يحتاج ', - 'permissionUtilPermission': ' إذن', - 'permissionUtilRestricted': ' الإذن مقيد', - 'permissionUtilRestrictedMessage': - 'هذه الميزة غير متوفرة أو مقيدة على الجهاز الحالي، يرجى التحقق من إعدادات الجهاز أو قيود النظام', - 'permissionUtilConfirm': 'تأكيد', - - // 版本更新对话框 + // 版本更新 'newVersionFound': 'تم العثور على إصدار جديد', // 版本更新对话框标题 'remindLater': 'تذكير لاحقًا', // 稍后提醒按钮 'updateNow': 'تحديث الآن', // 立即更新按钮 @@ -1100,251 +1249,7 @@ const Map arSA = { 'updateErrorRetry': 'حدث خطأ أثناء عملية التحديث، يرجى المحاولة لاحقًا', // 更新错误重试提示 - //国家列表 - "邮箱": "البريد الإلكتروني", - "中国": "الصين", - "美国": "الولايات المتحدة", - "加拿大": "كندا", - "俄罗斯": "روسيا", - "英国": "المملكة المتحدة", - "德国": "ألمانيا", - "意大利": "إيطاليا", - "法国": "فرنسا", - "西班牙": "إسبانيا", - "南非": "جنوب أفريقيا", - "沙特阿拉伯": "المملكة العربية السعودية", - "土耳其": "تركيا", - "日本": "اليابان", - "韩国": "كوريا الجنوبية", - "新加坡": "سنغافورة", - "马来西亚": "ماليزيا", - "泰国": "تايلاند", - "越南": "فيتنام", - "印度": "الهند", - "巴基斯坦": "باكستان", - "菲律宾": "الفلبين", - "印度尼西亚": "إندونيسيا", - "阿联酋": "الإمارات العربية المتحدة", - "墨西哥": "المكسيك", - "巴西": "البرازيل", - "阿根廷": "الأرجنتين", - "澳大利亚": "أستراليا", - "新西兰": "نيوزيلندا", - "中国香港": "هونغ كونغ، الصين", - "中国澳门": "ماكاو، الصين", - "中国台湾": "تايوان، الصين", - "埃及": "مصر", - "希腊": "اليونان", - "荷兰": "هولندا", - "比利时": "بلجيكا", - "匈牙利": "المجر", - "罗马尼亚": "رومانيا", - "瑞士": "سويسرا", - "奥地利": "النمسا", - "丹麦": "الدانمرك", - "瑞典": "السويد", - "挪威": "النرويج", - "波兰": "بولندا", - "秘鲁": "بيرو", - "智利": "تشيلي", - "哥伦比亚": "كولومبيا", - "委内瑞拉": "فنزويلا", - "葡萄牙": "البرتغال", - "卢森堡": "لوكسمبورغ", - "爱尔兰": "أيرلندا", - "冰岛": "أيسلندا", - "阿尔巴尼亚": "ألبانيا", - "马耳他": "مالطا", - "塞浦路斯": "قبرص", - "芬兰": "فنلندا", - "保加利亚": "بلغاريا", - "立陶宛": "ليتوانيا", - "拉脱维亚": "لاتفيا", - "爱沙尼亚": "إستونيا", - "乌克兰": "أوكرانيا", - "塞尔维亚": "صربيا", - "克罗地亚": "كرواتيا", - "斯洛文尼亚": "سلوفينيا", - "捷克": "جمهورية التشيك", - "斯洛伐克": "سلوفاكيا", - "危地马拉": "غواتيمالا", - "萨尔瓦多": "السلفادور", - "洪都拉斯": "هندوراس", - "尼加拉瓜": "نيكاراغوا", - "哥斯达黎加": "كوستاريكا", - "巴拿马": "بنما", - "海地": "هايتي", - "玻利维亚": "بوليفيا", - "厄瓜多尔": "الإكوادور", - "巴拉圭": "باراغواي", - "乌拉圭": "أوروغواي", - "摩洛哥": "المغرب", - "阿尔及利亚": "الجزائر", - "突尼斯": "تونس", - "尼日利亚": "نيجيريا", - "加纳": "غانا", - "埃塞俄比亚": "إثيوبيا", - "肯尼亚": "كينيا", - "坦桑尼亚": "تنزانيا", - "乌干达": "أوغندا", - "孟加拉国": "بنغلاديش", - "以色列": "إسرائيل", - "黎巴嫩": "لبنان", - "约旦": "الأردن", - "伊拉克": "العراق", - "科威特": "الكويت", - "巴林": "البحرين", - "卡塔尔": "قطر", - "阿曼": "عمان", - "阿富汗": "أفغانستان", - "斯里兰卡": "سريلانكا", - "缅甸": "ميانمار", - "尼泊尔": "نيبال", - "蒙古": "منغوليا", - "柬埔寨": "كمبوديا", - "老挝": "لاوس", - "文莱": "بروناي", - "东帝汶": "تيمور الشرقية", - "斐济": "فيجي", - "所罗门群岛": "جزر سليمان", - "刚果民主共和国": "جمهورية الكونغو الديمقراطية", - "安哥拉": "أنغولا", - "苏丹": "السودان", - "马尔代夫": "المالديف", - "不丹": "بوتان", - "摩纳哥": "موناكو", - "圣马力诺": "سان مارينو", - "牙买加": "جامايكا", - "巴哈马": "جزر البهاما", - "巴布亚新几内亚": "بابوا غينيا الجديدة", - "萨摩亚": "ساموا", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "ترجمة الصور", - "textTranslation": "ترجمة النصوص", - - // 翻译主页 (translation_view.dart) - "translationHistory": "سجل الترجمة", - "enableRecording": "هل تريد تمكين التسجيل", - "viewAudioFiles": "عرض ملفات التسجيل", - "headsetUser": "مستخدم سماعة الرأس", - "phoneUser": "مستخدم الهاتف", - "selectSourceLanguage": "اختر اللغة المصدر", - "selectTargetLanguage": "اختر اللغة الهدف", - "me": "أنا", - "counterPart": "الطرف الآخر", - "bluetoothCallStateError": - "يرجى التأكد من توصيل سماعة البلوتوث بالهاتف وفي حالة الاتصال", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "كشف تلقائي", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "فشل اكتشاف اللغة", - "translationFailed": "فشلت الترجمة", - "pleaseInputText": "يرجى إدخال النص", - "textTooLong": "النص طويل جدًا، بحد أقصى 5000 حرف", - - // 翻译历史页 - "noTranslationHistory": "لا يوجد سجل تاريخي", - "historyRecords": "السجلات التاريخية", - "clearResults": "مسح النتائج", - "clearHistory": "مسح السجل", - "clearHistoryConfirm": - "هل أنت متأكد من أنك تريد مسح كل سجل الترجمة؟ هذا الإجراء لا يمكن التراجع عنه.", - "unknownLanguage": "لغة غير معروفة", - "deleteSessionRecord": "حذف سجل الجلسة", - "deleteSessionConfirm": - "هل أنت متأكد من أنك تريد حذف جميع سجلات الترجمة لهذه الجلسة؟ هذا الإجراء لا يمكن التراجع عنه.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "اختر مصدر الصورة", - "imagePreview": "معاينة الصورة", - "translationResult": "نتيجة الترجمة", - "recognitionResult": "نتيجة التعرف", - "translatedImagePreview": "معاينة الصورة المترجمة", - "translatedImageLoadFailed": "فشل تحميل الصورة المترجمة", - "pleaseSelectImage": "يرجى اختيار صورة", - "imageLoadFailed": "فشل تحميل الصورة", - "imageQuality": "جودة الصورة", - "maxSize": "الحجم الأقصى", - "close": "إغلاق", - "setImageQuality": "تعيين جودة الصورة", - "currentQuality": "الجودة الحالية: @value%", - "setMaxSize": "تعيين الحجم الأقصى", - "currentMaxSize": "الحالي: @pxpx", - "waitingForAction": "في انتظار الإجراء", - "pleaseSelectImageToStart": "يرجى اختيار صورة للبدء", - "chooseImage": "اختر صورة", - "openingCamera": "جاري فتح الكاميرا...", - "openingPhotoAlbum": "جاري فتح ألبوم الصور...", - "cancelled": "تم الإلغاء", - "userCancelledSelection": "ألغى المستخدم الاختيار", - "translatingImage": "جاري ترجمة الصورة", - "callingImageTranslateService": "جاري استدعاء خدمة ترجمة الصور...", - "savingRecord": "جاري حفظ السجل", - "savingTranslationResult": "جاري حفظ نتيجة الترجمة...", - "translationCompleted": "اكتملت الترجمة", - "allStepsCompleted": "اكتملت جميع الخطوات", - "processingFailed": "فشلت المعالجة", - "imageProcessingOrTranslationFailed": - "فشلت معالجة الصورة أو الترجمة، يرجى إعادة المحاولة.\nمعلومات الخطأ: {error}", - "imageTooLarge": "حجم الصورة يتجاوز حد 4 ميجابايت", - "imageTooLargeHint": - "حجم الصورة يتجاوز حد 4 ميجابايت، يرجى تقليل الجودة أو الحجم والمحاولة مرة أخرى", - "emptyTranslationResult": "أعادت واجهة ترجمة الصور نتيجة فارغة", - "imageTranslationFailedTryLater": - "فشلت ترجمة الصورة، الأسباب المحتملة: شذوذ في الشبكة أو تحديد معدل الواجهة، يرجى المحاولة لاحقًا", - "imageTranslationApiException": - "استثناء في استدعاء واجهة ترجمة الصور، يرجى التحقق من الشبكة والمحاولة مرة أخرى", - "permissionRequired": "متطلبات الإذن", - "cameraPermissionRequired": "تحتاج إلى إذن الكاميرا لالتقاط الصور", - "photoAlbumPermissionRequired": "تحتاج إلى إذن الألبوم لاختيار الصور", - "translationDetails": "تفاصيل الترجمة", - "originalImage": "الصورة الأصلية", - "sourceLanguage": "اللغة المصدر", - "targetLanguage": "اللغة الهدف", - "translationTime": "وقت الترجمة", - "shareInDevelopment": "وظيفة المشاركة قيد التطوير", - - // 翻译录音文件列表页 - "translateAudioFiles": "ترجمة ملفات التسجيل", - "noAudioFiles": "لا توجد ملفات صوتية", - "calculating": "جاري الحساب...", - "playing": "جاري التشغيل...", - "paused": "متوقف مؤقتًا", - "clickToPlay": "انقر للتشغيل", - "rename": "إعادة تسمية", - "smartTranscription": "نسخ ذكي", - "renameAudioFile": "إعادة تسمية ملف الصوت", - "enterNewFileName": "يرجى إدخال اسم ملف جديد", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "السجل الأصلي", - "recordSummary": "ملخص السجل", - "clickToGenerateSummary": "انقر على الزر أدناه لإنشاء ملخص الجلسة", - "summaryContent": "محتوى الملخص", - "copied": "تم النسخ", - "summaryCopiledToClipboard": "تم نسخ الملخص إلى الحافظة", - "extractSummary": "استخراج الملخص", - "summaryGenerated": "تم إنشاء الملخص", - "generating": "جاري الإنشاء...", - "regenerate": "إعادة الإنشاء", - "summaryTimeoutMessage": - "انتهت مهلة طلب إنشاء الملخص، قد يكون ذلك بسبب مشكلة في الشبكة أو انشغال الخادم.", - "deleteTranslationRecord": "حذف سجل الترجمة", - "deleteTranslationConfirm": - "هل أنت متأكد من أنك تريد حذف سجل الترجمة هذا؟ هذا الإجراء لا يمكن التراجع عنه.", - "originalText": "النص الأصلي", - "translatedText": "النص المترجم", - "sessionSummary": "ملخص الجلسة", - "cannotShare": "لا يمكن المشاركة", - "generateSummaryFirst": "يرجى إنشاء ملخص أولاً", - "translationSessionRecord": "سجل جلسة الترجمة", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "اقتران الجهاز", "connectYourDeepSoundHeadset": "قم بتوصيل سماعة Voitrans الخاصة بك", "bind": "ربط", @@ -1353,14 +1258,11 @@ const Map arSA = { "autoInputCode": "إدخال الرمز تلقائيًا", "skipBinding": "تخطي الربط", "rescan": "إعادة المسح", - "verifyingDevice": "جاري التحقق من الجهاز...", "confirmBinding": "تأكيد الربط", "associatingDevice": "جاري ربط الجهاز...", "goToBluetoothSettings": "الانتقال إلى إعدادات البلوتوث", 'bluetooth': 'بلوتوث', - - // 配对状态文本 "readyToPair": "جاهز لبدء الاقتران", "preparingPairingEnvironment": "جاري تحضير بيئة الاقتران...", "connectDeepSoundViaSystemBluetooth": @@ -1370,8 +1272,6 @@ const Map arSA = { "waitingCompletePairing": "يرجى الانتظار، جاري إكمال الاقتران...", "pairingSuccessRedirecting": "نجح الاقتران! سيتم التوجيه إلى الصفحة الرئيسية قريبًا...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "الجهاز المستخدم حاليًا: %s، يرجى التأكد من توصيل جهاز يدعمه Voitrans", "deviceAlreadyBoundToOtherAccount": "هذا الجهاز مرتبط بالفعل بحساب آخر", @@ -1381,19 +1281,12 @@ const Map arSA = { "networkError": "خطأ في الشبكة", "authorizationFailedCheckCode": "فشل التفويض، يرجى التحقق من صحة رمز التفويض", "pairingFailedRetry": "فشل الاقتران، يرجى المحاولة مرة أخرى", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'يرجى تمكين البلوتوث', 'deviceDisconnected': 'تم فصل الجهاز', 'readyToStartPairing': 'جاهز لبدء الاقتران', 'checkingEnvironment': 'جاري فحص البيئة...', 'ensureHeadsetOnAndPairingMode': 'يرجى التأكد من تشغيل سماعة الرأس وفي وضع الاقتران', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'جاري إنشاء اتصال آمن...', 'needManualBindingAuthCode': 'مطلوب رمز تفويض الربط اليدوي...', 'pairingSuccessful': 'نجح الاقتران!', @@ -1414,8 +1307,6 @@ const Map arSA = { 'bleConnectionFailed': 'فشل اتصال BLE', 'deviceAuthorizationFailedCheckCode': 'فشل تفويض الجهاز، يرجى التحقق من رمز التفويض', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'يجب تمكين البلوتوث يدويًا', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'يرجى اتباع الخطوات التالية:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1428,7 +1319,18 @@ const Map arSA = { 'نصيحة: يمكنك أيضًا الضغط لفترة طويلة على أيقونة البلوتوث في مركز التحكم للوصول بسرعة إلى إعدادات البلوتوث', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'أنا أعرف', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "تاريخ الانتهاء:", + "notActivated": "غير مفعل", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "ملاحظات المستخدم", 'feedbackInfo': 'قدم ملاحظات أو اقتراحات', 'feedbackDescription': 'يرجى وصف المشكلة التي واجهتها أو اقتراحك', @@ -1469,7 +1371,7 @@ const Map arSA = { "removeEarbudsEnsureBattery": "أخرج السماعتين، وتأكد من أن مستوى البطارية أعلى من 20%", - // 音乐列表页面 + // 音乐模块 "noMusic": "لا توجد موسيقى", // 暂无音乐 "noPlayingMusic": "لا توجد موسيقى قيد التشغيل", // 暂无播放音乐 "unknownSong": "أغنية غير معروفة", // 未知歌曲 @@ -1517,22 +1419,122 @@ const Map arSA = { "波斯语": "الفارسية", "斯瓦希里语": "السواحيلية", - // 时间相关 - "justNow": "الآن", - "minutesAgo": "قبل @minutes دقيقة", - "yesterday": "أمس", - // 时间扩展(图片翻译模块使用) - "daysAgo": "قبل @days يوم", - "hoursAgo": "قبل @hours ساعة", - - //补充 - "insufficientIntegral": "نقاط غير كافية", - - //余额不足弹窗 - "insufficientBalanceDesc": - "الرصيد غير كافٍ، يرجى الانتقال إلى صفحة الشحن المقابلة للشحن", - "recharge": "الذهاب للشحن", - // 会员到期提示 - "aiMemberExpiredDesc": - "انتهت عضوية AI، يرجى الانتقال إلى شحن العضوية للتجديد", + // 国家列表 + "邮箱": "البريد الإلكتروني", + "中国": "الصين", + "美国": "الولايات المتحدة", + "加拿大": "كندا", + "俄罗斯": "روسيا", + "英国": "المملكة المتحدة", + "德国": "ألمانيا", + "意大利": "إيطاليا", + "法国": "فرنسا", + "西班牙": "إسبانيا", + "南非": "جنوب أفريقيا", + "沙特阿拉伯": "المملكة العربية السعودية", + "土耳其": "تركيا", + "日本": "اليابان", + "韩国": "كوريا الجنوبية", + "新加坡": "سنغافورة", + "马来西亚": "ماليزيا", + "泰国": "تايلاند", + "越南": "فيتنام", + "印度": "الهند", + "巴基斯坦": "باكستان", + "菲律宾": "الفلبين", + "印度尼西亚": "إندونيسيا", + "阿联酋": "الإمارات العربية المتحدة", + "墨西哥": "المكسيك", + "巴西": "البرازيل", + "阿根廷": "الأرجنتين", + "澳大利亚": "أستراليا", + "新西兰": "نيوزيلندا", + "中国香港": "هونغ كونغ، الصين", + "中国澳门": "ماكاو، الصين", + "中国台湾": "تايوان، الصين", + "埃及": "مصر", + "希腊": "اليونان", + "荷兰": "هولندا", + "比利时": "بلجيكا", + "匈牙利": "المجر", + "罗马尼亚": "رومانيا", + "瑞士": "سويسرا", + "奥地利": "النمسا", + "丹麦": "الدانمرك", + "瑞典": "السويد", + "挪威": "النرويج", + "波兰": "بولندا", + "秘鲁": "بيرو", + "智利": "تشيلي", + "哥伦比亚": "كولومبيا", + "委内瑞拉": "فنزويلا", + "葡萄牙": "البرتغال", + "卢森堡": "لوكسمبورغ", + "爱尔兰": "أيرلندا", + "冰岛": "أيسلندا", + "阿尔巴尼亚": "ألبانيا", + "马耳他": "مالطا", + "塞浦路斯": "قبرص", + "芬兰": "فنلندا", + "保加利亚": "بلغاريا", + "立陶宛": "ليتوانيا", + "拉脱维亚": "لاتفيا", + "爱沙尼亚": "إستونيا", + "乌克兰": "أوكرانيا", + "塞尔维亚": "صربيا", + "克罗地亚": "كرواتيا", + "斯洛文尼亚": "سلوفينيا", + "捷克": "جمهورية التشيك", + "斯洛伐克": "سلوفاكيا", + "危地马拉": "غواتيمالا", + "萨尔瓦多": "السلفادور", + "洪都拉斯": "هندوراس", + "尼加拉瓜": "نيكاراغوا", + "哥斯达黎加": "كوستاريكا", + "巴拿马": "بنما", + "海地": "هايتي", + "玻利维亚": "بوليفيا", + "厄瓜多尔": "الإكوادور", + "巴拉圭": "باراغواي", + "乌拉圭": "أوروغواي", + "摩洛哥": "المغرب", + "阿尔及利亚": "الجزائر", + "突尼斯": "تونس", + "尼日利亚": "نيجيريا", + "加纳": "غانا", + "埃塞俄比亚": "إثيوبيا", + "肯尼亚": "كينيا", + "坦桑尼亚": "تنزانيا", + "乌干达": "أوغندا", + "孟加拉国": "بنغلاديش", + "以色列": "إسرائيل", + "黎巴嫩": "لبنان", + "约旦": "الأردن", + "伊拉克": "العراق", + "科威特": "الكويت", + "巴林": "البحرين", + "卡塔尔": "قطر", + "阿曼": "عمان", + "阿富汗": "أفغانستان", + "斯里兰卡": "سريلانكا", + "缅甸": "ميانمار", + "尼泊尔": "نيبال", + "蒙古": "منغوليا", + "柬埔寨": "كمبوديا", + "老挝": "لاوس", + "文莱": "بروناي", + "东帝汶": "تيمور الشرقية", + "斐济": "فيجي", + "所罗门群岛": "جزر سليمان", + "刚果民主共和国": "جمهورية الكونغو الديمقراطية", + "安哥拉": "أنغولا", + "苏丹": "السودان", + "马尔代夫": "المالديف", + "不丹": "بوتان", + "摩纳哥": "موناكو", + "圣马力诺": "سان مارينو", + "牙买加": "جامايكا", + "巴哈马": "جزر البهاما", + "巴布亚新几内亚": "بابوا غينيا الجديدة", + "萨摩亚": "ساموا", }; diff --git a/lib/core/translations/language/bg_bg.dart b/lib/core/translations/language/bg_bg.dart index fc24ba982..33df7640b 100644 --- a/lib/core/translations/language/bg_bg.dart +++ b/lib/core/translations/language/bg_bg.dart @@ -1,4 +1,5 @@ const Map bgBG = { + // 通用 'continue': 'Продължи', 'confirm': 'Потвърди', @@ -18,6 +19,11 @@ const Map bgBG = { "unknownError": "Неизвестна грешка", "asrConnectionFailed": "Неуспешно свързване с услугата за разпознаване на реч. Проверете мрежата или опитайте отново по-късно.", + "justNow": "Току-що", + "minutesAgo": "преди @minutes минути", + "yesterday": "Вчера", + "daysAgo": "преди @days дни", + "hoursAgo": "преди @hours часа", // 启动页 "slogan": "Свързвайки света, отвъд звука", @@ -28,7 +34,7 @@ const Map bgBG = { "explore": "Изследвай", "settings": "Настройки", - // 语言 + // 语言列表 "followingSystem": "Следвай системата", "chinese": "Китайски", "english": "Английски", @@ -72,7 +78,7 @@ const Map bgBG = { "arabic": "Арабски", "persian": "Фарски", - // 登录页 + // 登录模块 "welcome": "Добре дошли", "loginTips": "Моля, влезте или се регистрирайте с телефонен номер или имейл", "accountNumber": "Телефонен номер или имейл", @@ -100,13 +106,9 @@ const Map bgBG = { "resendVerificationCode": "Изпрати отново кода за потвърждение", "login": "Влизане", "usePasswordLogin": "Използвай влизане с парола", - - // 隐私政策弹窗 "loginDeclaration": "Декларация на Voitrans", // Voitrans 声明 "welcomeToThisApp": "Добре дошли в Voitrans, моля прочетете внимателно", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ". Кликването на 'Съгласявам се и влизам' означава, че сте прочели напълно и се съгласявате с горните споразумения. Кликването на 'Не се съгласявам' ще затвори приложението.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Не се съгласявам", // 不同意 @@ -165,7 +167,7 @@ const Map bgBG = { 'checkConnectionStatusFailed': 'Неуспешна проверка на състоянието на връзката', -// 发现页 + // 发现页 "searchAi": "Търсене на AI функции...", "exploreSlogan": "Интелигентни слушалки, безгранични възможности", "exploreSlogan1": "Интелигентен спътник, безгранични възможности", @@ -189,6 +191,7 @@ const Map bgBG = { "usageStats": "Статистика за използване", "usageStatsInfo": "Прегледвайте статистика за използване на приложението", "scene": "Сценарии", + // 用量统计模块 "aiChat": "AI чат", "translationStats": "Статистика за преводи", @@ -209,7 +212,6 @@ const Map bgBG = { "translationApi": "API за превод", "asr": "Разпознаване на реч", "tts": "Синтез на реч", - //"aiSummary": "AI резюме", "dataVolumeStats": "Статистика за обем данни", "sourceTextCharacters": "Символи в изходния текст", "ttsTextCharacters": "Символи в TTS текст", @@ -226,7 +228,6 @@ const Map bgBG = { "totalAudioDuration": "Обща продължителност на аудиото", "audioFileSize": "Размер на аудио файла", "transcriptBytes": "Байтове на транскрипцията", - // 通知文案 "loadFailed": "Неуспешно зареждане", "statsLoadFailedTryLater": "Неуспешно зареждане на статистиката. Моля, опитайте отново по-късно.", @@ -235,88 +236,79 @@ const Map bgBG = { "exportFeature": "Функция за експорт", "exportInDevelopment": "Експортът на данни е в процес на разработка", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Налични пакети', 'remainingQuota': 'Оставаща квота', 'totalQuota': 'Обща квота', 'remaining': 'Оставащо', 'featureDescription': 'Описание на функцията', - // AI 功能卡片 + 'paymentSuccess': 'Успешно плащане', + 'paymentFailed': 'Неуспешно плащане', + 'gotIt': 'Разбрах', + 'paymentFailedTryAgain': 'Неуспешно плащане. Моля, опитайте отново.', + 'selectPaymentMethod': 'Изберете начин на плащане', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Неуспешно създаване на поръчка в WeChat', + 'alipayOrderCreateFailed': 'Неуспешно създаване на поръчка в Alipay', + 'appleOrderCreateFailed': 'Неуспешно създаване на поръчка в Apple', + 'googleOrderCreateFailed': 'Неуспешно създаване на поръчка в Google', + 'paypalOrderCreateFailed': 'Неуспешно създаване на поръчка в PayPal', + 'paymentException': 'Изключение при плащане', + 'paymentLaunchFailed': 'Неуспешно стартиране на плащане', + 'paymentExceptionWithError': 'Изключение при плащане: @error', + 'paymentProcessingCheckLater': 'Вашата поръчка се обработва. Моля, проверете по-късно.', + 'paymentResultQueryException': 'Неуспешно запитване за резултат от плащане: @error', + 'orderConfirmedQuotaRefreshed': 'Поръчката е потвърдена. Вашата квота е обновена.', + 'paymentCompletedConfirming': 'Плащането е завършено. Потвърждаване…', + 'paymentCancelled': 'Плащането е отменено', + 'paypalOpenedCompleteInBrowser': 'PayPal е отворен. Моля, завършете плащането в браузъра.', + 'paypalOpenFailed': 'Не може да се отвори страницата за плащане с PayPal', + 'paymentTestTitle': 'Тест на плащане', + 'paymentTestOrderInfo': 'Информация за тестова поръчка', + 'paymentTestProductId': 'ID на продукта', + 'paymentTestProductDescription': 'Описание на продукта', + 'paymentTestWechatDescription': 'Тест на плащане с WeChat', + 'paymentTestAlipayDescription': 'Тест на плащане с Alipay', + 'paymentTestAmount': 'Сума', + 'paymentTestSelectAmount': 'Изберете тестова сума', + 'paying': 'Плащане...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Статус на плащането', + 'errorInfoWithMessage': 'Грешка: @message', + 'retest': 'Тестирай отново', + 'paymentTestInstructionsTitle': 'Инструкции', + 'paymentTestInstructionsContent': '1. Изберете тестова сума (препоръчително: ¥0.01)\n2. Натиснете бутона за плащане, за да започнете\n3. Завършете плащането в приложението за плащане\n4. Върнете се, за да проверите резултата', + 'startingWechatPayment': 'Стартиране на WeChat Pay...', + 'startingAlipayPayment': 'Стартиране на Alipay...', + 'wechatPaymentSuccess': 'Успешно плащане с WeChat Pay!', + 'wechatPaymentFailed': 'Неуспешно плащане с WeChat Pay', + 'wechatPaymentLaunchFailed': 'Неуспешно стартиране на WeChat Pay', + 'cannotLaunchWechatPayment': 'Не може да се стартира WeChat Pay', + 'wechatPaymentException': 'Изключение в WeChat Pay', + 'wechatPaymentTestCompleted': 'Тестът на плащане с WeChat Pay е завършен', + 'alipayPaymentSuccess': 'Успешно плащане с Alipay!', + 'alipayPaymentFailed': 'Неуспешно плащане с Alipay', + 'alipayPaymentLaunchFailed': 'Неуспешно стартиране на Alipay', + 'cannotLaunchAlipayPayment': 'Не може да се стартира Alipay', + 'alipayPaymentException': 'Изключение в Alipay', + "insufficientIntegral": "Недостатъчно точки", + "insufficientBalanceDesc": + 'Недостатъчен баланс, моля отидете на съответната страница за презареждане.', + "recharge": 'Отиди към презареждане', + "aiMemberExpiredDesc": + 'AI членството изтече, моля отидете на страницата за презареждане на членство за подновяване.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Музика и препоръки', 'navigationAndRoutes': 'Навигация и маршрути', 'nearbySearch': 'Търсене наблизо', 'newsInformation': 'Новини', 'communicationAssistant': 'Комуникационен асистент', - // 翻译功能卡片 - 'realtimeTranscription': 'Транскрипция в реално време', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Сценариен речник', - 'subtitleDisplay': 'Субтитри', - // 会议功能卡片 - 'meetingRecording': 'Запис на среща', - 'transcriptionAndSummary': 'Транскрипция и резюме', - 'keywordSearch': 'Търсене по ключови думи', - 'collaborationSharing': 'Сътрудничество и споделяне', - // 商品名称(按ID) - 'ai_001_name': 'AI Базов 100', - 'ai_002_name': 'AI Базов 500', - 'ai_003_name': 'AI Базов 1000', - 'meet_001_name': 'Среща Базов 100', - 'meet_002_name': 'Среща Базов 500', - 'meet_003_name': 'Среща Базов 1000', - 'trans_001_name': 'Превод Базов 100', - 'trans_002_name': 'Превод Базов 500', - 'trans_003_name': 'Превод Базов 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Включва 100 използвания. Достъп до основни AI функции.', - 'ai_002_desc': 'Включва 500 използвания. Достъп до основни AI функции.', - 'ai_003_desc': 'Включва 1000 използвания. Достъп до основни AI функции.', - 'meet_001_desc': 'Включва 100 записа/транскрипции на срещи.', - 'meet_002_desc': 'Включва 500 записа/транскрипции на срещи.', - 'meet_003_desc': 'Включва 1000 записа/транскрипции на срещи.', - 'trans_001_desc': 'Включва 100 превода (глас/текст).', - 'trans_002_desc': 'Включва 500 превода (глас/текст).', - 'trans_003_desc': 'Включва 1000 превода (глас/текст).', - -// 商品页通用页脚 - 'appNameProvider': 'Приложение: VoiTrans · Предоставено от: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP обслужване на клиенти QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Аудио запис, транскрипция, търсене по ключови думи и автоматично резюме за повишаване на ефективността на срещите.', - 'meetingHeaderDesc2': - 'Подходящо за бизнес срещи, записки в клас и протоколи от интервюта.', - 'meetingAutoRecording': 'Автоматичен запис и сегментиране', - 'meetingSpeakerTagging': 'Етикетиране на говорителите', - 'meetingLongAudioTranscription': 'Транскрипция на дълго аудио', - 'meetingKeyPointSummary': 'Извличане на ключови точки', - 'meetingTopicNameSearch': 'Търсене по тема/име', - 'meetingTimelineJump': 'Скок във времевата линия', - 'meetingExportSummary': 'Експорт на протоколи', - 'meetingMultiPlatformShare': 'Споделяне между платформи', - 'meetingDisclaimer': - 'Използвайте в тиха среда; производителността зависи от микрофона и мрежата.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Едновременен превод в реално време и текстов превод с глас с ниска латентност.', - 'transHeaderDesc2': 'Подходящо за пътуване, бизнес, речи и обучение.', - 'translateZhEn': 'Китайско-английски превод', - 'lowLatencyVoiceBroadcast': 'Гласово излъчване с ниска латентност', - 'multiLangTextTranslation': 'Многоезичен текстов превод', - 'termOptimizationContextPreserve': - 'Оптимизация на терминологията и запазване на контекста', - 'lexiconTourBusinessLife': 'Речници за пътуване/бизнес/живот', - 'personalVocabularyMemory': 'Лична памет за речник', - 'conversationSubtitleLargeText': 'Субтитри за разговор / Режим с голям текст', - 'colorHighContrast': 'Висок цветови контраст', - 'transDisclaimer': - 'Производителността на превода зависи от микрофона, мрежовата латентност и околния шум.', - - // AI 商品页描述 'aiHeaderDesc1': 'По-голяма квота за разговори, повече повиквания на инструменти, удължена дължина на контекста.', 'aiHeaderDesc2': @@ -342,7 +334,46 @@ const Map bgBG = { 'aiDisclaimer': 'Функциите зависят от разрешенията на устройството, наличността на услугата и мрежовите условия.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Транскрипция в реално време', + 'sceneLexicon': 'Сценариен речник', + 'subtitleDisplay': 'Субтитри', + 'transHeaderDesc1': + 'Едновременен превод в реално време и текстов превод с глас с ниска латентност.', + 'transHeaderDesc2': 'Подходящо за пътуване, бизнес, речи и обучение.', + 'translateZhEn': 'Китайско-английски превод', + 'lowLatencyVoiceBroadcast': 'Гласово излъчване с ниска латентност', + 'multiLangTextTranslation': 'Многоезичен текстов превод', + 'termOptimizationContextPreserve': + 'Оптимизация на терминологията и запазване на контекста', + 'lexiconTourBusinessLife': 'Речници за пътуване/бизнес/живот', + 'personalVocabularyMemory': 'Лична памет за речник', + 'conversationSubtitleLargeText': 'Субтитри за разговор / Режим с голям текст', + 'colorHighContrast': 'Висок цветови контраст', + 'transDisclaimer': + 'Производителността на превода зависи от микрофона, мрежовата латентност и околния шум.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Запис на среща', + 'transcriptionAndSummary': 'Транскрипция и резюме', + 'keywordSearch': 'Търсене по ключови думи', + 'collaborationSharing': 'Сътрудничество и споделяне', + 'meetingHeaderDesc1': + 'Аудио запис, транскрипция, търсене по ключови думи и автоматично резюме за повишаване на ефективността на срещите.', + 'meetingHeaderDesc2': + 'Подходящо за бизнес срещи, записки в клас и протоколи от интервюта.', + 'meetingAutoRecording': 'Автоматичен запис и сегментиране', + 'meetingSpeakerTagging': 'Етикетиране на говорителите', + 'meetingLongAudioTranscription': 'Транскрипция на дълго аудио', + 'meetingKeyPointSummary': 'Извличане на ключови точки', + 'meetingTopicNameSearch': 'Търсене по тема/име', + 'meetingTimelineJump': 'Скок във времевата линия', + 'meetingExportSummary': 'Експорт на протоколи', + 'meetingMultiPlatformShare': 'Споделяне между платформи', + 'meetingDisclaimer': + 'Използвайте в тиха среда; производителността зависи от микрофона и мрежата.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Преглед на предимствата', 'higherQuota': 'По-висока квота за използване', 'lowerUnitPrice': 'По-ниска единична цена', @@ -358,7 +389,32 @@ const Map bgBG = { 'vipDisclaimer': 'Действителните предимства зависят от детайлите на пакета и могат да се променят с версиите.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Базов 100', + 'ai_002_name': 'AI Базов 500', + 'ai_003_name': 'AI Базов 1000', + 'meet_001_name': 'Среща Базов 100', + 'meet_002_name': 'Среща Базов 500', + 'meet_003_name': 'Среща Базов 1000', + 'trans_001_name': 'Превод Базов 100', + 'trans_002_name': 'Превод Базов 500', + 'trans_003_name': 'Превод Базов 1000', + 'ai_001_desc': 'Включва 100 използвания. Достъп до основни AI функции.', + 'ai_002_desc': 'Включва 500 използвания. Достъп до основни AI функции.', + 'ai_003_desc': 'Включва 1000 използвания. Достъп до основни AI функции.', + 'meet_001_desc': 'Включва 100 записа/транскрипции на срещи.', + 'meet_002_desc': 'Включва 500 записа/транскрипции на срещи.', + 'meet_003_desc': 'Включва 1000 записа/транскрипции на срещи.', + 'trans_001_desc': 'Включва 100 превода (глас/текст).', + 'trans_002_desc': 'Включва 500 превода (глас/текст).', + 'trans_003_desc': 'Включва 1000 превода (глас/текст).', + + // 商品模块 - 页脚 + 'appNameProvider': 'Приложение: VoiTrans · Предоставено от: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP обслужване на клиенти QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "Прескочи", 'next': 'Напред', 'sayLilyHint': 'Кажете "Lily Lily" на микрофона', @@ -370,7 +426,6 @@ const Map bgBG = { 'guideAwakenSuccess': 'Страхотно! Lily е будна—помолете я за помощ.', 'confirmInput': 'Потвърди въвеждането', 'guideClickSendPrefix': 'Натиснете изпрати, ', - // AI 引导步骤 'guideWeatherStart': 'Кажете на Lily: "Какво е времето днес?"', 'guideWeatherInput': 'Какво е времето днес?', 'guideWeatherSend': 'Lily ще докладва времето в реално време', @@ -399,7 +454,7 @@ const Map bgBG = { 'guideSmsSend': 'Lily ще изпрати съобщението', 'guideSmsEnd': 'Съобщението е изпратено—гласовият контрол е удобен', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Започни среща", 'edit': 'Редактирай', 'delete': 'Изтрий', @@ -411,8 +466,6 @@ const Map bgBG = { 'recordingDetails': 'Детайли на записа', 'aiSummary': 'AI резюме', 'meetingTranscript': 'Протокол от срещата', - - // Meeting模块 - 导航和基础功能 'files': 'Файлове', 'mine': 'Мои', 'connect': 'Свържи', @@ -464,7 +517,6 @@ const Map bgBG = { 'summarizing': 'Обобщаване...', 'analyzing': 'Анализиране...', 'summaryComplete': 'Обобщението завърши', - //'generating': '正在生成...', 'generate': 'Генерирай', 'overview': 'Преглед', 'transcription': 'Транскрипция', @@ -473,6 +525,97 @@ const Map bgBG = { 'editSpeaker': 'Редактирай', 'nameSpeaker': 'Име на говорител', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Избери шаблон за резюме', + 'useThisTemplate': 'Използвай този шаблон', + 'lastUsed': 'Последно използвано', + 'create': 'Създай', + 'templateDetails': 'Детайли на шаблона', + 'tag': 'Етикет', + 'description': 'Описание', + 'template': 'Шаблон', + 'deleteTemplate': 'Изтрий шаблон', + 'deleteTemplateConfirm': 'Сигурни ли сте, че искате да изтриете този шаблон?', + 'editTemplate': 'Редактирай шаблон', + 'createTemplate': 'Създай шаблон', + 'name': 'Име', + 'templateContentHint': 'Моля, въведете съдържание на шаблона! Съвет: Натиснете бутона AI по-горе, за да генерирате бързо съдържание на шаблон въз основа на въведеното от вас име и описание', + 'inputNameHint': 'Моля, въведете име', + 'inputDescHint': 'Моля, въведете описание', + 'custom': 'Персонализиран', + 'pleaseEnter': 'Моля, въведете', + 'viewAll': 'Виж всички', + 'recordingLanguage': 'Език на записа', + 'chineseSimplified': 'Китайски мандарин (Опростен)', + 'meetingGenerateNow': 'Генерирай сега', + 'keyEventsAnalyzed': 'Анализирани {count} ключови събития.', + 'aiAnalysisDesc': + 'AI анализът идентифицира ключови събития в записите, позволявайки ви да изберете важни събития за AI генериране.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Запази интелектуална карта', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'Експортиране', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Приложи към всички абзаци на този говорител', + 'summaryWillBeUpdatedAutomatically': + 'Резюмето ще се обновява автоматично според шаблона', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Записи на транскрипции', 'templateCommunity': 'Общност за шаблони', @@ -492,7 +635,7 @@ const Map bgBG = { 'Свържи Voitrans устройство за активиране на стартово членство', 'unlockNow': 'Отключи сега', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Сравнение', 'detailedInfo': 'Детайлна информация', 'monthlyTranscriptionTime': 'Месечно време за транскрипция', @@ -528,8 +671,6 @@ const Map bgBG = { 'Лесно импортиране на аудио файлове от локални или приложения на трети страни, като гласови бележки, Google Drive и др.', 'multipleExportFormatsDesc': 'Експортирайте вашите аудио записи, транскрипционен текст и резюмета в различни формати (TXT, PDF, JPEG), за да отговорите на нуждите си.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Надстройте членството си', 'yearlySubscription': 'Годишен абонамент', 'monthlySubscription': 'Месечен абонамент', @@ -559,105 +700,26 @@ const Map bgBG = { 'Активира се веднага след покупка, валидно за 2 години след активация.', 'purchase': 'Покупка', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Избери шаблон за резюме', - 'useThisTemplate': 'Използвай този шаблон', - 'lastUsed': 'Последно използвано', - 'viewAll': 'Виж всички', - 'recordingLanguage': 'Език на записа', - 'chineseSimplified': 'Китайски мандарин (Опростен)', - 'meetingGenerateNow': 'Генерирай сега', - 'keyEventsAnalyzed': 'Анализирани {count} ключови събития.', - 'aiAnalysisDesc': - 'AI анализът идентифицира ключови събития в записите, позволявайки ви да изберете важни събития за AI генериране.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Приложи към всички абзаци на този говорител', - 'summaryWillBeUpdatedAutomatically': - 'Резюмето ще се обновява автоматично според шаблона', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': 'Анализът не успя, моля опитайте отново по-късно', + 'transcriptionFailed': 'Транскрипцията не успя, моля опитайте отново по-късно', + 'summaryFailed': 'Обобщението не успя, моля опитайте отново по-късно', + 'summaryFailedShort': 'Неуспешно обобщение', + 'transcriptionFailedShort': 'Неуспешна транскрипция', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Аудио плейърът не е готов, моля изчакайте', + 'playFailed': 'Неуспешно възпроизвеждане', + 'audioFileNotFound': 'Аудио файлът не е намерен', + 'fetchingAudio': 'Извличане на аудио от облака...', + 'playerLoadFailed': 'Аудио плейърът не успя да се зареди', // 设置页 "systemSettings": "Системни настройки", @@ -710,26 +772,15 @@ const Map bgBG = { "bleHeadsetFirmwareUpgrade": "Актуализация на фърмуера на BLE слушалките", "deviceManagement": "Управление на устройства", "manageConnectedDevices": "Управление на свързани Bluetooth устройства", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'В момента е най-новата версия {version}', 'checkUpdateFailed': 'Неуспешна проверка за актуализации', 'networkErrorRetry': 'Мрежова грешка, моля опитайте отново по-късно', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Гласов разговор в реално време", "realtimeVoiceChatInfo": "Изпитайте интелигентната гласова интерактивна функция (предварителен преглед)", "loading": "Зареждане...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Неизвестно устройство", "deviceTypeClassicBluetoothHeadset": "Класически Bluetooth слушалки", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth слушалки", @@ -745,8 +796,7 @@ const Map bgBG = { "Сигурни ли сте, че искате да развържете устройство \"{deviceName}\"?", "confirmUnbindAction": "Потвърдете развързването", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Изчисти историята на чата", "online": "Онлайн", @@ -776,8 +826,9 @@ const Map bgBG = { "swipeUpForMore": "Плъзнете нагоре за повече", "callingTool": "Помагам ви, моля изчакайте!", // 正在帮您,请稍等! "voice_interrupt": "Прекъсване", // 语音打断 + 'voice_interrupt_tip': 'Когато е включено: AI няма да бъде прекъснат от гласа ви, докато говори, и може да обработва само един кръг от разговор наведнъж. За да започнете нов кръг, просто кажете думата за събуждане.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Пусни малко музика", // 来点音乐 "presetNavigation": "Навигация до", // 导航 "presetWeather": "Времето днес", // 今日天气 @@ -789,7 +840,7 @@ const Map bgBG = { "todayNews": "Какви са новините днес?", // 今日新闻 "nearbyFood": "Каква вкусна храна има наблизо?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Здравейте! Аз съм **Сяо Ян**, мога да ви помогна с:\n\n' '• Отговаряне на въпроси и предоставяне на информация\n\n' '• Превод на глас в реално време\n\n' @@ -810,18 +861,17 @@ const Map bgBG = { 'startPhoneCallMode': 'Започни режим на телефонно обаждане, започни гласово въвеждане', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Въведете съобщението си тук...', // 全屏编辑器输入提示 'characterCount': '{count} символа', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Копирай', 'copySuccess': 'Успешно копиране', 'report': 'Докладвай', 'submitSuccess': 'Успешно изпращане', 'submitFailed': 'Неуспешно изпращане', 'reportSubmitted': 'Докладът е изпратен, ще го обработим възможно най-скоро', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Вредно/небезопасно', 'pornographicVulgar': 'Порнографско/вулгарно', 'misleadingAttack': 'Подвеждаща атака', @@ -831,17 +881,14 @@ const Map bgBG = { 'other': 'Друго', 'reportDescriptionHint': 'Искаме да знаем причината за доклада ви, можете да опишете проблема, с който сте се сблъскали.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Генерирано от AI', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'Ето някои препоръчани музики:', 'playList': 'Плейлист', 'moreMusic': 'Повече музика', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'километра', // 公里单位 'meters': 'метра', // 米单位 'hours': 'часа', // 小时单位 @@ -856,7 +903,7 @@ const Map bgBG = { "bicycling": "Колоездене", "tsransit": "Обществен транспорт", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Заявка за времето:', 'highest': 'Най-висока', 'lowest': 'Най-ниска', @@ -886,18 +933,8 @@ const Map bgBG = { "friday": "Петък", "saturday": "Събота", "sunday": "Неделя", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Награда за добре дошли", - "firstBindRewardDesc": "Получихте награди за свързване.", - "vipLevelLabel": "VIP ниво:", - "expiryLabel": "Изтичане:", - "notActivated": "Неактивирано", - "aiChatCreditsLabel": "AI чат кредити:", - "translationCreditsLabel": "Кредити за превод:", - "meetingCreditsLabel": "Кредити за срещи:", - "ok": "ОК", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Слънчево", "partlyCloudy": "Малко облачно", "partlySunny": "Слънчево с облаци", @@ -918,7 +955,133 @@ const Map bgBG = { "haze": "Мъгла", "strongWind": "Силен вятър", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Превод на снимки", + "textTranslation": "Текстов превод", + + // 翻译模块 - 主页 + "translationHistory": "История на преводите", + "enableRecording": "Включи записването", + "viewAudioFiles": "Виж аудио файловете", + "headsetUser": "Потребител на слушалки", + "phoneUser": "Потребител на телефон", + "selectSourceLanguage": "Избери изходен език", + "selectTargetLanguage": "Избери целеви език", + "me": "Аз", + "counterPart": "Събеседник", + "bluetoothCallStateError": + "Моля уверете се, че Bluetooth слушалките са свързани с телефона и са в състояние на разговор", + "autoDetect": "Автоматично откриване", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Неуспешно откриване на езика", + "translationFailed": "Неуспешен превод", + "pleaseInputText": "Моля въведете текст", + "textTooLong": "Текстът е твърде дълъг, макс 5000 символа", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Няма история на преводи", + "historyRecords": "Исторически записи", + "clearResults": "Изчисти резултатите", + "clearHistory": "Изчисти историята", + "clearHistoryConfirm": + "Сигурни ли сте, че искате да изчистите цялата история на преводите? Тази операция не може да бъде отменена.", + "unknownLanguage": "Неизвестен език", + "deleteSessionRecord": "Изтрий записа на сесията", + "deleteSessionConfirm": + "Сигурни ли сте, че искате да изтриете всички записи на преводи за тази сесия? Тази операция не може да бъде отменена.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Избери източник на изображение", + "imagePreview": "Преглед на изображение", + "translationResult": "Резултат от превода", + "recognitionResult": "Резултат от разпознаването", + "translatedImagePreview": "Преглед на преведеното изображение", + "translatedImageLoadFailed": "Неуспешно зареждане на преведеното изображение", + "pleaseSelectImage": "Моля изберете изображение", + "imageLoadFailed": "Неуспешно зареждане на изображение", + "imageQuality": "Качество на изображението", + "maxSize": "Максимален размер", + "close": "Затвори", + "setImageQuality": "Задай качество на изображението", + "currentQuality": "Текущо качество: @value%", + "setMaxSize": "Задай максимален размер", + "currentMaxSize": "Текущ: @pxpx", + "waitingForAction": "Изчакване на действие", + "pleaseSelectImageToStart": "Моля изберете изображение за начало", + "chooseImage": "Избери изображение", + "openingCamera": "Отваряне на камерата...", + "openingPhotoAlbum": "Отваряне на фотоалбума...", + "cancelled": "Отменено", + "userCancelledSelection": "Потребителят отмени избора", + "translatingImage": "Превеждане на изображение", + "callingImageTranslateService": + "Повикване на услугата за превод на изображения...", + "savingRecord": "Запазване на записа", + "savingTranslationResult": "Запазване на резултата от превода...", + "translationCompleted": "Преводът завърши", + "allStepsCompleted": "Всички стъпки завършиха", + "processingFailed": "Обработката е неуспешна", + "imageProcessingOrTranslationFailed": + "Обработката на изображението или преводът са неуспешни. Моля опитайте отново.\nГрешка: {error}", + "imageTooLarge": "Размерът на изображението надвишава лимита от 4MB", + "imageTooLargeHint": + "Размерът на изображението надвишава 4MB. Намалете качеството или размерите и опитайте отново", + "emptyTranslationResult": + "API за превод на изображения върна празен резултат", + "imageTranslationFailedTryLater": + "Преводът на изображение е неуспешен. Мрежов проблем или лимит на скоростта. Моля опитайте по-късно", + "imageTranslationApiException": + "Изключение в API за превод на изображения. Проверете мрежата и опитайте отново", + "permissionRequired": "Изисква се разрешение", + "cameraPermissionRequired": + "Изисква се разрешение за камера за правене на снимки", + "photoAlbumPermissionRequired": + "Изисква се разрешение за фотоалбум за избор на изображения", + "translationDetails": "Детайли на превода", + "originalImage": "Оригинално изображение", + "sourceLanguage": "Изходен език", + "targetLanguage": "Целеви език", + "translationTime": "Време на превод", + "shareInDevelopment": "Функцията за споделяне е в процес на разработка", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Преведи аудио файлове", + "noAudioFiles": "Няма аудио файлове", + "calculating": "Изчисляване...", + "playing": "Възпроизвеждане...", + "paused": "На пауза", + "clickToPlay": "Кликнете за възпроизвеждане", + "rename": "Преименувай", + "smartTranscription": "Интелигентна транскрипция", + "renameAudioFile": "Преименувай аудио файла", + "enterNewFileName": "Моля въведете новото име на файла", + + // 翻译模块 - 翻译详情 + "originalRecord": "Оригинален запис", + "recordSummary": "Резюме на записа", + "clickToGenerateSummary": + "Кликнете бутона отдолу за да генерирате резюме на сесията", + "summaryContent": "Съдържание на резюмето", + "copied": "Копирано", + "summaryCopiledToClipboard": "Резюмето е копирано в клипборда", + "extractSummary": "Извлечи резюме", + "summaryGenerated": "Резюмето е генерирано", + "generating": "Генериране...", + "regenerate": "Регенерирай", + "summaryTimeoutMessage": + "Заявката за генериране на резюме изтече, възможно е да има мрежов проблем или сървърът да е зает.", + "deleteTranslationRecord": "Изтрий записа на превода", + "deleteTranslationConfirm": + "Сигурни ли сте, че искате да изтриете този запис на превод? Тази операция не може да бъде отменена.", + "originalText": "Оригинален текст", + "translatedText": "Преведен текст", + "sessionSummary": "Резюме на сесията", + "cannotShare": "Не може да се сподели", + "generateSummaryFirst": "Моля първо генерирайте резюме", + "translationSessionRecord": "Запис на сесията за превод", + + // 个人资料模块 "editProfile": "Редактирай личната информация", "avatar": "Аватар", "nickname": "Прякор", @@ -934,8 +1097,6 @@ const Map bgBG = { 'Сигурни ли сте, че искате да изтриете завинаги акаунта си? Тази операция не може да бъде отменена', 'clean': 'Изчисти кеша', 'cleanTips': 'Сигурни ли сте, че искате да изчистите личния кеш?', - - // Profile 错误信息 'networkConnectionFailed': 'Неуспешна мрежова връзка, моля проверете мрежовите настройки и опитайте отново', 'serverTemporarilyUnavailable': @@ -952,10 +1113,6 @@ const Map bgBG = { 'Неуспешна мрежова връзка, моля проверете мрежовите настройки', 'serverInternalErrorRetryLater': 'Вътрешна грешка в сървъра, моля опитайте отново по-късно', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Неуспешно компресиране на изображението', 'avatarUpdateFailed': 'Неуспешна актуализация на аватара', 'usernameCannotBeEmpty': 'Потребителското име не може да бъде празно', @@ -967,8 +1124,6 @@ const Map bgBG = { 'accountPermanentlyDeleted': 'Акаунтът е изтрит завинаги', 'deleteAccountFailedRetry': 'Неуспешно изтриване на акаунта, моля опитайте отново', - - // 账号服务相关 'clearUserDataFailed': 'Неуспешно изчистване на потребителските данни', // 清理用户数据失败 'deleteUserDataFailed': @@ -985,7 +1140,12 @@ const Map bgBG = { 'accountServiceInitialized': 'AccountService е инициализиран', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': + 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', 'getPermissionStatusFailed': 'Неуспешно получаване на състоянието на разрешенията', 'communicationPermissions': 'Разрешения за комуникация', @@ -999,7 +1159,6 @@ const Map bgBG = { 'phone': 'Телефон', 'sms': 'SMS', 'contacts': 'Контакти', - //'bluetooth': '蓝牙', 'notification': 'Известия', 'alarm': 'Аларма', 'calendarWrite': 'Писане в календара', @@ -1059,8 +1218,6 @@ const Map bgBG = { 'permanentDenialText': 'Вие сте отказали постоянно разрешението за {permission}, моля отидете в настройките на приложението за да го включите', 'goToSettings': 'Отиди в настройки', - - // 权限申请 'bluetoothScan': 'Bluetooth сканиране', 'bluetoothConnect': 'Bluetooth свързване', 'bluetoothScanExplanation': @@ -1085,7 +1242,6 @@ const Map bgBG = { 'Постоянно сте отказали разрешение за известия, моля отидете в настройките, за да го включите.', 'locationPermissionPermanentDenial': 'Постоянно сте отказали разрешение за местоположение, моля отидете в настройките, за да го включите.', -//'microphonePermission': '录音', 'storagePermission': 'Съхранение', 'microphonePermissionExplanation': 'Нуждаем се от разрешение за микрофон, за да записваме аудио съдържание.', @@ -1095,8 +1251,6 @@ const Map bgBG = { 'Разрешението за микрофон е постоянно отказано. За да продължите да използвате тази функция, моля отидете в настройките на приложението, за да включите ръчно разрешението за микрофон.', 'storagePermissionPermanentDenial': 'Разрешението за съхранение е постоянно отказано. За да продължите да използвате тази функция, моля отидете в настройките на приложението, за да включите ръчно разрешението за съхранение.', - - //permission_util.dart 'permissionUtilNeed': 'Нужно е ', 'permissionUtilPermission': ' разрешение', 'permissionUtilRestricted': ' Разрешението е ограничено', @@ -1104,7 +1258,20 @@ const Map bgBG = { 'Тази функция е недостъпна или ограничена на текущото устройство, моля проверете настройките на устройството или системните ограничения', 'permissionUtilConfirm': 'ОК', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Навигация в ход', + 'native.notification.navigation.keepRunning': 'Навигация, поддържайте приложението работещо', + 'native.notification.bleAgent.running': 'Гласовият асистент работи', + 'native.notification.audioRecording.recording': 'Записва се аудио, натиснете за да се върнете в приложението', + 'native.notification.music.waiting': 'Изчакване за възпроизвеждане', + 'native.notification.music.previous': 'Предишна', + 'native.notification.music.next': 'Следваща', + 'native.notification.music.play': 'Възпроизвеждане', + 'native.notification.music.pause': 'Пауза', + 'native.notification.qqMusic.playing': 'Възпроизвеждане на музика', + + // 版本更新 'newVersionFound': 'Намерена е нова версия', // 版本更新对话框标题 'remindLater': 'Напомни по-късно', // 稍后提醒按钮 'updateNow': 'Актуализирай сега', // 立即更新按钮 @@ -1115,256 +1282,7 @@ const Map bgBG = { 'updateErrorRetry': 'Възникна грешка по време на актуализацията, моля опитайте отново по-късно', // 更新错误重试提示 - //国家列表 - "邮箱": "Имейл", - "中国": "Китай", - "美国": "САЩ", - "加拿大": "Канада", - "俄罗斯": "Русия", - "英国": "Великобритания", - "德国": "Германия", - "意大利": "Италия", - "法国": "Франция", - "西班牙": "Испания", - "南非": "Южна Африка", - "沙特阿拉伯": "Саудитска Арабия", - "土耳其": "Турция", - "日本": "Япония", - "韩国": "Южна Корея", - "新加坡": "Сингапур", - "马来西亚": "Малайзия", - "泰国": "Тайланд", - "越南": "Виетнам", - "印度": "Индия", - "巴基斯坦": "Пакистан", - "菲律宾": "Филипини", - "印度尼西亚": "Индонезия", - "阿联酋": "ОАЕ", - "墨西哥": "Мексико", - "巴西": "Бразилия", - "阿根廷": "Аржентина", - "澳大利亚": "Австралия", - "新西兰": "Нова Зеландия", - "中国香港": "Хонг Конг", - "中国澳门": "Макао", - "中国台湾": "Тайван", - "埃及": "Египет", - "希腊": "Гърция", - "荷兰": "Холандия", - "比利时": "Белгия", - "匈牙利": "Унгария", - "罗马尼亚": "Румъния", - "瑞士": "Швейцария", - "奥地利": "Австрия", - "丹麦": "Дания", - "瑞典": "Швеция", - "挪威": "Норвегия", - "波兰": "Полша", - "秘鲁": "Перу", - "智利": "Чили", - "哥伦比亚": "Колумбия", - "委内瑞拉": "Венецуела", - "葡萄牙": "Португалия", - "卢森堡": "Люксембург", - "爱尔兰": "Ирландия", - "冰岛": "Исландия", - "阿尔巴尼亚": "Албания", - "马耳他": "Малта", - "塞浦路斯": "Кипър", - "芬兰": "Финландия", - "保加利亚": "България", - "立陶宛": "Литва", - "拉脱维亚": "Латвия", - "爱沙尼亚": "Естония", - "乌克兰": "Украйна", - "塞尔维亚": "Сърбия", - "克罗地亚": "Хърватия", - "斯洛文尼亚": "Словения", - "捷克": "Чехия", - "斯洛伐克": "Словакия", - "危地马拉": "Гватемала", - "萨尔瓦多": "Салвадор", - "洪都拉斯": "Хондурас", - "尼加拉瓜": "Никарагуа", - "哥斯达黎加": "Коста Рика", - "巴拿马": "Панама", - "海地": "Хаити", - "玻利维亚": "Боливия", - "厄瓜多尔": "Еквадор", - "巴拉圭": "Парагвай", - "乌拉圭": "Уругвай", - "摩洛哥": "Мароко", - "阿尔及利亚": "Алжир", - "突尼斯": "Тунис", - "尼日利亚": "Нигерия", - "加纳": "Гана", - "埃塞俄比亚": "Етиопия", - "肯尼亚": "Кения", - "坦桑尼亚": "Танзания", - "乌干达": "Уганда", - "孟加拉国": "Бангладеш", - "以色列": "Израел", - "黎巴嫩": "Ливан", - "约旦": "Йордания", - "伊拉克": "Ирак", - "科威特": "Кувейт", - "巴林": "Бахрейн", - "卡塔尔": "Катар", - "阿曼": "Оман", - "阿富汗": "Афганистан", - "斯里兰卡": "Шри Ланка", - "缅甸": "Мианмар", - "尼泊尔": "Непал", - "蒙古": "Монголия", - "柬埔寨": "Камбоджа", - "老挝": "Лаос", - "文莱": "Бруней", - "东帝汶": "Източен Тимор", - "斐济": "Фиджи", - "所罗门群岛": "Соломонови острови", - "刚果民主共和国": "Демократична република Конго", - "安哥拉": "Ангола", - "苏丹": "Судан", - "马尔代夫": "Малдиви", - "不丹": "Бутан", - "摩纳哥": "Монако", - "圣马力诺": "Сан Марино", - "牙买加": "Ямайка", - "巴哈马": "Бахами", - "巴布亚新几内亚": "Папуа Нова Гвинея", - "萨摩亚": "Самоа", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Превод на снимки", - "textTranslation": "Текстов превод", - - // 翻译主页 (translation_view.dart) - "translationHistory": "История на преводите", - "enableRecording": "Включи записването", - "viewAudioFiles": "Виж аудио файловете", - "headsetUser": "Потребител на слушалки", - "phoneUser": "Потребител на телефон", - "selectSourceLanguage": "Избери изходен език", - "selectTargetLanguage": "Избери целеви език", - "me": "Аз", - "counterPart": "Събеседник", - "bluetoothCallStateError": - "Моля уверете се, че Bluetooth слушалките са свързани с телефона и са в състояние на разговор", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Автоматично откриване", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Неуспешно откриване на езика", - "translationFailed": "Неуспешен превод", - "pleaseInputText": "Моля въведете текст", - "textTooLong": "Текстът е твърде дълъг, макс 5000 символа", - - // 翻译历史页 - "noTranslationHistory": "Няма история на преводи", - "historyRecords": "Исторически записи", - "clearResults": "Изчисти резултатите", - "clearHistory": "Изчисти историята", - "clearHistoryConfirm": - "Сигурни ли сте, че искате да изчистите цялата история на преводите? Тази операция не може да бъде отменена.", - "unknownLanguage": "Неизвестен език", - "deleteSessionRecord": "Изтрий записа на сесията", - "deleteSessionConfirm": - "Сигурни ли сте, че искате да изтриете всички записи на преводи за тази сесия? Тази операция не може да бъде отменена.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Избери източник на изображение", - "imagePreview": "Преглед на изображение", - "translationResult": "Резултат от превода", - "recognitionResult": "Резултат от разпознаването", - "translatedImagePreview": "Преглед на преведеното изображение", - "translatedImageLoadFailed": "Неуспешно зареждане на преведеното изображение", - "pleaseSelectImage": "Моля изберете изображение", - "imageLoadFailed": "Неуспешно зареждане на изображение", - "imageQuality": "Качество на изображението", - "maxSize": "Максимален размер", - "close": "Затвори", - "setImageQuality": "Задай качество на изображението", - "currentQuality": "Текущо качество: @value%", - "setMaxSize": "Задай максимален размер", - "currentMaxSize": "Текущ: @pxpx", - "waitingForAction": "Изчакване на действие", - "pleaseSelectImageToStart": "Моля изберете изображение за начало", - "chooseImage": "Избери изображение", - "openingCamera": "Отваряне на камерата...", - "openingPhotoAlbum": "Отваряне на фотоалбума...", - "cancelled": "Отменено", - "userCancelledSelection": "Потребителят отмени избора", - "translatingImage": "Превеждане на изображение", - "callingImageTranslateService": - "Повикване на услугата за превод на изображения...", - "savingRecord": "Запазване на записа", - "savingTranslationResult": "Запазване на резултата от превода...", - "translationCompleted": "Преводът завърши", - "allStepsCompleted": "Всички стъпки завършиха", - "processingFailed": "Обработката е неуспешна", - "imageProcessingOrTranslationFailed": - "Обработката на изображението или преводът са неуспешни. Моля опитайте отново.\nГрешка: {error}", - "imageTooLarge": "Размерът на изображението надвишава лимита от 4MB", - "imageTooLargeHint": - "Размерът на изображението надвишава 4MB. Намалете качеството или размерите и опитайте отново", - "emptyTranslationResult": - "API за превод на изображения върна празен резултат", - "imageTranslationFailedTryLater": - "Преводът на изображение е неуспешен. Мрежов проблем или лимит на скоростта. Моля опитайте по-късно", - "imageTranslationApiException": - "Изключение в API за превод на изображения. Проверете мрежата и опитайте отново", - "permissionRequired": "Изисква се разрешение", - "cameraPermissionRequired": - "Изисква се разрешение за камера за правене на снимки", - "photoAlbumPermissionRequired": - "Изисква се разрешение за фотоалбум за избор на изображения", - "translationDetails": "Детайли на превода", - "originalImage": "Оригинално изображение", - "sourceLanguage": "Изходен език", - "targetLanguage": "Целеви език", - "translationTime": "Време на превод", - "shareInDevelopment": "Функцията за споделяне е в процес на разработка", - - // 翻译录音文件列表页 - "translateAudioFiles": "Преведи аудио файлове", - "noAudioFiles": "Няма аудио файлове", - "calculating": "Изчисляване...", - "playing": "Възпроизвеждане...", - "paused": "На пауза", - "clickToPlay": "Кликнете за възпроизвеждане", - "rename": "Преименувай", - "smartTranscription": "Интелигентна транскрипция", - "renameAudioFile": "Преименувай аудио файла", - "enterNewFileName": "Моля въведете новото име на файла", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Оригинален запис", - "recordSummary": "Резюме на записа", - "clickToGenerateSummary": - "Кликнете бутона отдолу за да генерирате резюме на сесията", - "summaryContent": "Съдържание на резюмето", - "copied": "Копирано", - "summaryCopiledToClipboard": "Резюмето е копирано в клипборда", - "extractSummary": "Извлечи резюме", - "summaryGenerated": "Резюмето е генерирано", - "generating": "Генериране...", - "regenerate": "Регенерирай", - "summaryTimeoutMessage": - "Заявката за генериране на резюме изтече, възможно е да има мрежов проблем или сървърът да е зает.", - "deleteTranslationRecord": "Изтрий записа на превода", - "deleteTranslationConfirm": - "Сигурни ли сте, че искате да изтриете този запис на превод? Тази операция не може да бъде отменена.", - "originalText": "Оригинален текст", - "translatedText": "Преведен текст", - "sessionSummary": "Резюме на сесията", - "cannotShare": "Не може да се сподели", - "generateSummaryFirst": "Моля първо генерирайте резюме", - "translationSessionRecord": "Запис на сесията за превод", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Сдвояване на устройства", "connectYourDeepSoundHeadset": "Свържете вашите Voitrans слушалки", "bind": "Свържи", @@ -1373,14 +1291,11 @@ const Map bgBG = { "autoInputCode": "Автоматично въвеждане на код", "skipBinding": "Прескочи свързването", "rescan": "Сканирай отново", - "verifyingDevice": "Проверка на устройството...", "confirmBinding": "Потвърди свързването", "associatingDevice": "Асоцииране на устройството...", "goToBluetoothSettings": "Отиди в Bluetooth настройките", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Готов за сдвояване", "preparingPairingEnvironment": "Подготовка на средата за сдвояване...", "connectDeepSoundViaSystemBluetooth": @@ -1391,8 +1306,6 @@ const Map bgBG = { "waitingCompletePairing": "Моля изчакайте, завършване на сдвояването...", "pairingSuccessRedirecting": "Успешно сдвояване! Пренасочване към началната страница...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Моля уверете се, че свързаното устройство е Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1405,19 +1318,12 @@ const Map bgBG = { "authorizationFailedCheckCode": "Неуспешно разрешение, моля проверете дали кодът за разрешение е правилен", "pairingFailedRetry": "Неуспешно сдвояване, моля опитайте отново", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Моля включете Bluetooth', 'deviceDisconnected': 'Устройството е прекъснато', 'readyToStartPairing': 'Готов за започване на сдвояването', 'checkingEnvironment': 'Проверка на средата...', 'ensureHeadsetOnAndPairingMode': 'Моля уверете се, че слушалките са включени и в режим на сдвояване', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Установяване на сигурна връзка...', 'needManualBindingAuthCode': 'Нужен е ръчен код за разрешение на свързването...', @@ -1441,8 +1347,6 @@ const Map bgBG = { 'bleConnectionFailed': 'Неуспешна BLE връзка', 'deviceAuthorizationFailedCheckCode': 'Неуспешно разрешение на устройството, моля проверете кода за разрешение', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Изисква се ръчно активиране на Bluetooth', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Моля следвайте тези стъпки:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1455,7 +1359,18 @@ const Map bgBG = { 'Съвет: Можете също да задържите иконата на Bluetooth в Центъра за управление за бърз достъп до настройките на Bluetooth', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'Разбрах', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Награда за добре дошли", + "firstBindRewardDesc": "Получихте награди за свързване.", + "vipLevelLabel": "VIP ниво:", + "expiryLabel": "Изтичане:", + "notActivated": "Неактивирано", + "aiChatCreditsLabel": "AI чат кредити:", + "translationCreditsLabel": "Кредити за превод:", + "meetingCreditsLabel": "Кредити за срещи:", + "ok": "ОК", + + // 用户反馈模块 "feedback": "Потребителска обратна връзка", 'feedbackInfo': 'Предоставете обратна връзка или предложения', 'feedbackDescription': 'Моля опишете проблема или предложението си', @@ -1499,7 +1414,7 @@ const Map bgBG = { "removeEarbudsEnsureBattery": "Извадете двете слушалки и се уверете, че батерията на двете е над 20%", - // 音乐列表页面 + // 音乐模块 "noMusic": "Няма музика", // 暂无音乐 "noPlayingMusic": "Няма възпроизвеждаща се музика", // 暂无播放音乐 "unknownSong": "Неизвестна песен", // 未知歌曲 @@ -1547,22 +1462,122 @@ const Map bgBG = { "波斯语": "Персийски", "斯瓦希里语": "Суахили", - // 时间相关 - "justNow": "Току-що", - "minutesAgo": "преди @minutes минути", - "yesterday": "Вчера", - // 时间扩展(图片翻译模块使用) - "daysAgo": "преди @days дни", - "hoursAgo": "преди @hours часа", - - //补充 - "insufficientIntegral": "Недостатъчно точки", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Недостатъчен баланс, моля отидете на съответната страница за презареждане.', - "recharge": 'Отиди към презареждане', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI членството изтече, моля отидете на страницата за презареждане на членство за подновяване.', + // 国家列表 + "邮箱": "Имейл", + "中国": "Китай", + "美国": "САЩ", + "加拿大": "Канада", + "俄罗斯": "Русия", + "英国": "Великобритания", + "德国": "Германия", + "意大利": "Италия", + "法国": "Франция", + "西班牙": "Испания", + "南非": "Южна Африка", + "沙特阿拉伯": "Саудитска Арабия", + "土耳其": "Турция", + "日本": "Япония", + "韩国": "Южна Корея", + "新加坡": "Сингапур", + "马来西亚": "Малайзия", + "泰国": "Тайланд", + "越南": "Виетнам", + "印度": "Индия", + "巴基斯坦": "Пакистан", + "菲律宾": "Филипини", + "印度尼西亚": "Индонезия", + "阿联酋": "ОАЕ", + "墨西哥": "Мексико", + "巴西": "Бразилия", + "阿根廷": "Аржентина", + "澳大利亚": "Австралия", + "新西兰": "Нова Зеландия", + "中国香港": "Хонг Конг", + "中国澳门": "Макао", + "中国台湾": "Тайван", + "埃及": "Египет", + "希腊": "Гърция", + "荷兰": "Холандия", + "比利时": "Белгия", + "匈牙利": "Унгария", + "罗马尼亚": "Румъния", + "瑞士": "Швейцария", + "奥地利": "Австрия", + "丹麦": "Дания", + "瑞典": "Швеция", + "挪威": "Норвегия", + "波兰": "Полша", + "秘鲁": "Перу", + "智利": "Чили", + "哥伦比亚": "Колумбия", + "委内瑞拉": "Венецуела", + "葡萄牙": "Португалия", + "卢森堡": "Люксембург", + "爱尔兰": "Ирландия", + "冰岛": "Исландия", + "阿尔巴尼亚": "Албания", + "马耳他": "Малта", + "塞浦路斯": "Кипър", + "芬兰": "Финландия", + "保加利亚": "България", + "立陶宛": "Литва", + "拉脱维亚": "Латвия", + "爱沙尼亚": "Естония", + "乌克兰": "Украйна", + "塞尔维亚": "Сърбия", + "克罗地亚": "Хърватия", + "斯洛文尼亚": "Словения", + "捷克": "Чехия", + "斯洛伐克": "Словакия", + "危地马拉": "Гватемала", + "萨尔瓦多": "Салвадор", + "洪都拉斯": "Хондурас", + "尼加拉瓜": "Никарагуа", + "哥斯达黎加": "Коста Рика", + "巴拿马": "Панама", + "海地": "Хаити", + "玻利维亚": "Боливия", + "厄瓜多尔": "Еквадор", + "巴拉圭": "Парагвай", + "乌拉圭": "Уругвай", + "摩洛哥": "Мароко", + "阿尔及利亚": "Алжир", + "突尼斯": "Тунис", + "尼日利亚": "Нигерия", + "加纳": "Гана", + "埃塞俄比亚": "Етиопия", + "肯尼亚": "Кения", + "坦桑尼亚": "Танзания", + "乌干达": "Уганда", + "孟加拉国": "Бангладеш", + "以色列": "Израел", + "黎巴嫩": "Ливан", + "约旦": "Йордания", + "伊拉克": "Ирак", + "科威特": "Кувейт", + "巴林": "Бахрейн", + "卡塔尔": "Катар", + "阿曼": "Оман", + "阿富汗": "Афганистан", + "斯里兰卡": "Шри Ланка", + "缅甸": "Мианмар", + "尼泊尔": "Непал", + "蒙古": "Монголия", + "柬埔寨": "Камбоджа", + "老挝": "Лаос", + "文莱": "Бруней", + "东帝汶": "Източен Тимор", + "斐济": "Фиджи", + "所罗门群岛": "Соломонови острови", + "刚果民主共和国": "Демократична република Конго", + "安哥拉": "Ангола", + "苏丹": "Судан", + "马尔代夫": "Малдиви", + "不丹": "Бутан", + "摩纳哥": "Монако", + "圣马力诺": "Сан Марино", + "牙买加": "Ямайка", + "巴哈马": "Бахами", + "巴布亚新几内亚": "Папуа Нова Гвинея", + "萨摩亚": "Самоа", }; diff --git a/lib/core/translations/language/cs_cz.dart b/lib/core/translations/language/cs_cz.dart index 5734cb0b5..ba8b66543 100644 --- a/lib/core/translations/language/cs_cz.dart +++ b/lib/core/translations/language/cs_cz.dart @@ -1,4 +1,5 @@ const Map csCZ = { + // 通用 'continue': 'Pokračovat', 'confirm': 'Potvrdit', @@ -18,6 +19,11 @@ const Map csCZ = { "unknownError": "Neznámá chyba", "asrConnectionFailed": "Připojení ke službě rozpoznávání řeči selhalo. Zkontrolujte síť nebo to zkuste znovu později.", + "justNow": "Právě teď", + "minutesAgo": "před @minutes minutami", + "yesterday": "Včera", + "daysAgo": "před @days dny", + "hoursAgo": "před @hours hodinami", // 启动页 "slogan": "Spojujeme svět, za hranice zvuku", @@ -28,7 +34,7 @@ const Map csCZ = { "explore": "Prozkoumat", "settings": "Nastavení", - // 语言 + // 语言列表 "followingSystem": "Následovat systém", "chinese": "Čínština", "english": "Angličtina", @@ -72,7 +78,7 @@ const Map csCZ = { "arabic": "Arabština", "persian": "Farsština", - // 登录页 + // 登录模块 "welcome": "Vítejte", "loginTips": "Přihlaste se nebo se zaregistrujte pomocí telefonního čísla nebo e-mailu", @@ -101,13 +107,9 @@ const Map csCZ = { "resendVerificationCode": "Znovu odeslat ověřovací kód", "login": "Přihlásit se", "usePasswordLogin": "Použít přihlášení heslem", - - // 隐私政策弹窗 "loginDeclaration": "Prohlášení Voitrans", // Voitrans 声明 "welcomeToThisApp": "Vítejte v Voitrans, přečtěte si prosím pozorně", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ". Kliknutím na 'Souhlasím a vstoupit' označujete, že jste si výše uvedené smlouvy plně přečetli a souhlasíte s nimi. Kliknutím na 'Nesouhlasím' aplikaci ukončíte.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Nesouhlasím", // 不同意 @@ -164,7 +166,7 @@ const Map csCZ = { 'right': 'Pravý', 'checkConnectionStatusFailed': 'Kontrola stavu připojení selhala', -// 发现页 + // 发现页 "searchAi": "Hledat AI funkce...", "exploreSlogan": "Chytrá sluchátka, nekonečné možnosti", "exploreSlogan1": "Chytrý společník, nekonečné možnosti", @@ -188,6 +190,7 @@ const Map csCZ = { "usageStats": "Statistika použití", "usageStatsInfo": "Zobrazit statistiku použití aplikace", "scene": "Scénáře", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Statistiky překladů", @@ -208,7 +211,6 @@ const Map csCZ = { "translationApi": "Překladové API", "asr": "Rozpoznávání řeči", "tts": "Syntéza řeči", - //"aiSummary": "AI摘要", "dataVolumeStats": "Statistiky objemu dat", "sourceTextCharacters": "Znaky zdrojového textu", "ttsTextCharacters": "Znaky textu TTS", @@ -225,7 +227,6 @@ const Map csCZ = { "totalAudioDuration": "Celková délka zvuku", "audioFileSize": "Velikost zvukového souboru", "transcriptBytes": "Bajty přepisu", - // 通知文案 "loadFailed": "Načtení selhalo", "statsLoadFailedTryLater": "Statistiky se nepodařilo načíst. Zkuste to prosím později.", @@ -234,56 +235,124 @@ const Map csCZ = { "exportFeature": "Funkce exportu", "exportInDevelopment": "Export dat je ve vývoji", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Dostupné balíčky', 'remainingQuota': 'Zbývající kvóta', 'totalQuota': 'Celková kvóta', 'remaining': 'Zbývá', 'featureDescription': 'Popis funkce', - // AI 功能卡片 + 'paymentSuccess': 'Platba proběhla úspěšně', + 'paymentFailed': 'Platba se nezdařila', + 'gotIt': 'Rozumím', + 'paymentFailedTryAgain': 'Platba se nezdařila. Zkuste to prosím znovu.', + 'selectPaymentMethod': 'Vyberte způsob platby', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Nepodařilo se vytvořit objednávku WeChat', + 'alipayOrderCreateFailed': 'Nepodařilo se vytvořit objednávku Alipay', + 'appleOrderCreateFailed': 'Nepodařilo se vytvořit objednávku Apple', + 'googleOrderCreateFailed': 'Nepodařilo se vytvořit objednávku Google', + 'paypalOrderCreateFailed': 'Nepodařilo se vytvořit objednávku PayPal', + 'paymentException': 'Chyba platby', + 'paymentLaunchFailed': 'Nepodařilo se spustit platbu', + 'paymentExceptionWithError': 'Chyba platby: @error', + 'paymentProcessingCheckLater': 'Vaše objednávka se zpracovává. Zkontrolujte později.', + 'paymentResultQueryException': 'Nepodařilo se zjistit výsledek platby: @error', + 'orderConfirmedQuotaRefreshed': 'Objednávka potvrzena. Váš limit byl obnoven.', + 'paymentCompletedConfirming': 'Platba dokončena. Potvrzování…', + 'paymentCancelled': 'Platba zrušena', + 'paypalOpenedCompleteInBrowser': 'PayPal otevřen. Dokončete platbu v prohlížeči.', + 'paypalOpenFailed': 'Nelze otevřít stránku platby PayPal', + 'paymentTestTitle': 'Test platby', + 'paymentTestOrderInfo': 'Informace o testovací objednávce', + 'paymentTestProductId': 'ID produktu', + 'paymentTestProductDescription': 'Popis produktu', + 'paymentTestWechatDescription': 'Test platby WeChat', + 'paymentTestAlipayDescription': 'Test platby Alipay', + 'paymentTestAmount': 'Částka', + 'paymentTestSelectAmount': 'Vyberte testovací částku', + 'paying': 'Platba...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Stav platby', + 'errorInfoWithMessage': 'Chyba: @message', + 'retest': 'Opakovat test', + 'paymentTestInstructionsTitle': 'Pokyny', + 'paymentTestInstructionsContent': '1. Vyberte testovací částku (doporučeno: ¥0.01)\n2. Klikněte na tlačítko platby pro zahájení\n3. Dokončete platbu v platební aplikaci\n4. Vraťte se a zkontrolujte výsledek', + 'startingWechatPayment': 'Spouštění WeChat Pay...', + 'startingAlipayPayment': 'Spouštění Alipay...', + 'wechatPaymentSuccess': 'Platba WeChat Pay proběhla úspěšně!', + 'wechatPaymentFailed': 'Platba WeChat Pay se nezdařila', + 'wechatPaymentLaunchFailed': 'Nepodařilo se spustit WeChat Pay', + 'cannotLaunchWechatPayment': 'Nelze spustit WeChat Pay', + 'wechatPaymentException': 'Chyba WeChat Pay', + 'wechatPaymentTestCompleted': 'Test platby WeChat Pay dokončen', + 'alipayPaymentSuccess': 'Platba Alipay proběhla úspěšně!', + 'alipayPaymentFailed': 'Platba Alipay se nezdařila', + 'alipayPaymentLaunchFailed': 'Nepodařilo se spustit Alipay', + 'cannotLaunchAlipayPayment': 'Nelze spustit Alipay', + 'alipayPaymentException': 'Chyba Alipay', + "insufficientIntegral": "Nedostatek bodů", + "insufficientBalanceDesc": + 'Nedostatečný zůstatek, přejděte prosím na příslušnou stránku pro dobití.', + "recharge": 'Přejít na dobití', + "aiMemberExpiredDesc": + 'AI členství vypršelo, přejděte prosím na stránku dobíjení členství pro obnovení.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Hudba a doporučení', 'navigationAndRoutes': 'Navigace a trasy', 'nearbySearch': 'Hledání v okolí', 'newsInformation': 'Zprávy', 'communicationAssistant': 'Komunikační asistent', - // 翻译功能卡片 + 'aiHeaderDesc1': + 'Delší kvóta konverzace, více volání nástrojů, rozšířená délka kontextu.', + 'aiHeaderDesc2': 'Vhodné pro Q&A agenta, shrnutí, analýzu a provádění úkolů.', + 'musicSearchPlaybackControl': + 'Hledání v hudební knihovně a ovládání přehrávání', + 'smartPlaylistAndSimilarRecommendations': + 'Chytrý playlist a doporučení podobných skladeb', + 'routePlanningAndCongestionAvoidance': 'Plánování trasy a vyhýbání se zácpám', + 'voiceBroadcastAndWaypoints': 'Hlasové vysílání a nastavení průjezdních bodů', + 'realTimeWeatherForecast': 'Počasí v reálném čase a předpověď', + 'clothingAdviceAndTravelReminders': + 'Rady ohledně oblečení a cestovní připomínky', + 'poiSearchFoodGasParking': 'Hledání POI: stravování / benzín / parkování', + 'ratingsHoursAndDirectRoutes': 'Hodnocení, otevírací doba a přímé trasy', + 'hotNewsAndTopicOverview': 'Žhavé novinky a přehled témat', + 'longArticleSummariesAndKeyPoints': 'Shrnutí dlouhých článků a klíčové body', + 'helpCallAndSMS': 'Pomoc s hovory a SMS', + 'templatedMessagesAndScheduleReminders': 'Šablony zpráv a připomínky plánu', + 'aiDisclaimer': + 'Funkce závisí na oprávněních zařízení, dostupnosti služby a síťových podmínkách.', + + // 商品模块 - 翻译商品页 'realtimeTranscription': 'Přepis v reálném čase', - // 'textTranslation' 已存在 'sceneLexicon': 'Slovníček scénářů', 'subtitleDisplay': 'Titulky', - // 会议功能卡片 + 'transHeaderDesc1': + 'Simultánní tlumočení v reálném čase a překlad textu s nízkou latencí hlasu.', + 'transHeaderDesc2': 'Vhodné pro cestování, podnikání, projevy a výuku.', + 'translateZhEn': 'Čínsko-anglický překlad', + 'lowLatencyVoiceBroadcast': 'Hlasové vysílání s nízkou latencí', + 'multiLangTextTranslation': 'Vícejazyčný textový překlad', + 'termOptimizationContextPreserve': + 'Optimalizace terminologie a zachování kontextu', + 'lexiconTourBusinessLife': 'Slovníky pro cestování/podnikání/život', + 'personalVocabularyMemory': 'Paměť osobní slovní zásoby', + 'conversationSubtitleLargeText': 'Titulky konverzace / Režim velkého textu', + 'colorHighContrast': 'Vysoký barevný kontrast', + 'transDisclaimer': + 'Výkon překladu závisí na mikrofonu, latenci sítě a okolním hluku.', + + // 商品模块 - 会议商品页 'meetingRecording': 'Nahrávání schůzky', 'transcriptionAndSummary': 'Přepis a shrnutí', 'keywordSearch': 'Hledání klíčových slov', 'collaborationSharing': 'Spolupráce a sdílení', - // 商品名称(按ID) - 'ai_001_name': 'AI Základ 100', - 'ai_002_name': 'AI Základ 500', - 'ai_003_name': 'AI Základ 1000', - 'meet_001_name': 'Schůzky Základ 100', - 'meet_002_name': 'Schůzky Základ 500', - 'meet_003_name': 'Schůzky Základ 1000', - 'trans_001_name': 'Překlad Základ 100', - 'trans_002_name': 'Překlad Základ 500', - 'trans_003_name': 'Překlad Základ 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Zahrnuje 100 použití. Přístup k základním AI funkcím.', - 'ai_002_desc': 'Zahrnuje 500 použití. Přístup k základním AI funkcím.', - 'ai_003_desc': 'Zahrnuje 1000 použití. Přístup k základním AI funkcím.', - 'meet_001_desc': 'Zahrnuje 100 nahrávek/přepisů schůzek.', - 'meet_002_desc': 'Zahrnuje 500 nahrávek/přepisů schůzek.', - 'meet_003_desc': 'Zahrnuje 1000 nahrávek/přepisů schůzek.', - 'trans_001_desc': 'Zahrnuje 100 překladů (hlas/text).', - 'trans_002_desc': 'Zahrnuje 500 překladů (hlas/text).', - 'trans_003_desc': 'Zahrnuje 1000 překladů (hlas/text).', - -// 商品页通用页脚 - 'appNameProvider': 'Aplikace: VoiTrans · Poskytovatel: VoiTrans', - 'iapCustomerServiceQQLabel': 'Zákaznický servis IAP QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 'meetingHeaderDesc1': 'Nahrávání zvuku, přepis, hledání klíčových slov a automatické shrnutí pro zvýšení efektivity schůzek.', 'meetingHeaderDesc2': @@ -299,45 +368,7 @@ const Map csCZ = { 'meetingDisclaimer': 'Používejte v tichém prostředí; výkon závisí na mikrofonu a síti.', - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Simultánní tlumočení v reálném čase a překlad textu s nízkou latencí hlasu.', - 'transHeaderDesc2': 'Vhodné pro cestování, podnikání, projevy a výuku.', - 'translateZhEn': 'Čínsko-anglický překlad', - 'lowLatencyVoiceBroadcast': 'Hlasové vysílání s nízkou latencí', - 'multiLangTextTranslation': 'Vícejazyčný textový překlad', - 'termOptimizationContextPreserve': - 'Optimalizace terminologie a zachování kontextu', - 'lexiconTourBusinessLife': 'Slovníky pro cestování/podnikání/život', - 'personalVocabularyMemory': 'Paměť osobní slovní zásoby', - 'conversationSubtitleLargeText': 'Titulky konverzace / Režim velkého textu', - 'colorHighContrast': 'Vysoký barevný kontrast', - 'transDisclaimer': - 'Výkon překladu závisí na mikrofonu, latenci sítě a okolním hluku.', - - // AI 商品页描述 - 'aiHeaderDesc1': - 'Delší kvóta konverzace, více volání nástrojů, rozšířená délka kontextu.', - 'aiHeaderDesc2': 'Vhodné pro Q&A agenta, shrnutí, analýzu a provádění úkolů.', - 'musicSearchPlaybackControl': - 'Hledání v hudební knihovně a ovládání přehrávání', - 'smartPlaylistAndSimilarRecommendations': - 'Chytrý playlist a doporučení podobných skladeb', - 'routePlanningAndCongestionAvoidance': 'Plánování trasy a vyhýbání se zácpám', - 'voiceBroadcastAndWaypoints': 'Hlasové vysílání a nastavení průjezdních bodů', - 'realTimeWeatherForecast': 'Počasí v reálném čase a předpověď', - 'clothingAdviceAndTravelReminders': - 'Rady ohledně oblečení a cestovní připomínky', - 'poiSearchFoodGasParking': 'Hledání POI: stravování / benzín / parkování', - 'ratingsHoursAndDirectRoutes': 'Hodnocení, otevírací doba a přímé trasy', - 'hotNewsAndTopicOverview': 'Žhavé novinky a přehled témat', - 'longArticleSummariesAndKeyPoints': 'Shrnutí dlouhých článků a klíčové body', - 'helpCallAndSMS': 'Pomoc s hovory a SMS', - 'templatedMessagesAndScheduleReminders': 'Šablony zpráv a připomínky plánu', - 'aiDisclaimer': - 'Funkce závisí na oprávněních zařízení, dostupnosti služby a síťových podmínkách.', - - // 会员商品页 + // 商品模块 - VIP会员页 'benefitsOverview': 'Přehled výhod', 'higherQuota': 'Vyšší kvóta využití', 'lowerUnitPrice': 'Nižší jednotková cena', @@ -353,7 +384,32 @@ const Map csCZ = { 'vipDisclaimer': 'Skutečné výhody závisí na podrobnostech balíčku a mohou se měnit s verzemi.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Základ 100', + 'ai_002_name': 'AI Základ 500', + 'ai_003_name': 'AI Základ 1000', + 'meet_001_name': 'Schůzky Základ 100', + 'meet_002_name': 'Schůzky Základ 500', + 'meet_003_name': 'Schůzky Základ 1000', + 'trans_001_name': 'Překlad Základ 100', + 'trans_002_name': 'Překlad Základ 500', + 'trans_003_name': 'Překlad Základ 1000', + 'ai_001_desc': 'Zahrnuje 100 použití. Přístup k základním AI funkcím.', + 'ai_002_desc': 'Zahrnuje 500 použití. Přístup k základním AI funkcím.', + 'ai_003_desc': 'Zahrnuje 1000 použití. Přístup k základním AI funkcím.', + 'meet_001_desc': 'Zahrnuje 100 nahrávek/přepisů schůzek.', + 'meet_002_desc': 'Zahrnuje 500 nahrávek/přepisů schůzek.', + 'meet_003_desc': 'Zahrnuje 1000 nahrávek/přepisů schůzek.', + 'trans_001_desc': 'Zahrnuje 100 překladů (hlas/text).', + 'trans_002_desc': 'Zahrnuje 500 překladů (hlas/text).', + 'trans_003_desc': 'Zahrnuje 1000 překladů (hlas/text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'Aplikace: VoiTrans · Poskytovatel: VoiTrans', + 'iapCustomerServiceQQLabel': 'Zákaznický servis IAP QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "Přeskočit", 'next': 'Další', 'sayLilyHint': 'Řekněte "Lily Lily" do mikrofonu', @@ -364,7 +420,6 @@ const Map csCZ = { 'guideAwakenSuccess': 'Skvělé! Lily je vzhůru – požádejte ji o pomoc.', 'confirmInput': 'Potvrdit vstup', 'guideClickSendPrefix': 'Klepněte na odeslat, ', - // AI 引导步骤 'guideWeatherStart': 'Řekněte Lily: „Jaké je dnes počasí?“', 'guideWeatherInput': 'Jaké je dnes počasí?', 'guideWeatherSend': 'Lily nahlásí počasí v reálném čase', @@ -391,7 +446,7 @@ const Map csCZ = { 'guideSmsSend': 'Lily odešle zprávu', 'guideSmsEnd': 'Zpráva odeslána – hlasové ovládání je pohodlné', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Začít schůzku", 'edit': 'Upravit', 'delete': 'Smazat', @@ -403,8 +458,6 @@ const Map csCZ = { 'recordingDetails': 'Podrobnosti nahrávky', 'aiSummary': 'AI shrnutí', 'meetingTranscript': 'Přepis schůzky', - - // Meeting模块 - 导航和基础功能 'files': 'Soubory', 'mine': 'Moje', 'connect': 'Připojit', @@ -457,7 +510,6 @@ const Map csCZ = { 'summarizing': 'Shrnování...', 'analyzing': 'Analyzování...', 'summaryComplete': 'Shrnutí dokončeno', - //'generating': '正在生成...', 'generate': 'Generovat', 'overview': 'Přehled', 'transcription': 'Přepis', @@ -466,6 +518,97 @@ const Map csCZ = { 'editSpeaker': 'Upravit', 'nameSpeaker': 'Pojmenovat mluvčího', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': 'Vytvořit', + 'templateDetails': 'Podrobnosti šablony', + 'tag': 'Štítek', + 'description': 'Popis', + 'template': 'Šablona', + 'deleteTemplate': 'Smazat šablonu', + 'deleteTemplateConfirm': 'Opravdu chcete smazat tuto šablonu?', + 'editTemplate': 'Upravit šablonu', + 'createTemplate': 'Vytvořit šablonu', + 'name': 'Název', + 'templateContentHint': 'Zadejte prosím obsah šablony! Tip: klikněte na tlačítko AI výše pro rychlé vygenerování obsahu šablony na základě zadaného názvu a popisu', + 'inputNameHint': 'Zadejte prosím název', + 'inputDescHint': 'Zadejte prosím popis', + 'custom': 'Vlastní', + 'pleaseEnter': 'Prosím zadejte', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': + 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Uložit myšlenkovou mapu', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'Exportovat', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Použít na všechny odstavce tohoto mluvčího', + 'summaryWillBeUpdatedAutomatically': + 'Souhrn se bude automaticky aktualizovat podle šablony', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Záznamy přepisů', 'templateCommunity': 'Komunita šablon', @@ -485,7 +628,7 @@ const Map csCZ = { 'Propojte zařízení Voitrans pro aktivaci Startovacího členství', 'unlockNow': 'Odemknout nyní', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Porovnání', 'detailedInfo': 'Podrobné informace', 'monthlyTranscriptionTime': 'Měsíční čas přepisu', @@ -521,8 +664,6 @@ const Map csCZ = { 'Snadno importujte zvukové soubory z místních nebo aplikací třetích stran, jako jsou hlasové poznámky, Google Drive atd.', 'multipleExportFormatsDesc': 'Exportujte své zvukové nahrávky, text přepisu a shrnutí v různých formátech (TXT, PDF, JPEG), aby vyhovovaly vašim potřebám.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -551,105 +692,26 @@ const Map csCZ = { 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Použít na všechny odstavce tohoto mluvčího', - 'summaryWillBeUpdatedAutomatically': - 'Souhrn se bude automaticky aktualizovat podle šablony', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': 'Analýza se nezdařila, zkuste to prosím později', + 'transcriptionFailed': 'Přepis se nezdařil, zkuste to prosím později', + 'summaryFailed': 'Nepodařilo se vytvořit shrnutí, zkuste to prosím později', + 'summaryFailedShort': 'Shrnutí se nezdařilo', + 'transcriptionFailedShort': 'Přepis se nezdařil', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Audio přehrávač není připraven, počkejte prosím', + 'playFailed': 'Chyba přehrávání', + 'audioFileNotFound': 'Zvukový soubor nenalezen', + 'fetchingAudio': 'Načítání zvuku z cloudu...', + 'playerLoadFailed': 'Nepodařilo se načíst audio přehrávač', // 设置页 "systemSettings": "Systémová nastavení", @@ -701,26 +763,15 @@ const Map csCZ = { "bleHeadsetFirmwareUpgrade": "Aktualizace firmwaru BLE sluchátek", "deviceManagement": "Správa zařízení", "manageConnectedDevices": "Správa připojených Bluetooth zařízení", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Aktuálně nejnovější verze {version}', 'checkUpdateFailed': 'Kontrola aktualizací selhala', 'networkErrorRetry': 'Chyba sítě, zkuste to prosím později', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Hlasový chat v reálném čase", "realtimeVoiceChatInfo": "Vyzkoušejte funkci inteligentní hlasové interakce (náhled funkce)", "loading": "Načítání...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Neznámé zařízení", "deviceTypeClassicBluetoothHeadset": "Klasická Bluetooth sluchátka", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth sluchátka", @@ -735,8 +786,7 @@ const Map csCZ = { "confirmUnbindMessage": "Opravdu chcete odpojit zařízení „{deviceName}“?", "confirmUnbindAction": "Potvrdit odpojení", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Vymazat historii chatu", "online": "Online", @@ -766,8 +816,9 @@ const Map csCZ = { "swipeUpForMore": "Potáhněte nahoru pro více", "callingTool": "Pomáhám vám, prosím čekejte!", // 正在帮您,请稍等! "voice_interrupt": "Přerušit", // 语音打断 + 'voice_interrupt_tip': 'Při zapnutí: AI nebude přerušen vaším hlasem během mluvení a může zpracovat pouze jedno kolo konverzace najednou. Pro zahájení nového kola stačí říct aktivační slovo.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Zahraj nějakou hudbu", // 来点音乐 "presetNavigation": "Navigace do", // 导航 "presetWeather": "Dnešní počasí", // 今日天气 @@ -779,7 +830,7 @@ const Map csCZ = { "todayNews": "Jaké jsou dnešní zprávy?", // 今日新闻 "nearbyFood": "Jaké dobré jídlo je v okolí?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Ahoj! Jsem **Lily**, mohu vám pomoci s:\n\n' '• Odpovídáním na otázky a poskytováním informací\n\n' '• Překladem řeči v reálném čase\n\n' @@ -799,18 +850,17 @@ const Map csCZ = { 'startVoiceInput': 'Začít hlasový vstup', 'startPhoneCallMode': 'Začít režim telefonního hovoru, začít hlasový vstup', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Zde zadejte svou zprávu...', // 全屏编辑器输入提示 'characterCount': '{count} znaků', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopírovat', 'copySuccess': 'Úspěšně zkopírováno', 'report': 'Nahlásit', 'submitSuccess': 'Úspěšně odesláno', 'submitFailed': 'Odeslání selhalo', 'reportSubmitted': 'Hlášení bylo odesláno, zpracujeme ho co nejdříve', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Škodlivé/nebezpečné', 'pornographicVulgar': 'Pornografické/vulgární', 'misleadingAttack': 'Zavádějící útok', @@ -820,17 +870,14 @@ const Map csCZ = { 'other': 'Jiné', 'reportDescriptionHint': 'Chceme znát důvod vašeho hlášení, můžete popsat problém, se kterým jste se setkali.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Generováno AI', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'Zde jsou některé doporučené hudby:', 'playList': 'Playlist', 'moreMusic': 'Více hudby', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'kilometrů', // 公里单位 'meters': 'metrů', // 米单位 'hours': 'hodin', // 小时单位 @@ -845,7 +892,7 @@ const Map csCZ = { "bicycling": "Jízda na kole", "tsransit": "Veřejná doprava", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Dotaz na počasí:', 'highest': 'Nejvyšší', 'lowest': 'Nejnižší', @@ -875,18 +922,8 @@ const Map csCZ = { "friday": "Pátek", "saturday": "Sobota", "sunday": "Neděle", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Uvítací odměna", - "firstBindRewardDesc": "Získali jste odměny za propojení.", - "vipLevelLabel": "Úroveň VIP:", - "expiryLabel": "Platnost:", - "notActivated": "Neaktivováno", - "aiChatCreditsLabel": "Kredity AI chatu:", - "translationCreditsLabel": "Kredity překladu:", - "meetingCreditsLabel": "Kredity schůzky:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Slunečno", "partlyCloudy": "Polojasno", "partlySunny": "Slunečno s mraky", @@ -907,7 +944,131 @@ const Map csCZ = { "haze": "Opar", "strongWind": "Silný vítr", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Překlad obrázků", + "textTranslation": "Překlad textu", + + // 翻译模块 - 主页 + "translationHistory": "Historie překladů", + "enableRecording": "Povolit nahrávání", + "viewAudioFiles": "Zobrazit audio soubory", + "headsetUser": "Uživatel sluchátek", + "phoneUser": "Uživatel telefonu", + "selectSourceLanguage": "Vyberte zdrojový jazyk", + "selectTargetLanguage": "Vyberte cílový jazyk", + "me": "Já", + "counterPart": "Protějšek", + "bluetoothCallStateError": + "Ujistěte se prosím, že jsou Bluetooth sluchátka připojena k telefonu a probíhá hovor", + "autoDetect": "Automatická detekce", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Detekce jazyka selhala", + "translationFailed": "Překlad selhal", + "pleaseInputText": "Zadejte prosím text", + "textTooLong": "Text je příliš dlouhý, maximálně 5000 znaků", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Žádná historie překladů", + "historyRecords": "Záznamy historie", + "clearResults": "Vymazat výsledky", + "clearHistory": "Vymazat historii", + "clearHistoryConfirm": + "Opravdu chcete vymazat celou historii překladů? Tuto operaci nelze vrátit zpět.", + "unknownLanguage": "Neznámý jazyk", + "deleteSessionRecord": "Smazat záznam relace", + "deleteSessionConfirm": + "Opravdu chcete smazat všechny záznamy překladů pro tuto relaci? Tuto operaci nelze vrátit zpět.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Vybrat zdroj obrázku", + "imagePreview": "Náhled obrázku", + "translationResult": "Výsledek překladu", + "recognitionResult": "Výsledek rozpoznání", + "translatedImagePreview": "Náhled přeloženého obrázku", + "translatedImageLoadFailed": "Načtení přeloženého obrázku selhalo", + "pleaseSelectImage": "Vyberte prosím obrázek", + "imageLoadFailed": "Načtení obrázku selhalo", + "imageQuality": "Kvalita obrázku", + "maxSize": "Max. velikost", + "close": "Zavřít", + "setImageQuality": "Nastavit kvalitu obrázku", + "currentQuality": "Aktuální kvalita: @value%", + "setMaxSize": "Nastavit max. velikost", + "currentMaxSize": "Aktuální: @pxpx", + "waitingForAction": "Čekání na akci", + "pleaseSelectImageToStart": "Vyberte prosím obrázek pro zahájení", + "chooseImage": "Vybrat obrázek", + "openingCamera": "Otevírání fotoaparátu...", + "openingPhotoAlbum": "Otevírání galerie...", + "cancelled": "Zrušeno", + "userCancelledSelection": "Uživatel zrušil výběr", + "translatingImage": "Překládání obrázku", + "callingImageTranslateService": "Volání služby překladu obrázků...", + "savingRecord": "Ukládání záznamu", + "savingTranslationResult": "Ukládání výsledku překladu...", + "translationCompleted": "Překlad dokončen", + "allStepsCompleted": "Všechny kroky dokončeny", + "processingFailed": "Zpracování selhalo", + "imageProcessingOrTranslationFailed": + "Zpracování nebo překlad obrázku selhalo. Zkuste to prosím znovu.\nChyba: {error}", + "imageTooLarge": "Velikost obrázku přesahuje limit 4 MB", + "imageTooLargeHint": + "Velikost obrázku přesahuje 4 MB. Snižte kvalitu nebo rozměry a zkuste to znovu", + "emptyTranslationResult": "API překladu obrázků vrátilo prázdný výsledek", + "imageTranslationFailedTryLater": + "Překlad obrázku selhal. Problém se sítí nebo limit rychlosti. Zkuste to prosím později", + "imageTranslationApiException": + "Výjimka API překladu obrázků. Zkontrolujte síť a zkuste to znovu", + "permissionRequired": "Vyžadováno oprávnění", + "cameraPermissionRequired": + "K fotografování je vyžadováno oprávnění k fotoaparátu", + "photoAlbumPermissionRequired": + "K výběru obrázků je vyžadováno oprávnění ke galerii", + "translationDetails": "Podrobnosti překladu", + "originalImage": "Původní obrázek", + "sourceLanguage": "Zdrojový jazyk", + "targetLanguage": "Cílový jazyk", + "translationTime": "Čas překladu", + "shareInDevelopment": "Funkce sdílení je ve vývoji", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Přeložit audio soubory", + "noAudioFiles": "Žádné audio soubory", + "calculating": "Výpočet...", + "playing": "Přehrávání...", + "paused": "Pozastaveno", + "clickToPlay": "Klikněte pro přehrání", + "rename": "Přejmenovat", + "smartTranscription": "Inteligentní přepis", + "renameAudioFile": "Přejmenovat audio soubor", + "enterNewFileName": "Zadejte prosím nový název souboru", + + // 翻译模块 - 翻译详情 + "originalRecord": "Původní záznam", + "recordSummary": "Shrnutí záznamu", + "clickToGenerateSummary": + "Klikněte na tlačítko níže pro vygenerování shrnutí relace", + "summaryContent": "Obsah shrnutí", + "copied": "Zkopírováno", + "summaryCopiledToClipboard": "Shrnutí bylo zkopírováno do schránky", + "extractSummary": "Extrahovat shrnutí", + "summaryGenerated": "Shrnutí vygenerováno", + "generating": "Generování...", + "regenerate": "Regenerovat", + "summaryTimeoutMessage": + "Požadavek na generování shrnutí vypršel, možná kvůli problému se sítí nebo přetížení serveru.", + "deleteTranslationRecord": "Smazat záznam překladu", + "deleteTranslationConfirm": + "Opravdu chcete smazat tento záznam překladu? Tuto operaci nelze vrátit zpět.", + "originalText": "Původní text", + "translatedText": "Přeložený text", + "sessionSummary": "Shrnutí relace", + "cannotShare": "Nelze sdílet", + "generateSummaryFirst": "Nejprve prosím vygenerujte shrnutí", + "translationSessionRecord": "Záznam relace překladu", + + // 个人资料模块 "editProfile": "Upravit osobní informace", "avatar": "Avatar", "nickname": "Přezdívka", @@ -923,8 +1084,6 @@ const Map csCZ = { 'Opravdu chcete trvale smazat svůj účet? Tuto operaci nelze vrátit zpět', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'Připojení k síti selhalo, zkontrolujte prosím nastavení sítě a zkuste to znovu', 'serverTemporarilyUnavailable': @@ -941,10 +1100,6 @@ const Map csCZ = { 'Připojení k síti selhalo, zkontrolujte prosím nastavení sítě', 'serverInternalErrorRetryLater': 'Vnitřní chyba serveru, zkuste to prosím později', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Komprese obrázku selhala', 'avatarUpdateFailed': 'Aktualizace avataru selhala', 'usernameCannotBeEmpty': 'Uživatelské jméno nemůže být prázdné', @@ -955,8 +1110,6 @@ const Map csCZ = { 'logoutFailedRetry': 'Odhlášení selhalo, zkuste to prosím znovu', 'accountPermanentlyDeleted': 'Účet byl trvale smazán', 'deleteAccountFailedRetry': 'Smazání účtu selhalo, zkuste to prosím znovu', - - // 账号服务相关 'clearUserDataFailed': 'Vymazání uživatelských dat selhalo', // 清理用户数据失败 'deleteUserDataFailed': 'Smazání uživatelských dat selhalo', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'Odhlášení třetí strany úspěšné', // 第三方登录退出成功 @@ -969,7 +1122,12 @@ const Map csCZ = { 'accountServiceInitialized': 'AccountService byl inicializován', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': + 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', 'getPermissionStatusFailed': 'Získání stavu oprávnění selhalo', 'communicationPermissions': 'Komunikační oprávnění', 'bluetoothPermissions': 'Oprávnění Bluetooth', @@ -982,7 +1140,6 @@ const Map csCZ = { 'phone': 'Telefon', 'sms': 'SMS', 'contacts': 'Kontakty', - //'bluetooth': '蓝牙', 'notification': 'Oznámení', 'alarm': 'Budík', 'calendarWrite': 'Zápis do kalendáře', @@ -1040,8 +1197,6 @@ const Map csCZ = { 'permanentDenialText': 'Trvale jste odmítli oprávnění {permission}, přejděte prosím do nastavení aplikace a povolte ho', 'goToSettings': 'Přejít do nastavení', - - // 权限申请 'bluetoothScan': 'Skenování Bluetooth', 'bluetoothConnect': 'Připojení Bluetooth', 'bluetoothScanExplanation': @@ -1066,7 +1221,6 @@ const Map csCZ = { 'Trvale jste odmítli oprávnění k oznámení, přejděte prosím do nastavení a povolte jej.', 'locationPermissionPermanentDenial': 'Trvale jste odmítli oprávnění k poloze, přejděte prosím do nastavení a povolte jej.', -//'microphonePermission': '录音', 'storagePermission': 'Úložiště', 'microphonePermissionExplanation': 'Potřebujeme oprávnění k mikrofonu pro nahrávání zvukového obsahu.', @@ -1076,8 +1230,6 @@ const Map csCZ = { 'Oprávnění k mikrofonu bylo trvale odmítnuto. Chcete-li tuto funkci dále používat, přejděte prosím do nastavení aplikace a ručně povolte oprávnění k mikrofonu.', 'storagePermissionPermanentDenial': 'Oprávnění k úložišti bylo trvale odmítnuto. Chcete-li tuto funkci dále používat, přejděte prosím do nastavení aplikace a ručně povolte oprávnění k úložišti.', - - //permission_util.dart 'permissionUtilNeed': 'Je třeba ', 'permissionUtilPermission': ' oprávnění', 'permissionUtilRestricted': ' Oprávnění omezeno', @@ -1085,7 +1237,20 @@ const Map csCZ = { 'Tato funkce není k dispozici nebo je na aktuálním zařízení omezena, zkontrolujte prosím nastavení zařízení nebo systémová omezení', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Probíhá navigace', + 'native.notification.navigation.keepRunning': 'Navigace, nechte aplikaci spuštěnou', + 'native.notification.bleAgent.running': 'Hlasový asistent běží', + 'native.notification.audioRecording.recording': 'Nahrávání zvuku, klepněte pro návrat do aplikace', + 'native.notification.music.waiting': 'Čekání na přehrávání', + 'native.notification.music.previous': 'Předchozí', + 'native.notification.music.next': 'Další', + 'native.notification.music.play': 'Přehrát', + 'native.notification.music.pause': 'Pozastavit', + 'native.notification.qqMusic.playing': 'Přehrávání hudby', + + // 版本更新 'newVersionFound': 'Nalezena nová verze', // 版本更新对话框标题 'remindLater': 'Připomenout později', // 稍后提醒按钮 'updateNow': 'Aktualizovat nyní', // 立即更新按钮 @@ -1096,254 +1261,7 @@ const Map csCZ = { 'updateErrorRetry': 'Během aktualizace došlo k chybě, zkuste to prosím později', // 更新错误重试提示 - //国家列表 - "邮箱": "E-mail", - "中国": "Čína", - "美国": "USA", - "加拿大": "Kanada", - "俄罗斯": "Rusko", - "英国": "Velká Británie", - "德国": "Německo", - "意大利": "Itálie", - "法国": "Francie", - "西班牙": "Španělsko", - "南非": "Jižní Afrika", - "沙特阿拉伯": "Saúdská Arábie", - "土耳其": "Turecko", - "日本": "Japonsko", - "韩国": "Jižní Korea", - "新加坡": "Singapur", - "马来西亚": "Malajsie", - "泰国": "Thajsko", - "越南": "Vietnam", - "印度": "Indie", - "巴基斯坦": "Pákistán", - "菲律宾": "Filipíny", - "印度尼西亚": "Indonésie", - "阿联酋": "SAE", - "墨西哥": "Mexiko", - "巴西": "Brazílie", - "阿根廷": "Argentina", - "澳大利亚": "Austrálie", - "新西兰": "Nový Zéland", - "中国香港": "Hongkong", - "中国澳门": "Macao", - "中国台湾": "Tchaj-wan", - "埃及": "Egypt", - "希腊": "Řecko", - "荷兰": "Nizozemsko", - "比利时": "Belgie", - "匈牙利": "Maďarsko", - "罗马尼亚": "Rumunsko", - "瑞士": "Švýcarsko", - "奥地利": "Rakousko", - "丹麦": "Dánsko", - "瑞典": "Švédsko", - "挪威": "Norsko", - "波兰": "Polsko", - "秘鲁": "Peru", - "智利": "Chile", - "哥伦比亚": "Kolumbie", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugalsko", - "卢森堡": "Lucembursko", - "爱尔兰": "Irsko", - "冰岛": "Island", - "阿尔巴尼亚": "Albánie", - "马耳他": "Malta", - "塞浦路斯": "Kypr", - "芬兰": "Finsko", - "保加利亚": "Bulharsko", - "立陶宛": "Litva", - "拉脱维亚": "Lotyšsko", - "爱沙尼亚": "Estonsko", - "乌克兰": "Ukrajina", - "塞尔维亚": "Srbsko", - "克罗地亚": "Chorvatsko", - "斯洛文尼亚": "Slovinsko", - "捷克": "Česko", - "斯洛伐克": "Slovensko", - "危地马拉": "Guatemala", - "萨尔瓦多": "Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nikaragua", - "哥斯达黎加": "Kostarika", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolívie", - "厄瓜多尔": "Ekvádor", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Maroko", - "阿尔及利亚": "Alžírsko", - "突尼斯": "Tunisko", - "尼日利亚": "Nigérie", - "加纳": "Ghana", - "埃塞俄比亚": "Etiopie", - "肯尼亚": "Keňa", - "坦桑尼亚": "Tanzanie", - "乌干达": "Uganda", - "孟加拉国": "Bangladéš", - "以色列": "Izrael", - "黎巴嫩": "Libanon", - "约旦": "Jordánsko", - "伊拉克": "Irák", - "科威特": "Kuvajt", - "巴林": "Bahrajn", - "卡塔尔": "Katar", - "阿曼": "Omán", - "阿富汗": "Afghánistán", - "斯里兰卡": "Srí Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepál", - "蒙古": "Mongolsko", - "柬埔寨": "Kambodža", - "老挝": "Laos", - "文莱": "Brunej", - "东帝汶": "Východní Timor", - "斐济": "Fidži", - "所罗门群岛": "Šalamounovy ostrovy", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Překlad obrázků", - "textTranslation": "Překlad textu", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Historie překladů", - "enableRecording": "Povolit nahrávání", - "viewAudioFiles": "Zobrazit audio soubory", - "headsetUser": "Uživatel sluchátek", - "phoneUser": "Uživatel telefonu", - "selectSourceLanguage": "Vyberte zdrojový jazyk", - "selectTargetLanguage": "Vyberte cílový jazyk", - "me": "Já", - "counterPart": "Protějšek", - "bluetoothCallStateError": - "Ujistěte se prosím, že jsou Bluetooth sluchátka připojena k telefonu a probíhá hovor", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Automatická detekce", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Detekce jazyka selhala", - "translationFailed": "Překlad selhal", - "pleaseInputText": "Zadejte prosím text", - "textTooLong": "Text je příliš dlouhý, maximálně 5000 znaků", - - // 翻译历史页 - "noTranslationHistory": "Žádná historie překladů", - "historyRecords": "Záznamy historie", - "clearResults": "Vymazat výsledky", - "clearHistory": "Vymazat historii", - "clearHistoryConfirm": - "Opravdu chcete vymazat celou historii překladů? Tuto operaci nelze vrátit zpět.", - "unknownLanguage": "Neznámý jazyk", - "deleteSessionRecord": "Smazat záznam relace", - "deleteSessionConfirm": - "Opravdu chcete smazat všechny záznamy překladů pro tuto relaci? Tuto operaci nelze vrátit zpět.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Vybrat zdroj obrázku", - "imagePreview": "Náhled obrázku", - "translationResult": "Výsledek překladu", - "recognitionResult": "Výsledek rozpoznání", - "translatedImagePreview": "Náhled přeloženého obrázku", - "translatedImageLoadFailed": "Načtení přeloženého obrázku selhalo", - "pleaseSelectImage": "Vyberte prosím obrázek", - "imageLoadFailed": "Načtení obrázku selhalo", - "imageQuality": "Kvalita obrázku", - "maxSize": "Max. velikost", - "close": "Zavřít", - "setImageQuality": "Nastavit kvalitu obrázku", - "currentQuality": "Aktuální kvalita: @value%", - "setMaxSize": "Nastavit max. velikost", - "currentMaxSize": "Aktuální: @pxpx", - "waitingForAction": "Čekání na akci", - "pleaseSelectImageToStart": "Vyberte prosím obrázek pro zahájení", - "chooseImage": "Vybrat obrázek", - "openingCamera": "Otevírání fotoaparátu...", - "openingPhotoAlbum": "Otevírání galerie...", - "cancelled": "Zrušeno", - "userCancelledSelection": "Uživatel zrušil výběr", - "translatingImage": "Překládání obrázku", - "callingImageTranslateService": "Volání služby překladu obrázků...", - "savingRecord": "Ukládání záznamu", - "savingTranslationResult": "Ukládání výsledku překladu...", - "translationCompleted": "Překlad dokončen", - "allStepsCompleted": "Všechny kroky dokončeny", - "processingFailed": "Zpracování selhalo", - "imageProcessingOrTranslationFailed": - "Zpracování nebo překlad obrázku selhalo. Zkuste to prosím znovu.\nChyba: {error}", - "imageTooLarge": "Velikost obrázku přesahuje limit 4 MB", - "imageTooLargeHint": - "Velikost obrázku přesahuje 4 MB. Snižte kvalitu nebo rozměry a zkuste to znovu", - "emptyTranslationResult": "API překladu obrázků vrátilo prázdný výsledek", - "imageTranslationFailedTryLater": - "Překlad obrázku selhal. Problém se sítí nebo limit rychlosti. Zkuste to prosím později", - "imageTranslationApiException": - "Výjimka API překladu obrázků. Zkontrolujte síť a zkuste to znovu", - "permissionRequired": "Vyžadováno oprávnění", - "cameraPermissionRequired": - "K fotografování je vyžadováno oprávnění k fotoaparátu", - "photoAlbumPermissionRequired": - "K výběru obrázků je vyžadováno oprávnění ke galerii", - "translationDetails": "Podrobnosti překladu", - "originalImage": "Původní obrázek", - "sourceLanguage": "Zdrojový jazyk", - "targetLanguage": "Cílový jazyk", - "translationTime": "Čas překladu", - "shareInDevelopment": "Funkce sdílení je ve vývoji", - - // 翻译录音文件列表页 - "translateAudioFiles": "Přeložit audio soubory", - "noAudioFiles": "Žádné audio soubory", - "calculating": "Výpočet...", - "playing": "Přehrávání...", - "paused": "Pozastaveno", - "clickToPlay": "Klikněte pro přehrání", - "rename": "Přejmenovat", - "smartTranscription": "Inteligentní přepis", - "renameAudioFile": "Přejmenovat audio soubor", - "enterNewFileName": "Zadejte prosím nový název souboru", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Původní záznam", - "recordSummary": "Shrnutí záznamu", - "clickToGenerateSummary": - "Klikněte na tlačítko níže pro vygenerování shrnutí relace", - "summaryContent": "Obsah shrnutí", - "copied": "Zkopírováno", - "summaryCopiledToClipboard": "Shrnutí bylo zkopírováno do schránky", - "extractSummary": "Extrahovat shrnutí", - "summaryGenerated": "Shrnutí vygenerováno", - "generating": "Generování...", - "regenerate": "Regenerovat", - "summaryTimeoutMessage": - "Požadavek na generování shrnutí vypršel, možná kvůli problému se sítí nebo přetížení serveru.", - "deleteTranslationRecord": "Smazat záznam překladu", - "deleteTranslationConfirm": - "Opravdu chcete smazat tento záznam překladu? Tuto operaci nelze vrátit zpět.", - "originalText": "Původní text", - "translatedText": "Přeložený text", - "sessionSummary": "Shrnutí relace", - "cannotShare": "Nelze sdílet", - "generateSummaryFirst": "Nejprve prosím vygenerujte shrnutí", - "translationSessionRecord": "Záznam relace překladu", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Párování zařízení", "connectYourDeepSoundHeadset": "Připojte svá sluchátka Voitrans", "bind": "Svázat", @@ -1352,14 +1270,11 @@ const Map csCZ = { "autoInputCode": "Automatické zadání kódu", "skipBinding": "Přeskočit svázání", "rescan": "Znovu skenovat", - "verifyingDevice": "Ověřování zařízení...", "confirmBinding": "Potvrdit svázání", "associatingDevice": "Přidružování zařízení...", "goToBluetoothSettings": "Přejít do nastavení Bluetooth", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Připraveno k párování", "preparingPairingEnvironment": "Příprava prostředí pro párování...", "connectDeepSoundViaSystemBluetooth": @@ -1369,8 +1284,6 @@ const Map csCZ = { "waitingCompletePairing": "Čekejte prosím, dokončování párování...", "pairingSuccessRedirecting": "Párování úspěšné! Přesměrování na hlavní stránku...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Ujistěte se prosím, že připojené zařízení je Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1383,19 +1296,12 @@ const Map csCZ = { "authorizationFailedCheckCode": "Autorizace selhala, zkontrolujte prosím, zda je autorizační kód správný", "pairingFailedRetry": "Párování selhalo, zkuste to prosím znovu", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Zapněte prosím Bluetooth', 'deviceDisconnected': 'Zařízení bylo odpojeno', 'readyToStartPairing': 'Připraveno k zahájení párování', 'checkingEnvironment': 'Kontrola prostředí...', 'ensureHeadsetOnAndPairingMode': 'Ujistěte se prosím, že jsou sluchátka zapnutá a v režimu párování', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Navazování bezpečného spojení...', 'needManualBindingAuthCode': 'Potřeba ručního autorizačního kódu pro svázání...', @@ -1418,8 +1324,6 @@ const Map csCZ = { 'bleConnectionFailed': 'BLE připojení selhalo', 'deviceAuthorizationFailedCheckCode': 'Autorizace zařízení selhala, zkontrolujte prosím autorizační kód', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Vyžadována ruční aktivace Bluetooth', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Postupujte prosím podle těchto kroků:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1432,7 +1336,18 @@ const Map csCZ = { 'Tip: Můžete také dlouze stisknout ikonu Bluetooth v Ovládacím centru pro rychlý přístup k nastavení Bluetooth', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'Rozumím', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Uvítací odměna", + "firstBindRewardDesc": "Získali jste odměny za propojení.", + "vipLevelLabel": "Úroveň VIP:", + "expiryLabel": "Platnost:", + "notActivated": "Neaktivováno", + "aiChatCreditsLabel": "Kredity AI chatu:", + "translationCreditsLabel": "Kredity překladu:", + "meetingCreditsLabel": "Kredity schůzky:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Zpětná vazba uživatele", 'feedbackInfo': 'Poskytněte zpětnou vazbu nebo návrhy', 'feedbackDescription': 'Popište prosím váš problém nebo návrh', @@ -1475,7 +1390,7 @@ const Map csCZ = { "removeEarbudsEnsureBattery": "Vyjměte obě sluchátka a ujistěte se, že baterie obou je nad 20%", - // 音乐列表页面 + // 音乐模块 "noMusic": "Žádná hudba", // 暂无音乐 "noPlayingMusic": "Žádná přehrávaná hudba", // 暂无播放音乐 "unknownSong": "Neznámá píseň", // 未知歌曲 @@ -1523,22 +1438,122 @@ const Map csCZ = { "波斯语": "Perština", "斯瓦希里语": "Svahilština", - // 时间相关 - "justNow": "Právě teď", - "minutesAgo": "před @minutes minutami", - "yesterday": "Včera", - // 时间扩展(图片翻译模块使用) - "daysAgo": "před @days dny", - "hoursAgo": "před @hours hodinami", - - //补充 - "insufficientIntegral": "Nedostatek bodů", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Nedostatečný zůstatek, přejděte prosím na příslušnou stránku pro dobití.', - "recharge": 'Přejít na dobití', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI členství vypršelo, přejděte prosím na stránku dobíjení členství pro obnovení.', + // 国家列表 + "邮箱": "E-mail", + "中国": "Čína", + "美国": "USA", + "加拿大": "Kanada", + "俄罗斯": "Rusko", + "英国": "Velká Británie", + "德国": "Německo", + "意大利": "Itálie", + "法国": "Francie", + "西班牙": "Španělsko", + "南非": "Jižní Afrika", + "沙特阿拉伯": "Saúdská Arábie", + "土耳其": "Turecko", + "日本": "Japonsko", + "韩国": "Jižní Korea", + "新加坡": "Singapur", + "马来西亚": "Malajsie", + "泰国": "Thajsko", + "越南": "Vietnam", + "印度": "Indie", + "巴基斯坦": "Pákistán", + "菲律宾": "Filipíny", + "印度尼西亚": "Indonésie", + "阿联酋": "SAE", + "墨西哥": "Mexiko", + "巴西": "Brazílie", + "阿根廷": "Argentina", + "澳大利亚": "Austrálie", + "新西兰": "Nový Zéland", + "中国香港": "Hongkong", + "中国澳门": "Macao", + "中国台湾": "Tchaj-wan", + "埃及": "Egypt", + "希腊": "Řecko", + "荷兰": "Nizozemsko", + "比利时": "Belgie", + "匈牙利": "Maďarsko", + "罗马尼亚": "Rumunsko", + "瑞士": "Švýcarsko", + "奥地利": "Rakousko", + "丹麦": "Dánsko", + "瑞典": "Švédsko", + "挪威": "Norsko", + "波兰": "Polsko", + "秘鲁": "Peru", + "智利": "Chile", + "哥伦比亚": "Kolumbie", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portugalsko", + "卢森堡": "Lucembursko", + "爱尔兰": "Irsko", + "冰岛": "Island", + "阿尔巴尼亚": "Albánie", + "马耳他": "Malta", + "塞浦路斯": "Kypr", + "芬兰": "Finsko", + "保加利亚": "Bulharsko", + "立陶宛": "Litva", + "拉脱维亚": "Lotyšsko", + "爱沙尼亚": "Estonsko", + "乌克兰": "Ukrajina", + "塞尔维亚": "Srbsko", + "克罗地亚": "Chorvatsko", + "斯洛文尼亚": "Slovinsko", + "捷克": "Česko", + "斯洛伐克": "Slovensko", + "危地马拉": "Guatemala", + "萨尔瓦多": "Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nikaragua", + "哥斯达黎加": "Kostarika", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Bolívie", + "厄瓜多尔": "Ekvádor", + "巴拉圭": "Paraguay", + "乌拉圭": "Uruguay", + "摩洛哥": "Maroko", + "阿尔及利亚": "Alžírsko", + "突尼斯": "Tunisko", + "尼日利亚": "Nigérie", + "加纳": "Ghana", + "埃塞俄比亚": "Etiopie", + "肯尼亚": "Keňa", + "坦桑尼亚": "Tanzanie", + "乌干达": "Uganda", + "孟加拉国": "Bangladéš", + "以色列": "Izrael", + "黎巴嫩": "Libanon", + "约旦": "Jordánsko", + "伊拉克": "Irák", + "科威特": "Kuvajt", + "巴林": "Bahrajn", + "卡塔尔": "Katar", + "阿曼": "Omán", + "阿富汗": "Afghánistán", + "斯里兰卡": "Srí Lanka", + "缅甸": "Myanmar", + "尼泊尔": "Nepál", + "蒙古": "Mongolsko", + "柬埔寨": "Kambodža", + "老挝": "Laos", + "文莱": "Brunej", + "东帝汶": "Východní Timor", + "斐济": "Fidži", + "所罗门群岛": "Šalamounovy ostrovy", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/da_dk.dart b/lib/core/translations/language/da_dk.dart index ed704e607..d1e9e3581 100644 --- a/lib/core/translations/language/da_dk.dart +++ b/lib/core/translations/language/da_dk.dart @@ -1,4 +1,5 @@ const Map daDK = { + // 通用 'continue': 'Fortsæt', 'confirm': 'Bekræft', @@ -18,6 +19,11 @@ const Map daDK = { "unknownError": "Ukendt fejl", "asrConnectionFailed": "Forbindelsen til talegenkendelsestjenesten mislykkedes. Kontroller netværket, eller prøv igen senere.", + "justNow": "Lige nu", + "minutesAgo": "for @minutes minutter siden", + "yesterday": "I går", + "daysAgo": "for @days dage siden", + "hoursAgo": "for @hours timer siden", // 启动页 "slogan": "Forbind verden, ud over lyd", @@ -28,7 +34,7 @@ const Map daDK = { "explore": "Udforsk", "settings": "Indstillinger", - // 语言 + // 语言列表 "followingSystem": "Følg system", "chinese": "Kinesisk", "english": "Engelsk", @@ -72,7 +78,7 @@ const Map daDK = { "arabic": "Arabisk", "persian": "Farsisk", - // 登录页 + // 登录模块 "welcome": "Velkommen", "loginTips": "Log ind eller tilmeld dig med telefonnummer eller e-mail", "accountNumber": "Telefonnummer eller e-mail", @@ -100,13 +106,9 @@ const Map daDK = { "resendVerificationCode": "Send verifikationskode igen", "login": "Log ind", "usePasswordLogin": "Brug adgangskode login", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans erklæring", // Voitrans 声明 "welcomeToThisApp": "Velkommen til Voitrans, læs venligst grundigt", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ". Ved at klikke 'Accepter og fortsæt' angiver du, at du har læst og accepteret ovenstående aftaler fuldt ud. Ved at klikke 'Accepter ikke' vil applikationen lukke.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Accepter ikke", // 不同意 @@ -164,7 +166,7 @@ const Map daDK = { 'right': 'Højre', 'checkConnectionStatusFailed': 'Kontrol af forbindelsesstatus mislykkedes', -// 发现页 + // 发现页 "searchAi": "Søg AI funktioner...", "exploreSlogan": "Smarte øretelefoner, uendelige muligheder", "exploreSlogan1": "Smart ledsager, uendelige muligheder", @@ -188,6 +190,7 @@ const Map daDK = { "usageStats": "Brugsstatistik", "usageStatsInfo": "Se statistik for brug af appen", "scene": "Scenarier", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Oversættelsesstatistik", @@ -208,7 +211,6 @@ const Map daDK = { "translationApi": "Oversættelses-API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Datamængdestatistik", "sourceTextCharacters": "Kildeteksttegn", "ttsTextCharacters": "TTS Teksttegn", @@ -225,7 +227,6 @@ const Map daDK = { "totalAudioDuration": "Total lydvarighed", "audioFileSize": "Lydfilstørrelse", "transcriptBytes": "Udskriftbytes", - // 通知文案 "loadFailed": "Indlæsning mislykkedes", "statsLoadFailedTryLater": "Statistik kunne ikke indlæses. Prøv venligst igen senere.", @@ -234,88 +235,79 @@ const Map daDK = { "exportFeature": "Eksportfunktion", "exportInDevelopment": "Dataeksport er under udvikling", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Tilgængelige pakker', 'remainingQuota': 'Resterende kvote', 'totalQuota': 'Total kvote', 'remaining': 'Resterende', 'featureDescription': 'Funktionsbeskrivelse', - // AI 功能卡片 + 'paymentSuccess': 'Betaling gennemført', + 'paymentFailed': 'Betaling mislykkedes', + 'gotIt': 'Forstået', + 'paymentFailedTryAgain': 'Betaling mislykkedes. Prøv igen.', + 'selectPaymentMethod': 'Vælg betalingsmetode', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Kunne ikke oprette WeChat-ordre', + 'alipayOrderCreateFailed': 'Kunne ikke oprette Alipay-ordre', + 'appleOrderCreateFailed': 'Kunne ikke oprette Apple-ordre', + 'googleOrderCreateFailed': 'Kunne ikke oprette Google-ordre', + 'paypalOrderCreateFailed': 'Kunne ikke oprette PayPal-ordre', + 'paymentException': 'Betalingsundtagelse', + 'paymentLaunchFailed': 'Kunne ikke starte betaling', + 'paymentExceptionWithError': 'Betalingsundtagelse: @error', + 'paymentProcessingCheckLater': 'Din ordre behandles. Tjek igen senere.', + 'paymentResultQueryException': 'Kunne ikke hente betalingsresultat: @error', + 'orderConfirmedQuotaRefreshed': 'Ordre bekræftet. Din kvote er blevet opdateret.', + 'paymentCompletedConfirming': 'Betaling gennemført. Bekræfter…', + 'paymentCancelled': 'Betaling annulleret', + 'paypalOpenedCompleteInBrowser': 'PayPal er åbnet. Gennemfør betalingen i din browser.', + 'paypalOpenFailed': 'Kan ikke åbne PayPal-betalingssiden', + 'paymentTestTitle': 'Betalingstest', + 'paymentTestOrderInfo': 'Testordreinformation', + 'paymentTestProductId': 'Produkt-ID', + 'paymentTestProductDescription': 'Produktbeskrivelse', + 'paymentTestWechatDescription': 'WeChat Pay betalingstest', + 'paymentTestAlipayDescription': 'Alipay betalingstest', + 'paymentTestAmount': 'Beløb', + 'paymentTestSelectAmount': 'Vælg testbeløb', + 'paying': 'Betaler...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Betalingsstatus', + 'errorInfoWithMessage': 'Fejl: @message', + 'retest': 'Test igen', + 'paymentTestInstructionsTitle': 'Instruktioner', + 'paymentTestInstructionsContent': '1. Vælg et testbeløb (anbefalet: ¥0,01)\n2. Klik på betalingsknappen for at starte\n3. Gennemfør betalingen i betalingsappen\n4. Gå tilbage for at tjekke resultatet', + 'startingWechatPayment': 'Starter WeChat Pay...', + 'startingAlipayPayment': 'Starter Alipay...', + 'wechatPaymentSuccess': 'WeChat Pay gennemført!', + 'wechatPaymentFailed': 'WeChat Pay mislykkedes', + 'wechatPaymentLaunchFailed': 'Kunne ikke starte WeChat Pay', + 'cannotLaunchWechatPayment': 'Kan ikke starte WeChat Pay', + 'wechatPaymentException': 'WeChat Pay-undtagelse', + 'wechatPaymentTestCompleted': 'WeChat Pay-test gennemført', + 'alipayPaymentSuccess': 'Alipay gennemført!', + 'alipayPaymentFailed': 'Alipay mislykkedes', + 'alipayPaymentLaunchFailed': 'Kunne ikke starte Alipay', + 'cannotLaunchAlipayPayment': 'Kan ikke starte Alipay', + 'alipayPaymentException': 'Alipay-undtagelse', + "insufficientIntegral": "Utilstrækkelige point", + "insufficientBalanceDesc": + 'Utilstrækkelig saldo, gå venligst til den tilsvarende genopfyldningsside for at genopfylde.', + "recharge": 'Gå til genopfyldning', + "aiMemberExpiredDesc": + 'AI medlemskab udløbet, gå venligst til medlemskabsgenopfyldningssiden for at forny.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Musik & anbefaling', 'navigationAndRoutes': 'Navigation & ruter', 'nearbySearch': 'Søgning i nærheden', 'newsInformation': 'Nyheder', 'communicationAssistant': 'Kommunikationsassistent', - // 翻译功能卡片 - 'realtimeTranscription': 'Realtidstranskription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenarieordbog', - 'subtitleDisplay': 'Undertekster', - // 会议功能卡片 - 'meetingRecording': 'Mødeoptagelse', - 'transcriptionAndSummary': 'Transkription & sammendrag', - 'keywordSearch': 'Søgeordsøgning', - 'collaborationSharing': 'Samarbejde & deling', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Møde Basic 100', - 'meet_002_name': 'Møde Basic 500', - 'meet_003_name': 'Møde Basic 1000', - 'trans_001_name': 'Oversættelse Basic 100', - 'trans_002_name': 'Oversættelse Basic 500', - 'trans_003_name': 'Oversættelse Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Inkluderer 100 anvendelser. Adgang til kerne AI-funktioner.', - 'ai_002_desc': 'Inkluderer 500 anvendelser. Adgang til kerne AI-funktioner.', - 'ai_003_desc': 'Inkluderer 1000 anvendelser. Adgang til kerne AI-funktioner.', - 'meet_001_desc': 'Inkluderer 100 mødeoptagelser/transkriptioner.', - 'meet_002_desc': 'Inkluderer 500 mødeoptagelser/transkriptioner.', - 'meet_003_desc': 'Inkluderer 1000 mødeoptagelser/transkriptioner.', - 'trans_001_desc': 'Inkluderer 100 oversættelser (stemme/tekst).', - 'trans_002_desc': 'Inkluderer 500 oversættelser (stemme/tekst).', - 'trans_003_desc': 'Inkluderer 1000 oversættelser (stemme/tekst).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Leveret af: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP kundeservice QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Lydoptagelse, transkription, søgeordsøgning og automatisk sammendrag for at øge mødeeffektiviteten.', - 'meetingHeaderDesc2': - 'Velegnet til forretningsmøder, klassenoter og interviewreferater.', - 'meetingAutoRecording': 'Automatisk optagelse og segmentering', - 'meetingSpeakerTagging': 'Taleridentifikation', - 'meetingLongAudioTranscription': 'Lang lydtranskription', - 'meetingKeyPointSummary': 'Udtrækning af hovedpunkter', - 'meetingTopicNameSearch': 'Søg efter emne/navn', - 'meetingTimelineJump': 'Tidslinjehop', - 'meetingExportSummary': 'Eksportér referat', - 'meetingMultiPlatformShare': 'Del på tværs af platforme', - 'meetingDisclaimer': - 'Brug i stille omgivelser; ydeevne afhænger af mikrofon og netværk.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Realtids simultantolkning og tekstoversættelse med lav latenstid.', - 'transHeaderDesc2': 'Velegnet til rejser, forretning, taler og undervisning.', - 'translateZhEn': 'Kinesisk-engelsk oversættelse', - 'lowLatencyVoiceBroadcast': 'Stemmeudsendelse med lav latenstid', - 'multiLangTextTranslation': 'Flersproget tekstoversættelse', - 'termOptimizationContextPreserve': - 'Terminologioptimering og kontekstbevarelse', - 'lexiconTourBusinessLife': 'Rejse/Forretning/Livsstil ordbøger', - 'personalVocabularyMemory': 'Personlig ordforrådshukommelse', - 'conversationSubtitleLargeText': 'Samtaleundertekster / Stor teksttilstand', - 'colorHighContrast': 'Høj farvekontrast', - 'transDisclaimer': - 'Oversættelsesydelse afhænger af mikrofon, netværkslatenstid og omgivende støj.', - - // AI 商品页描述 'aiHeaderDesc1': 'Længere samtalekvote, flere værktøjskald, udvidet kontekstlængde.', 'aiHeaderDesc2': @@ -339,7 +331,46 @@ const Map daDK = { 'aiDisclaimer': 'Funktioner afhænger af enhedstilladelser, servicetilgængelighed og netværksforhold.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Realtidstranskription', + 'sceneLexicon': 'Scenarieordbog', + 'subtitleDisplay': 'Undertekster', + 'transHeaderDesc1': + 'Realtids simultantolkning og tekstoversættelse med lav latenstid.', + 'transHeaderDesc2': 'Velegnet til rejser, forretning, taler og undervisning.', + 'translateZhEn': 'Kinesisk-engelsk oversættelse', + 'lowLatencyVoiceBroadcast': 'Stemmeudsendelse med lav latenstid', + 'multiLangTextTranslation': 'Flersproget tekstoversættelse', + 'termOptimizationContextPreserve': + 'Terminologioptimering og kontekstbevarelse', + 'lexiconTourBusinessLife': 'Rejse/Forretning/Livsstil ordbøger', + 'personalVocabularyMemory': 'Personlig ordforrådshukommelse', + 'conversationSubtitleLargeText': 'Samtaleundertekster / Stor teksttilstand', + 'colorHighContrast': 'Høj farvekontrast', + 'transDisclaimer': + 'Oversættelsesydelse afhænger af mikrofon, netværkslatenstid og omgivende støj.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Mødeoptagelse', + 'transcriptionAndSummary': 'Transkription & sammendrag', + 'keywordSearch': 'Søgeordsøgning', + 'collaborationSharing': 'Samarbejde & deling', + 'meetingHeaderDesc1': + 'Lydoptagelse, transkription, søgeordsøgning og automatisk sammendrag for at øge mødeeffektiviteten.', + 'meetingHeaderDesc2': + 'Velegnet til forretningsmøder, klassenoter og interviewreferater.', + 'meetingAutoRecording': 'Automatisk optagelse og segmentering', + 'meetingSpeakerTagging': 'Taleridentifikation', + 'meetingLongAudioTranscription': 'Lang lydtranskription', + 'meetingKeyPointSummary': 'Udtrækning af hovedpunkter', + 'meetingTopicNameSearch': 'Søg efter emne/navn', + 'meetingTimelineJump': 'Tidslinjehop', + 'meetingExportSummary': 'Eksportér referat', + 'meetingMultiPlatformShare': 'Del på tværs af platforme', + 'meetingDisclaimer': + 'Brug i stille omgivelser; ydeevne afhænger af mikrofon og netværk.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Fordelsoversigt', 'higherQuota': 'Højere brugskvote', 'lowerUnitPrice': 'Lavere enhedspris', @@ -355,7 +386,32 @@ const Map daDK = { 'vipDisclaimer': 'Faktiske fordele afhænger af pakkedetaljerne og kan ændre sig med versioner.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Møde Basic 100', + 'meet_002_name': 'Møde Basic 500', + 'meet_003_name': 'Møde Basic 1000', + 'trans_001_name': 'Oversættelse Basic 100', + 'trans_002_name': 'Oversættelse Basic 500', + 'trans_003_name': 'Oversættelse Basic 1000', + 'ai_001_desc': 'Inkluderer 100 anvendelser. Adgang til kerne AI-funktioner.', + 'ai_002_desc': 'Inkluderer 500 anvendelser. Adgang til kerne AI-funktioner.', + 'ai_003_desc': 'Inkluderer 1000 anvendelser. Adgang til kerne AI-funktioner.', + 'meet_001_desc': 'Inkluderer 100 mødeoptagelser/transkriptioner.', + 'meet_002_desc': 'Inkluderer 500 mødeoptagelser/transkriptioner.', + 'meet_003_desc': 'Inkluderer 1000 mødeoptagelser/transkriptioner.', + 'trans_001_desc': 'Inkluderer 100 oversættelser (stemme/tekst).', + 'trans_002_desc': 'Inkluderer 500 oversættelser (stemme/tekst).', + 'trans_003_desc': 'Inkluderer 1000 oversættelser (stemme/tekst).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Leveret af: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP kundeservice QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "Spring over", 'next': 'Næste', 'sayLilyHint': 'Sig "Lily Lily" til mikrofonen', @@ -366,7 +422,6 @@ const Map daDK = { 'guideAwakenSuccess': 'Fantastisk! Lily er vågen – bed hende om hjælp.', 'confirmInput': 'Bekræft input', 'guideClickSendPrefix': 'Tryk send, ', - // AI 引导步骤 'guideWeatherStart': 'Sig til Lily: "Hvordan er vejret i dag?"', 'guideWeatherInput': 'Hvordan er vejret i dag?', 'guideWeatherSend': 'Lily vil rapportere vejret i realtid', @@ -394,7 +449,7 @@ const Map daDK = { 'guideSmsSend': 'Lily vil sende beskeden', 'guideSmsEnd': 'Besked sendt – stemmestyring er praktisk', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Start møde", 'edit': 'Rediger', 'delete': 'Slet', @@ -406,8 +461,6 @@ const Map daDK = { 'recordingDetails': 'Optagelsesdetaljer', 'aiSummary': 'AI sammendrag', 'meetingTranscript': 'Mødeudskrift', - - // Meeting模块 - 导航和基础功能 'files': 'Filer', 'mine': 'Mine', 'connect': 'Tilslut', @@ -459,7 +512,6 @@ const Map daDK = { 'summarizing': 'Sammenfatter...', 'analyzing': 'Analyserer...', 'summaryComplete': 'Sammendrag fuldført', - //'generating': '正在生成...', 'generate': 'Generer', 'overview': 'Oversigt', 'transcription': 'Transkription', @@ -468,6 +520,98 @@ const Map daDK = { 'editSpeaker': 'Rediger', 'nameSpeaker': 'Navngiv taler', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Gen-sammendrag', + 'dateAndTime': 'Dato & Tid', + 'location': 'Lokation', + 'attendees': 'Deltagere', + 'inputLocation': 'Indtast lokation', + 'inputAttendees': 'Indtast deltagere', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Vælg sammendragsskabelon', + 'useThisTemplate': 'Brug denne skabelon', + 'lastUsed': 'Sidst brugt', + 'create': 'Opret', + 'templateDetails': 'Skabelondetaljer', + 'tag': 'Tag', + 'description': 'Beskrivelse', + 'template': 'Skabelon', + 'deleteTemplate': 'Slet skabelon', + 'deleteTemplateConfirm': 'Er du sikker på, at du vil slette denne skabelon?', + 'editTemplate': 'Rediger skabelon', + 'createTemplate': 'Opret skabelon', + 'name': 'Navn', + 'templateContentHint': 'Indtast venligst skabelonindhold! Tip: Klik på AI-knappen ovenfor for hurtigt at generere skabelonindhold baseret på det navn og den beskrivelse, du har indtastet', + 'inputNameHint': 'Indtast venligst navn', + 'inputDescHint': 'Indtast venligst beskrivelse', + 'custom': 'Tilpasset', + 'pleaseEnter': 'Indtast venligst', + 'viewAll': 'Se alle', + 'recordingLanguage': 'Optagelsessprog', + 'chineseSimplified': 'Kinesisk Mandarin (Forenklet)', + 'meetingGenerateNow': 'Generer nu', + 'keyEventsAnalyzed': 'Analyserede {count} nøglebegivenheder.', + 'aiAnalysisDesc': + 'AI-analyse identificerer nøglebegivenheder i optagelser, så du kan vælge vigtige begivenheder til AI-generering.', + + // Meeting模块 - 文件操作 + 'importing': 'Importerer...', + 'batchImporting': 'Batchimporterer...', + 'importingLocalRecordings': 'Importerer lokale optagelser...', + 'importFailed': 'Import af fil mislykkedes: {filePath}, fejl: {error}', + 'importSuccess': 'Importerede succesfuldt {count} lokale optagelser', + 'importError': 'Import mislykkedes: {error}', + 'pleaseSelectAudioFile': 'Vælg venligst lydfil', + 'shareAudio': 'Del mødelyd', + 'shareComplete': 'Deling fuldført!', + 'shareFailed': 'Deling mislykkedes: {error}', + 'fileProcessingFailed': + 'Filbehandling mislykkedes: {filePath}, fejl: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Gem tankekort', + 'shareMindMap': 'Del mindmap', + 'shareSuccess': 'Deling succes', + + // Meeting模块 - AI问答 + 'askAI': 'Spørg AI ...', + 'askAIPrompt': 'Hvad kan jeg hjælpe dig med i dag?', + 'continueAsk': 'Fortsæt med at spørge', + 'todoList': 'To-do liste', + 'extractConclusion': 'Udtræk konklusion', + 'generateKeyIndicators': 'Generer nøgleindikatorer', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Del link', + 'copyTranscript': 'Kopier transkription', + 'copySummary': 'Kopier sammendrag', + 'exportAudio': 'Eksportér lyd', + 'exportTranscript': 'Eksportér transkription', + 'shareMeetingAudio': 'Del mødelyd', + 'exportSummary': 'Eksportér sammendrag', + 'exportAs': 'Eksportér som', + 'exportingPDF': 'Eksporterer PDF...', + 'export': 'Eksportér', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Anvend på alle afsnit for denne taler', + 'summaryWillBeUpdatedAutomatically': + 'Resuméet opdateres automatisk ud fra skabelonen', + 'nameCurrentSpeaker': 'Navngiv nuværende taler', + 'recentlyUsedNames': 'Nyligt brugte navne', + 'applyToCurrentParagraph': 'Anvend på nuværende afsnit', + 'totalTime': 'Samlet tid', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Sammendragstalere vil blive opdateret automatisk', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Synkroniser til skyen', + 'syncToCloudTip': + 'Synkroniser automatisk dine optagelser til skyen, du kan afspille, administrere og dele optagelser gennem enhver VOITRANS APP eller VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Synkroniser VOITRANS APP', + 'transcriptionRecord': 'Transkriptionsoptagelse', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transkriptionsoptagelser', 'templateCommunity': 'Skabelonfællesskab', @@ -487,7 +631,7 @@ const Map daDK = { 'Bind Voitrans enhed for at aktivere Starter medlemskab', 'unlockNow': 'Lås op nu', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Sammenligning', 'detailedInfo': 'Detaljeret information', 'monthlyTranscriptionTime': 'Månedlig transskriptionstid', @@ -523,8 +667,6 @@ const Map daDK = { 'Importer nemt lydfiler fra lokale eller tredjepartsapplikationer, såsom stemmenotater, Google Drive osv.', 'multipleExportFormatsDesc': 'Eksportér dine lydoptagelser, transkriptionstekst og sammendrag i forskellige formater (TXT, PDF, JPEG) for at opfylde dine behov.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Opgrader dit medlemskab', 'yearlySubscription': 'Årligt abonnement', 'monthlySubscription': 'Månedligt abonnement', @@ -553,106 +695,26 @@ const Map daDK = { 'validityNote': 'Aktiveret straks efter køb, gyldig i 2 år efter aktivering.', 'purchase': 'Køb', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Vælg sammendragsskabelon', - 'useThisTemplate': 'Brug denne skabelon', - 'lastUsed': 'Sidst brugt', - 'viewAll': 'Se alle', - 'recordingLanguage': 'Optagelsessprog', - 'chineseSimplified': 'Kinesisk Mandarin (Forenklet)', - 'meetingGenerateNow': 'Generer nu', - 'keyEventsAnalyzed': 'Analyserede {count} nøglebegivenheder.', - 'aiAnalysisDesc': - 'AI-analyse identificerer nøglebegivenheder i optagelser, så du kan vælge vigtige begivenheder til AI-generering.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importerer...', - 'batchImporting': 'Batchimporterer...', - 'importingLocalRecordings': 'Importerer lokale optagelser...', - 'importFailed': 'Import af fil mislykkedes: {filePath}, fejl: {error}', - 'importSuccess': 'Importerede succesfuldt {count} lokale optagelser', - 'importError': 'Import mislykkedes: {error}', - 'pleaseSelectAudioFile': 'Vælg venligst lydfil', - 'shareAudio': 'Del mødelyd', - 'shareComplete': 'Deling fuldført!', - 'shareFailed': 'Deling mislykkedes: {error}', - 'fileProcessingFailed': - 'Filbehandling mislykkedes: {filePath}, fejl: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Ukendt sprog', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Lagerplads', - 'meetingStoragePermissionExplanation': - 'Vi har brug for adgang til lagertilladelser, så du kan vælge og uploade lydfiler.', - 'meetingStoragePermissionPermanentDenial': - 'Detekteret at du permanent har nægtet lagertilladelse. For at fortsætte med at bruge denne funktion, skal du gå til app-indstillinger for at aktivere lagertilladelse manuelt.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Del mindmap', - 'shareSuccess': 'Deling succes', - - // Meeting模块 - AI相关 - 'askAI': 'Spørg AI ...', - 'askAIPrompt': 'Hvad kan jeg hjælpe dig med i dag?', - 'continueAsk': 'Fortsæt med at spørge', - 'todoList': 'To-do liste', - 'extractConclusion': 'Udtræk konklusion', - 'generateKeyIndicators': 'Generer nøgleindikatorer', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Gen-sammendrag', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Optagelsessprog', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Kantonesisk', 'sichuan': 'Sichuan dialekt', 'shanghai': 'Shanghai dialekt', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - // Meeting模块 - 分享相关 - 'shareLink': 'Del link', - 'copyTranscript': 'Kopier transkription', - 'copySummary': 'Kopier sammendrag', - 'exportAudio': 'Eksportér lyd', - 'exportTranscript': 'Eksportér transkription', - 'shareMeetingAudio': 'Del mødelyd', - 'exportSummary': 'Eksportér sammendrag', - 'exportAs': 'Eksportér som', - 'exportingPDF': 'Eksporterer PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Anvend på alle afsnit for denne taler', - 'summaryWillBeUpdatedAutomatically': - 'Resuméet opdateres automatisk ud fra skabelonen', - 'nameCurrentSpeaker': 'Navngiv nuværende taler', - 'recentlyUsedNames': 'Nyligt brugte navne', - 'applyToCurrentParagraph': 'Anvend på nuværende afsnit', - 'totalTime': 'Samlet tid', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Sammendragstalere vil blive opdateret automatisk', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Synkroniser til skyen', - 'syncToCloudTip': - 'Synkroniser automatisk dine optagelser til skyen, du kan afspille, administrere og dele optagelser gennem enhver VOITRANS APP eller VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Synkroniser VOITRANS APP', - 'transcriptionRecord': 'Transkriptionsoptagelse', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Dato & Tid', - 'location': 'Lokation', - 'attendees': 'Deltagere', - 'inputLocation': 'Indtast lokation', - 'inputAttendees': 'Indtast deltagere', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Ukendt sprog', + 'analysisFailed': 'Analyse mislykkedes, prøv igen senere', + 'transcriptionFailed': 'Transskription mislykkedes, prøv igen senere', + 'summaryFailed': 'Sammenfatning mislykkedes, prøv igen senere', + 'summaryFailedShort': 'Sammenfatning mislykkedes', + 'transcriptionFailedShort': 'Transskription mislykkedes', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Lydafspilleren er ikke klar, vent venligst', + 'playFailed': 'Afspilning mislykkedes', + 'audioFileNotFound': 'Lydfil ikke fundet', + 'fetchingAudio': 'Henter lyd fra skyen...', + 'playerLoadFailed': 'Lydafspilleren kunne ikke indlæses', // 设置页 "systemSettings": "Systemindstillinger", @@ -705,26 +767,15 @@ const Map daDK = { "bleHeadsetFirmwareUpgrade": "BLE øretelefon firmware opgradering", "deviceManagement": "Enhedsstyring", "manageConnectedDevices": "Administrer tilsluttede Bluetooth enheder", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'I øjeblikket nyeste version {version}', 'checkUpdateFailed': 'Kontrol af opdateringer mislykkedes', 'networkErrorRetry': 'Netværksfejl, prøv venligst igen senere', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Realtids stemmechat", "realtimeVoiceChatInfo": "Oplev intelligent stemmeinteraktionsfunktion (funktionsforhåndsvisning)", "loading": "Indlæser...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -740,8 +791,7 @@ const Map daDK = { "Are you sure you want to unbind device \"{deviceName}\"?", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Ryd chathistorik", "online": "Online", @@ -771,8 +821,9 @@ const Map daDK = { "swipeUpForMore": "Stryg op for mere", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': 'Når aktiveret: AI\'en bliver ikke afbrudt af din stemme, mens den taler, og kan kun håndtere én samtaleomgang ad gangen. For at starte en ny omgang skal du bare sige vækkeordet.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -784,7 +835,7 @@ const Map daDK = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Hej! Jeg er **Lily**, jeg kan hjælpe dig med:\n\n' '• Besvare spørgsmål og give information\n\n' '• Realtids stemmeoversættelse\n\n' @@ -804,18 +855,17 @@ const Map daDK = { 'startVoiceInput': 'Start stemmeinput', 'startPhoneCallMode': 'Start telefonopkaldstilstand, start stemmeinput', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Indtast din besked her...', // 全屏编辑器输入提示 'characterCount': '{count} tegn', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopier', 'copySuccess': 'Kopieret succesfuldt', 'report': 'Rapporter', 'submitSuccess': 'Indsendt succesfuldt', 'submitFailed': 'Indsendelse mislykkedes', 'reportSubmitted': 'Rapport indsendt, vi vil behandle det hurtigst muligt', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Skadelig/usikker', 'pornographicVulgar': 'Pornografisk/vulgær', 'misleadingAttack': 'Vildledende angreb', @@ -825,17 +875,14 @@ const Map daDK = { 'other': 'Andet', 'reportDescriptionHint': 'Vi vil gerne vide årsagen til din rapport, du kan beskrive problemet du stødte på.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Genereret af AI', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'Her er nogle anbefalede musikker:', 'playList': 'Afspilningsliste', 'moreMusic': 'Mere musik', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'kilometer', // 公里单位 'meters': 'meter', // 米单位 'hours': 'timer', // 小时单位 @@ -850,7 +897,7 @@ const Map daDK = { "bicycling": "Cykling", "tsransit": "Offentlig transport", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Vejrforespørgsel:', 'highest': 'Højeste', 'lowest': 'Laveste', @@ -880,18 +927,8 @@ const Map daDK = { "friday": "Fredag", "saturday": "Lørdag", "sunday": "Søndag", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Solrigt", "partlyCloudy": "Delvis skyet", "partlySunny": "Delvis solrigt", @@ -912,7 +949,130 @@ const Map daDK = { "haze": "Dis", "strongWind": "Kraftig vind", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "Oversættelseshistorik", + "enableRecording": "Aktiver optagelse", + "viewAudioFiles": "Se lydfiler", + "headsetUser": "Øretelefon bruger", + "phoneUser": "Telefon bruger", + "selectSourceLanguage": "Vælg kildesprog", + "selectTargetLanguage": "Vælg målsprog", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": + "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Ingen oversættelseshistorik", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "Ryd historik", + "clearHistoryConfirm": + "Er du sikker på, at du vil rydde hele oversættelseshistorikken? Denne handling kan ikke fortrydes.", + "unknownLanguage": "Ukendt sprog", + "deleteSessionRecord": "Slet sessionsoptegnelse", + "deleteSessionConfirm": + "Er du sikker på, at du vil slette alle oversættelsesoptegnelser for denne session? Denne handling kan ikke fortrydes.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": + "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": + "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": + "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": + "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Oversæt lydfiler", + "noAudioFiles": "Ingen lydfiler", + "calculating": "Beregner...", + "playing": "Afspiller...", + "paused": "Sat på pause", + "clickToPlay": "Klik for at afspille", + "rename": "Omdøb", + "smartTranscription": "Smart transskription", + "renameAudioFile": "Omdøb lydfil", + "enterNewFileName": "Indtast venligst nyt filnavn", + + // 翻译模块 - 翻译详情 + "originalRecord": "Original optegnelse", + "recordSummary": "Optegnelsessammendrag", + "clickToGenerateSummary": + "Klik på knappen nedenfor for at generere sessionssammendrag", + "summaryContent": "Sammendragsindhold", + "copied": "Kopieret", + "summaryCopiledToClipboard": "Sammendrag kopieret til udklipsholder", + "extractSummary": "Udtræk sammendrag", + "summaryGenerated": "Sammendrag genereret", + "generating": "Genererer...", + "regenerate": "Regenerer", + "summaryTimeoutMessage": + "Anmodning om sammendragsgenerering udløbet, muligvis på grund af netværksproblem eller serveroverbelastning.", + "deleteTranslationRecord": "Slet oversættelsesoptegnelse", + "deleteTranslationConfirm": + "Er du sikker på, at du vil slette denne oversættelsesoptegnelse? Denne handling kan ikke fortrydes.", + "originalText": "Original tekst", + "translatedText": "Oversat tekst", + "sessionSummary": "Sessionssammendrag", + "cannotShare": "Kan ikke dele", + "generateSummaryFirst": "Generer venligst sammendrag først", + "translationSessionRecord": "Oversættelsessessionsoptegnelse", + + // 个人资料模块 "editProfile": "Rediger personlige oplysninger", "avatar": "Avatar", "nickname": "Kaldenavn", @@ -928,8 +1088,6 @@ const Map daDK = { 'Er du sikker på, at du vil slette din konto permanent? Denne handling kan ikke fortrydes', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'Netværksforbindelse mislykkedes, tjek venligst netværksindstillinger og prøv igen', 'serverTemporarilyUnavailable': @@ -946,10 +1104,6 @@ const Map daDK = { 'Netværksforbindelse mislykkedes, tjek venligst netværksindstillinger', 'serverInternalErrorRetryLater': 'Server intern fejl, prøv venligst igen senere', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Billedkomprimering mislykkedes', 'avatarUpdateFailed': 'Avatar opdatering mislykkedes', 'usernameCannotBeEmpty': 'Brugernavn kan ikke være tomt', @@ -961,8 +1115,6 @@ const Map daDK = { 'accountPermanentlyDeleted': 'Konto permanent slettet', 'deleteAccountFailedRetry': 'Sletning af konto mislykkedes, prøv venligst igen', - - // 账号服务相关 'clearUserDataFailed': 'Rydning af brugerdata mislykkedes', // 清理用户数据失败 'deleteUserDataFailed': 'Sletning af brugerdata mislykkedes', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'Tredjepartslogout succesfuldt', // 第三方登录退出成功 @@ -974,7 +1126,12 @@ const Map daDK = { 'accountServiceInitialized': 'AccountService initialiseret', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Lagerplads', + 'meetingStoragePermissionExplanation': + 'Vi har brug for adgang til lagertilladelser, så du kan vælge og uploade lydfiler.', + 'meetingStoragePermissionPermanentDenial': + 'Detekteret at du permanent har nægtet lagertilladelse. For at fortsætte med at bruge denne funktion, skal du gå til app-indstillinger for at aktivere lagertilladelse manuelt.', 'getPermissionStatusFailed': 'Hentning af tilladelsestatus mislykkedes', 'communicationPermissions': 'Kommunikationstilladelser', 'bluetoothPermissions': 'Bluetooth-tilladelser', @@ -987,7 +1144,6 @@ const Map daDK = { 'phone': 'Telefon', 'sms': 'SMS', 'contacts': 'Kontakter', - //'bluetooth': '蓝牙', 'notification': 'Notifikation', 'alarm': 'Alarm', 'calendarWrite': 'Kalender skrivning', @@ -1044,8 +1200,6 @@ const Map daDK = { 'permanentDenialText': 'Du har permanent nægtet {permission} tilladelse, gå venligst til app-indstillinger for at aktivere det', 'goToSettings': 'Gå til indstillinger', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Forbindelse', 'bluetoothScanExplanation': @@ -1070,7 +1224,6 @@ const Map daDK = { 'Du har permanent afvist notifikationstilladelse, gå venligst til indstillinger for at aktivere det.', 'locationPermissionPermanentDenial': 'Du har permanent afvist placeringstilladelse, gå venligst til indstillinger for at aktivere det.', -//'microphonePermission': '录音', 'storagePermission': 'Lagerplads', 'microphonePermissionExplanation': 'Vi har brug for mikrofontilladelse til at optage lydindhold.', @@ -1080,8 +1233,6 @@ const Map daDK = { 'Mikrofontilladelse er blevet permanent afvist. For at fortsætte med at bruge denne funktion, skal du gå til app-indstillinger for at aktivere mikrofontilladelse manuelt.', 'storagePermissionPermanentDenial': 'Lagertilladelse er blevet permanent afvist. For at fortsætte med at bruge denne funktion, skal du gå til app-indstillinger for at aktivere lagertilladelse manuelt.', - - //permission_util.dart 'permissionUtilNeed': 'Mangler ', 'permissionUtilPermission': ' tilladelse', 'permissionUtilRestricted': ' tilladelse begrænset', @@ -1089,7 +1240,20 @@ const Map daDK = { 'Denne funktion er utilgængelig eller begrænset på den nuværende enhed, tjek venligst enhedsindstillinger eller systembegrænsninger', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigation i gang', + 'native.notification.navigation.keepRunning': 'Navigerer, hold appen kørende', + 'native.notification.bleAgent.running': 'Stemmeassistenten kører', + 'native.notification.audioRecording.recording': 'Optager lyd, tryk for at vende tilbage til appen', + 'native.notification.music.waiting': 'Venter på afspilning', + 'native.notification.music.previous': 'Forrige', + 'native.notification.music.next': 'Næste', + 'native.notification.music.play': 'Afspil', + 'native.notification.music.pause': 'Pause', + 'native.notification.qqMusic.playing': 'Afspiller musik', + + // 版本更新 'newVersionFound': 'Ny version fundet', // 版本更新对话框标题 'remindLater': 'Påmind senere', // 稍后提醒按钮 'updateNow': 'Opdater nu', // 立即更新按钮 @@ -1100,253 +1264,7 @@ const Map daDK = { 'updateErrorRetry': 'Der opstod en fejl under opdateringen, prøv venligst igen senere', // 更新错误重试提示 - //国家列表 - "邮箱": "E-mail", - "中国": "Kina", - "美国": "USA", - "加拿大": "Canada", - "俄罗斯": "Rusland", - "英国": "Storbritannien", - "德国": "Tyskland", - "意大利": "Italien", - "法国": "Frankrig", - "西班牙": "Spanien", - "南非": "Sydafrika", - "沙特阿拉伯": "Saudi-Arabien", - "土耳其": "Tyrkiet", - "日本": "Japan", - "韩国": "Sydkorea", - "新加坡": "Singapore", - "马来西亚": "Malaysia", - "泰国": "Thailand", - "越南": "Vietnam", - "印度": "Indien", - "巴基斯坦": "Pakistan", - "菲律宾": "Filippinerne", - "印度尼西亚": "Indonesien", - "阿联酋": "UAE", - "墨西哥": "Mexico", - "巴西": "Brasilien", - "阿根廷": "Argentina", - "澳大利亚": "Australien", - "新西兰": "New Zealand", - "中国香港": "Hong Kong", - "中国澳门": "Macao", - "中国台湾": "Taiwan", - "埃及": "Egypten", - "希腊": "Grækenland", - "荷兰": "Holland", - "比利时": "Belgien", - "匈牙利": "Ungarn", - "罗马尼亚": "Rumænien", - "瑞士": "Schweiz", - "奥地利": "Østrig", - "丹麦": "Danmark", - "瑞典": "Sverige", - "挪威": "Norge", - "波兰": "Polen", - "秘鲁": "Peru", - "智利": "Chile", - "哥伦比亚": "Colombia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugal", - "卢森堡": "Luxembourg", - "爱尔兰": "Irland", - "冰岛": "Island", - "阿尔巴尼亚": "Albanien", - "马耳他": "Malta", - "塞浦路斯": "Cypern", - "芬兰": "Finland", - "保加利亚": "Bulgarien", - "立陶宛": "Litauen", - "拉脱维亚": "Letland", - "爱沙尼亚": "Estland", - "乌克兰": "Ukraine", - "塞尔维亚": "Serbien", - "克罗地亚": "Kroatien", - "斯洛文尼亚": "Slovenien", - "捷克": "Tjekkiet", - "斯洛伐克": "Slovakiet", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolivia", - "厄瓜多尔": "Ecuador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Marokko", - "阿尔及利亚": "Algeriet", - "突尼斯": "Tunesien", - "尼日利亚": "Nigeria", - "加纳": "Ghana", - "埃塞俄比亚": "Etiopien", - "肯尼亚": "Kenya", - "坦桑尼亚": "Tanzania", - "乌干达": "Uganda", - "孟加拉国": "Bangladesh", - "以色列": "Israel", - "黎巴嫩": "Libanon", - "约旦": "Jordan", - "伊拉克": "Irak", - "科威特": "Kuwait", - "巴林": "Bahrain", - "卡塔尔": "Qatar", - "阿曼": "Oman", - "阿富汗": "Afghanistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongoliet", - "柬埔寨": "Cambodja", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "Østtimor", - "斐济": "Fiji", - "所罗门群岛": "Salomonøerne", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Oversættelseshistorik", - "enableRecording": "Aktiver optagelse", - "viewAudioFiles": "Se lydfiler", - "headsetUser": "Øretelefon bruger", - "phoneUser": "Telefon bruger", - "selectSourceLanguage": "Vælg kildesprog", - "selectTargetLanguage": "Vælg målsprog", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Ingen oversættelseshistorik", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Ryd historik", - "clearHistoryConfirm": - "Er du sikker på, at du vil rydde hele oversættelseshistorikken? Denne handling kan ikke fortrydes.", - "unknownLanguage": "Ukendt sprog", - "deleteSessionRecord": "Slet sessionsoptegnelse", - "deleteSessionConfirm": - "Er du sikker på, at du vil slette alle oversættelsesoptegnelser for denne session? Denne handling kan ikke fortrydes.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Oversæt lydfiler", - "noAudioFiles": "Ingen lydfiler", - "calculating": "Beregner...", - "playing": "Afspiller...", - "paused": "Sat på pause", - "clickToPlay": "Klik for at afspille", - "rename": "Omdøb", - "smartTranscription": "Smart transskription", - "renameAudioFile": "Omdøb lydfil", - "enterNewFileName": "Indtast venligst nyt filnavn", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Original optegnelse", - "recordSummary": "Optegnelsessammendrag", - "clickToGenerateSummary": - "Klik på knappen nedenfor for at generere sessionssammendrag", - "summaryContent": "Sammendragsindhold", - "copied": "Kopieret", - "summaryCopiledToClipboard": "Sammendrag kopieret til udklipsholder", - "extractSummary": "Udtræk sammendrag", - "summaryGenerated": "Sammendrag genereret", - "generating": "Genererer...", - "regenerate": "Regenerer", - "summaryTimeoutMessage": - "Anmodning om sammendragsgenerering udløbet, muligvis på grund af netværksproblem eller serveroverbelastning.", - "deleteTranslationRecord": "Slet oversættelsesoptegnelse", - "deleteTranslationConfirm": - "Er du sikker på, at du vil slette denne oversættelsesoptegnelse? Denne handling kan ikke fortrydes.", - "originalText": "Original tekst", - "translatedText": "Oversat tekst", - "sessionSummary": "Sessionssammendrag", - "cannotShare": "Kan ikke dele", - "generateSummaryFirst": "Generer venligst sammendrag først", - "translationSessionRecord": "Oversættelsessessionsoptegnelse", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Enhedsparring", "connectYourDeepSoundHeadset": "Tilslut dine Voitrans øretelefoner", "bind": "Bind", @@ -1355,14 +1273,11 @@ const Map daDK = { "autoInputCode": "Automatisk kodeinput", "skipBinding": "Spring binding over", "rescan": "Scan igen", - "verifyingDevice": "Verificerer enhed...", "confirmBinding": "Bekræft binding", "associatingDevice": "Associerer enhed...", "goToBluetoothSettings": "Gå til Bluetooth indstillinger", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Klar til parring", "preparingPairingEnvironment": "Forbereder parringsmiljø...", "connectDeepSoundViaSystemBluetooth": @@ -1372,8 +1287,6 @@ const Map daDK = { "waitingCompletePairing": "Vent venligst, fuldfører parring...", "pairingSuccessRedirecting": "Parring succesfuld! Omdirigerer til hovedside...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Sørg venligst for at den tilsluttede enhed er Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1386,19 +1299,12 @@ const Map daDK = { "authorizationFailedCheckCode": "Autorisation mislykkedes, tjek venligst om autorisationskoden er korrekt", "pairingFailedRetry": "Parring mislykkedes, prøv venligst igen", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Aktiver venligst Bluetooth', 'deviceDisconnected': 'Enhed afbrudt', 'readyToStartPairing': 'Klar til at starte parring', 'checkingEnvironment': 'Kontrollerer miljø...', 'ensureHeadsetOnAndPairingMode': 'Sørg venligst for at øretelefonerne er tændt og i parringstilstand', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Etablerer sikker forbindelse...', 'needManualBindingAuthCode': 'Har brug for manuel bindingsautorisationskode...', @@ -1420,8 +1326,6 @@ const Map daDK = { 'bleConnectionFailed': 'BLE forbindelse mislykkedes', 'deviceAuthorizationFailedCheckCode': 'Enhedsautorisation mislykkedes, tjek venligst autorisationskode', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manuel Bluetooth-aktivering påkrævet', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Følg venligst disse trin:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1434,7 +1338,18 @@ const Map daDK = { 'Tip: Du kan også trykke længe på Bluetooth-ikonet i Kontrolcenter for hurtigt at få adgang til Bluetooth-indstillinger', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'Jeg ved det', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Brugerfeedback", 'feedbackInfo': 'Giv feedback eller forslag', 'feedbackDescription': 'Beskriv venligst dit problem eller forslag', @@ -1476,7 +1391,7 @@ const Map daDK = { "removeEarbudsEnsureBattery": "Tag begge øretelefoner ud og sørg for at batteriet på begge er over 20%", - // 音乐列表页面 + // 音乐模块 "noMusic": "Ingen musik", // 暂无音乐 "noPlayingMusic": "Ingen musik afspilles", // 暂无播放音乐 "unknownSong": "Ukendt sang", // 未知歌曲 @@ -1524,22 +1439,122 @@ const Map daDK = { "波斯语": "Persisk", "斯瓦希里语": "Swahili", - // 时间相关 - "justNow": "Lige nu", - "minutesAgo": "for @minutes minutter siden", - "yesterday": "I går", - // 时间扩展(图片翻译模块使用) - "daysAgo": "for @days dage siden", - "hoursAgo": "for @hours timer siden", - - //补充 - "insufficientIntegral": "Utilstrækkelige point", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Utilstrækkelig saldo, gå venligst til den tilsvarende genopfyldningsside for at genopfylde.', - "recharge": 'Gå til genopfyldning', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI medlemskab udløbet, gå venligst til medlemskabsgenopfyldningssiden for at forny.', + // 国家列表 + "邮箱": "E-mail", + "中国": "Kina", + "美国": "USA", + "加拿大": "Canada", + "俄罗斯": "Rusland", + "英国": "Storbritannien", + "德国": "Tyskland", + "意大利": "Italien", + "法国": "Frankrig", + "西班牙": "Spanien", + "南非": "Sydafrika", + "沙特阿拉伯": "Saudi-Arabien", + "土耳其": "Tyrkiet", + "日本": "Japan", + "韩国": "Sydkorea", + "新加坡": "Singapore", + "马来西亚": "Malaysia", + "泰国": "Thailand", + "越南": "Vietnam", + "印度": "Indien", + "巴基斯坦": "Pakistan", + "菲律宾": "Filippinerne", + "印度尼西亚": "Indonesien", + "阿联酋": "UAE", + "墨西哥": "Mexico", + "巴西": "Brasilien", + "阿根廷": "Argentina", + "澳大利亚": "Australien", + "新西兰": "New Zealand", + "中国香港": "Hong Kong", + "中国澳门": "Macao", + "中国台湾": "Taiwan", + "埃及": "Egypten", + "希腊": "Grækenland", + "荷兰": "Holland", + "比利时": "Belgien", + "匈牙利": "Ungarn", + "罗马尼亚": "Rumænien", + "瑞士": "Schweiz", + "奥地利": "Østrig", + "丹麦": "Danmark", + "瑞典": "Sverige", + "挪威": "Norge", + "波兰": "Polen", + "秘鲁": "Peru", + "智利": "Chile", + "哥伦比亚": "Colombia", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portugal", + "卢森堡": "Luxembourg", + "爱尔兰": "Irland", + "冰岛": "Island", + "阿尔巴尼亚": "Albanien", + "马耳他": "Malta", + "塞浦路斯": "Cypern", + "芬兰": "Finland", + "保加利亚": "Bulgarien", + "立陶宛": "Litauen", + "拉脱维亚": "Letland", + "爱沙尼亚": "Estland", + "乌克兰": "Ukraine", + "塞尔维亚": "Serbien", + "克罗地亚": "Kroatien", + "斯洛文尼亚": "Slovenien", + "捷克": "Tjekkiet", + "斯洛伐克": "Slovakiet", + "危地马拉": "Guatemala", + "萨尔瓦多": "El Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nicaragua", + "哥斯达黎加": "Costa Rica", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Bolivia", + "厄瓜多尔": "Ecuador", + "巴拉圭": "Paraguay", + "乌拉圭": "Uruguay", + "摩洛哥": "Marokko", + "阿尔及利亚": "Algeriet", + "突尼斯": "Tunesien", + "尼日利亚": "Nigeria", + "加纳": "Ghana", + "埃塞俄比亚": "Etiopien", + "肯尼亚": "Kenya", + "坦桑尼亚": "Tanzania", + "乌干达": "Uganda", + "孟加拉国": "Bangladesh", + "以色列": "Israel", + "黎巴嫩": "Libanon", + "约旦": "Jordan", + "伊拉克": "Irak", + "科威特": "Kuwait", + "巴林": "Bahrain", + "卡塔尔": "Qatar", + "阿曼": "Oman", + "阿富汗": "Afghanistan", + "斯里兰卡": "Sri Lanka", + "缅甸": "Myanmar", + "尼泊尔": "Nepal", + "蒙古": "Mongoliet", + "柬埔寨": "Cambodja", + "老挝": "Laos", + "文莱": "Brunei", + "东帝汶": "Østtimor", + "斐济": "Fiji", + "所罗门群岛": "Salomonøerne", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/de_de.dart b/lib/core/translations/language/de_de.dart index 79c91fb0a..dfc0e753c 100644 --- a/lib/core/translations/language/de_de.dart +++ b/lib/core/translations/language/de_de.dart @@ -1,4 +1,5 @@ const Map deDE = { + // 通用 'continue': 'Fortfahren', 'confirm': 'Bestätigen', @@ -18,6 +19,11 @@ const Map deDE = { "unknownError": "Unbekannter Fehler", "asrConnectionFailed": "Verbindung zum Spracherkennungsdienst fehlgeschlagen. Bitte Netzwerk prüfen oder es später erneut versuchen.", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "Die Welt verbinden, jenseits der Stimme", @@ -28,7 +34,7 @@ const Map deDE = { "explore": "Entdecken", "settings": "Einstellungen", - // 语言 + // 语言列表 "followingSystem": "Systemeinstellung folgen", "chinese": "Chinesisch", "english": "Englisch", @@ -72,7 +78,7 @@ const Map deDE = { "arabic": "Arabisch", "persian": "Farsisch", - // 登录页 + // 登录模块 "welcome": "Willkommen", "loginTips": "Bitte melden Sie sich mit Ihrer Telefonnummer oder E-Mail an/registrieren Sie sich", @@ -102,13 +108,9 @@ const Map deDE = { "resendVerificationCode": "Bestätigungscode erneut senden", "login": "Anmelden", "usePasswordLogin": "Passwort-Anmeldung verwenden", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans Erklärung", // Voitrans 声明 "welcomeToThisApp": "Willkommen bei Voitrans, bitte lesen Sie sorgfältig", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ". Durch Klicken auf 'Zustimmen und Eingeben' zeigen Sie an, dass Sie die oben genannten Vereinbarungen vollständig gelesen und ihnen zugestimmt haben. Durch Klicken auf 'Nicht zustimmen' wird die Anwendung beendet.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Nicht zustimmen", // 不同意 @@ -168,7 +170,7 @@ const Map deDE = { 'right': 'Rechts', 'checkConnectionStatusFailed': 'Verbindungsstatus-Überprüfung fehlgeschlagen', -// 发现页 + // 发现页 "searchAi": "KI-Funktionen suchen...", "exploreSlogan": "Intelligente Kopfhörer, unendliche Möglichkeiten", "exploreSlogan1": "Intelligente Begleitung, unendliche Möglichkeiten", @@ -193,6 +195,7 @@ const Map deDE = { "usageStatsInfo": "Sehen Sie sich die Statistiken für die Benutzung der App an", "scene": "Szenarien", + // 用量统计模块 "aiChat": "KI-Chat", "translationStats": "Übersetzungsstatistik", @@ -213,7 +216,6 @@ const Map deDE = { "translationApi": "Übersetzungs-API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Datenvolumen-Statistik", "sourceTextCharacters": "Quelltext-Zeichen", "ttsTextCharacters": "TTS-Text-Zeichen", @@ -230,7 +232,6 @@ const Map deDE = { "totalAudioDuration": "Gesamte Audiodauer", "audioFileSize": "Audiodateigröße", "transcriptBytes": "Transkript-Bytes", - // 通知文案 "loadFailed": "Laden fehlgeschlagen", "statsLoadFailedTryLater": "Statistik konnte nicht geladen werden. Bitte versuchen Sie es später erneut.", @@ -239,88 +240,79 @@ const Map deDE = { "exportFeature": "Exportfunktion", "exportInDevelopment": "Datenexport ist in Entwicklung", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Verfügbare Pakete', 'remainingQuota': 'Verbleibendes Kontingent', 'totalQuota': 'Gesamtkontingent', 'remaining': 'Verbleibend', 'featureDescription': 'Funktionsbeschreibung', - // AI 功能卡片 + 'paymentSuccess': 'Zahlung erfolgreich', + 'paymentFailed': 'Zahlung fehlgeschlagen', + 'gotIt': 'Verstanden', + 'paymentFailedTryAgain': 'Zahlung fehlgeschlagen. Bitte versuchen Sie es erneut.', + 'selectPaymentMethod': 'Zahlungsmethode auswählen', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'WeChat-Bestellung konnte nicht erstellt werden', + 'alipayOrderCreateFailed': 'Alipay-Bestellung konnte nicht erstellt werden', + 'appleOrderCreateFailed': 'Apple-Bestellung konnte nicht erstellt werden', + 'googleOrderCreateFailed': 'Google-Bestellung konnte nicht erstellt werden', + 'paypalOrderCreateFailed': 'PayPal-Bestellung konnte nicht erstellt werden', + 'paymentException': 'Zahlungsausnahme', + 'paymentLaunchFailed': 'Zahlungsstart fehlgeschlagen', + 'paymentExceptionWithError': 'Zahlungsausnahme: @error', + 'paymentProcessingCheckLater': 'Ihre Bestellung wird bearbeitet. Bitte überprüfen Sie es später.', + 'paymentResultQueryException': 'Abfrage des Zahlungsergebnisses fehlgeschlagen: @error', + 'orderConfirmedQuotaRefreshed': 'Bestellung bestätigt. Ihr Kontingent wurde aktualisiert.', + 'paymentCompletedConfirming': 'Zahlung abgeschlossen. Bestätigung läuft…', + 'paymentCancelled': 'Zahlung abgebrochen', + 'paypalOpenedCompleteInBrowser': 'PayPal geöffnet. Bitte schließen Sie die Zahlung in Ihrem Browser ab.', + 'paypalOpenFailed': 'PayPal-Zahlungsseite konnte nicht geöffnet werden', + 'paymentTestTitle': 'Zahlungstest', + 'paymentTestOrderInfo': 'Testbestellungsinformationen', + 'paymentTestProductId': 'Produkt-ID', + 'paymentTestProductDescription': 'Produktbeschreibung', + 'paymentTestWechatDescription': 'WeChat Pay-Zahlungstest', + 'paymentTestAlipayDescription': 'Alipay-Zahlungstest', + 'paymentTestAmount': 'Betrag', + 'paymentTestSelectAmount': 'Testbetrag auswählen', + 'paying': 'Zahlung wird durchgeführt...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Zahlungsstatus', + 'errorInfoWithMessage': 'Fehler: @message', + 'retest': 'Erneut testen', + 'paymentTestInstructionsTitle': 'Anleitung', + 'paymentTestInstructionsContent': '1. Wählen Sie einen Testbetrag (empfohlen: ¥0,01)\n2. Klicken Sie auf die Zahlungsschaltfläche, um zu starten\n3. Schließen Sie die Zahlung in der Zahlungs-App ab\n4. Kehren Sie zurück, um das Ergebnis zu überprüfen', + 'startingWechatPayment': 'WeChat Pay wird gestartet...', + 'startingAlipayPayment': 'Alipay wird gestartet...', + 'wechatPaymentSuccess': 'WeChat Pay-Zahlung erfolgreich!', + 'wechatPaymentFailed': 'WeChat Pay-Zahlung fehlgeschlagen', + 'wechatPaymentLaunchFailed': 'WeChat Pay konnte nicht gestartet werden', + 'cannotLaunchWechatPayment': 'WeChat Pay kann nicht gestartet werden', + 'wechatPaymentException': 'WeChat Pay-Ausnahme', + 'wechatPaymentTestCompleted': 'WeChat Pay-Zahlungstest abgeschlossen', + 'alipayPaymentSuccess': 'Alipay-Zahlung erfolgreich!', + 'alipayPaymentFailed': 'Alipay-Zahlung fehlgeschlagen', + 'alipayPaymentLaunchFailed': 'Alipay konnte nicht gestartet werden', + 'cannotLaunchAlipayPayment': 'Alipay kann nicht gestartet werden', + 'alipayPaymentException': 'Alipay-Ausnahme', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": + 'Insufficient balance, please go to the corresponding recharge page to recharge.', + "recharge": 'Go to Recharge', + "aiMemberExpiredDesc": + 'AI membership expired, please go to the membership recharge page to renew.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Musik & Empfehlung', 'navigationAndRoutes': 'Navigation & Routen', 'nearbySearch': 'Suche in der Nähe', 'newsInformation': 'Nachrichten', 'communicationAssistant': 'Kommunikationsassistent', - // 翻译功能卡片 - 'realtimeTranscription': 'Echtzeit-Transkription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Szenarien-Glossar', - 'subtitleDisplay': 'Untertitel', - // 会议功能卡片 - 'meetingRecording': 'Meeting-Aufnahme', - 'transcriptionAndSummary': 'Transkription & Zusammenfassung', - 'keywordSearch': 'Stichwortsuche', - 'collaborationSharing': 'Zusammenarbeit & Teilen', - // 商品名称(按ID) - 'ai_001_name': 'KI Basic 100', - 'ai_002_name': 'KI Basic 500', - 'ai_003_name': 'KI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Übersetzung Basis 100', - 'trans_002_name': 'Übersetzung Basis 500', - 'trans_003_name': 'Übersetzung Basis 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Enthält 100 Nutzungen. Zugriff auf Kern-KI-Funktionen.', - 'ai_002_desc': 'Enthält 500 Nutzungen. Zugriff auf Kern-KI-Funktionen.', - 'ai_003_desc': 'Enthält 1000 Nutzungen. Zugriff auf Kern-KI-Funktionen.', - 'meet_001_desc': 'Enthält 100 Meeting-Aufnahmen/Transkriptionen.', - 'meet_002_desc': 'Enthält 500 Meeting-Aufnahmen/Transkriptionen.', - 'meet_003_desc': 'Enthält 1000 Meeting-Aufnahmen/Transkriptionen.', - 'trans_001_desc': 'Enthält 100 Übersetzungen (Stimme/Text).', - 'trans_002_desc': 'Enthält 500 Übersetzungen (Stimme/Text).', - 'trans_003_desc': 'Enthält 1000 Übersetzungen (Stimme/Text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Echtzeit-Simultandolmetschen und Textübersetzung mit Sprachwiedergabe bei niedriger Latenz.', - 'transHeaderDesc2': 'Geeignet für Reisen, Geschäft, Reden und Lehre.', - 'translateZhEn': 'Chinesisch-Englisch-Übersetzung', - 'lowLatencyVoiceBroadcast': 'Sprachübertragung mit niedriger Latenz', - 'multiLangTextTranslation': 'Mehrsprachige Textübersetzung', - 'termOptimizationContextPreserve': - 'Terminologieoptimierung und Kontextwahrung', - 'lexiconTourBusinessLife': 'Lexika für Reise/Geschäft/Alltag', - 'personalVocabularyMemory': 'Persönlicher Wortschatzspeicher', - 'conversationSubtitleLargeText': 'Konversationsuntertitel / Großtext-Modus', - 'colorHighContrast': 'Hoher Farbkontrast', - 'transDisclaimer': - 'Die Übersetzungsleistung hängt von Mikrofon, Netzwerklatenz und Umgebungsgeräuschen ab.', - - // AI 商品页描述 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', 'aiHeaderDesc2': @@ -343,7 +335,46 @@ const Map deDE = { 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Echtzeit-Transkription', + 'sceneLexicon': 'Szenarien-Glossar', + 'subtitleDisplay': 'Untertitel', + 'transHeaderDesc1': + 'Echtzeit-Simultandolmetschen und Textübersetzung mit Sprachwiedergabe bei niedriger Latenz.', + 'transHeaderDesc2': 'Geeignet für Reisen, Geschäft, Reden und Lehre.', + 'translateZhEn': 'Chinesisch-Englisch-Übersetzung', + 'lowLatencyVoiceBroadcast': 'Sprachübertragung mit niedriger Latenz', + 'multiLangTextTranslation': 'Mehrsprachige Textübersetzung', + 'termOptimizationContextPreserve': + 'Terminologieoptimierung und Kontextwahrung', + 'lexiconTourBusinessLife': 'Lexika für Reise/Geschäft/Alltag', + 'personalVocabularyMemory': 'Persönlicher Wortschatzspeicher', + 'conversationSubtitleLargeText': 'Konversationsuntertitel / Großtext-Modus', + 'colorHighContrast': 'Hoher Farbkontrast', + 'transDisclaimer': + 'Die Übersetzungsleistung hängt von Mikrofon, Netzwerklatenz und Umgebungsgeräuschen ab.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Meeting-Aufnahme', + 'transcriptionAndSummary': 'Transkription & Zusammenfassung', + 'keywordSearch': 'Stichwortsuche', + 'collaborationSharing': 'Zusammenarbeit & Teilen', + 'meetingHeaderDesc1': + 'Audio recording, transcription, keyword search, and auto summary.', + 'meetingHeaderDesc2': + 'Suitable for business meetings, class notes, and interview minutes.', + 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingSpeakerTagging': 'Speaker labeling', + 'meetingLongAudioTranscription': 'Long audio transcription', + 'meetingKeyPointSummary': 'Key point extraction', + 'meetingTopicNameSearch': 'Search by topic/name', + 'meetingTimelineJump': 'Timeline jump', + 'meetingExportSummary': 'Export minutes', + 'meetingMultiPlatformShare': 'Share across platforms', + 'meetingDisclaimer': + 'Use in quiet environments; performance depends on microphone and network.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Übersicht der Vorteile', 'higherQuota': 'Höheres Nutzungskontingent', 'lowerUnitPrice': 'Niedrigerer Stückpreis', @@ -359,7 +390,32 @@ const Map deDE = { 'vipDisclaimer': 'Die tatsächlichen Vorteile hängen von den Paketdetails ab und können sich mit Versionen ändern.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'KI Basic 100', + 'ai_002_name': 'KI Basic 500', + 'ai_003_name': 'KI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Übersetzung Basis 100', + 'trans_002_name': 'Übersetzung Basis 500', + 'trans_003_name': 'Übersetzung Basis 1000', + 'ai_001_desc': 'Enthält 100 Nutzungen. Zugriff auf Kern-KI-Funktionen.', + 'ai_002_desc': 'Enthält 500 Nutzungen. Zugriff auf Kern-KI-Funktionen.', + 'ai_003_desc': 'Enthält 1000 Nutzungen. Zugriff auf Kern-KI-Funktionen.', + 'meet_001_desc': 'Enthält 100 Meeting-Aufnahmen/Transkriptionen.', + 'meet_002_desc': 'Enthält 500 Meeting-Aufnahmen/Transkriptionen.', + 'meet_003_desc': 'Enthält 1000 Meeting-Aufnahmen/Transkriptionen.', + 'trans_001_desc': 'Enthält 100 Übersetzungen (Stimme/Text).', + 'trans_002_desc': 'Enthält 500 Übersetzungen (Stimme/Text).', + 'trans_003_desc': 'Enthält 1000 Übersetzungen (Stimme/Text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "Überspringen", 'next': 'Weiter', 'sayLilyHint': "Sagen Sie \"Lily Lily\" ins Mikrofon", @@ -371,7 +427,6 @@ const Map deDE = { 'guideAwakenSuccess': "Großartig! Lily ist wach – bitten Sie sie um Hilfe.", 'confirmInput': "Eingabe bestätigen", 'guideClickSendPrefix': "Senden tippen, ", - // AI 引导步骤 'guideWeatherStart': "Sagen Sie Lily: „Wie ist das Wetter heute?“", 'guideWeatherInput': "Wie ist das Wetter heute?", 'guideWeatherSend': "Lily wird das Wetter in Echtzeit berichten", @@ -400,7 +455,7 @@ const Map deDE = { 'guideSmsSend': "Lily wird die Nachricht senden", 'guideSmsEnd': "Nachricht gesendet – Sprachsteuerung ist bequem", - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Meeting starten", 'edit': 'Bearbeiten', 'delete': 'Löschen', @@ -412,8 +467,6 @@ const Map deDE = { 'recordingDetails': 'Aufnahme-Details', 'aiSummary': 'KI-Zusammenfassung', 'meetingTranscript': 'Meeting-Transkript', - - // Meeting模块 - 导航和基础功能 'files': 'Dateien', 'mine': 'Mein', 'connect': 'Verbinden', @@ -475,7 +528,6 @@ const Map deDE = { 'summarizing': 'Zusammenfassen...', 'analyzing': 'Analysieren...', 'summaryComplete': 'Zusammenfassung abgeschlossen', - //'generating': '正在生成...', 'generate': 'Generieren', 'overview': 'Übersicht', 'transcription': 'Transkription', @@ -484,6 +536,98 @@ const Map deDE = { 'editSpeaker': 'Bearbeiten', 'nameSpeaker': 'Sprecher benennen', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Erneut zusammenfassen', + 'dateAndTime': 'Datum & Uhrzeit', + 'location': 'Ort', + 'attendees': 'Teilnehmer', + 'inputLocation': 'Ort eingeben', + 'inputAttendees': 'Teilnehmer eingeben', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Zusammenfassungsvorlage auswählen', + 'useThisTemplate': 'Diese Vorlage verwenden', + 'lastUsed': 'Zuletzt verwendet', + 'create': 'Erstellen', + 'templateDetails': 'Vorlagendetails', + 'tag': 'Schlagwort', + 'description': 'Beschreibung', + 'template': 'Vorlage', + 'deleteTemplate': 'Vorlage löschen', + 'deleteTemplateConfirm': 'Möchten Sie diese Vorlage wirklich löschen?', + 'editTemplate': 'Vorlage bearbeiten', + 'createTemplate': 'Vorlage erstellen', + 'name': 'Name', + 'templateContentHint': 'Bitte geben Sie den Vorlageninhalt ein! Tipp: Klicken Sie oben auf die KI-Schaltfläche, um schnell Vorlageninhalt basierend auf dem eingegebenen Namen und der Beschreibung zu generieren', + 'inputNameHint': 'Bitte Namen eingeben', + 'inputDescHint': 'Bitte Beschreibung eingeben', + 'custom': 'Benutzerdefiniert', + 'pleaseEnter': 'Bitte eingeben', + 'viewAll': 'Alle anzeigen', + 'recordingLanguage': 'Aufnahmesprache', + 'chineseSimplified': 'Chinesisch (Vereinfacht)', + 'meetingGenerateNow': 'Jetzt generieren', + 'keyEventsAnalyzed': '{count} Schlüsselereignisse analysiert.', + 'aiAnalysisDesc': + 'Die KI-Analyse identifiziert Schlüsselereignisse in Aufnahmen, sodass Sie wichtige Ereignisse für die KI-Generierung auswählen können.', + + // Meeting模块 - 文件操作 + 'importing': 'Importiere...', + 'batchImporting': 'Batch-Import...', + 'importingLocalRecordings': 'Importiere lokale Aufnahmen...', + 'importFailed': 'Dateiimport fehlgeschlagen: {filePath}, Fehler: {error}', + 'importSuccess': '{count} lokale Aufnahmen erfolgreich importiert', + 'importError': 'Import fehlgeschlagen: {error}', + 'pleaseSelectAudioFile': 'Bitte Audiodatei auswählen', + 'shareAudio': 'Meeting-Audio teilen', + 'shareComplete': 'Teilen abgeschlossen!', + 'shareFailed': 'Teilen fehlgeschlagen: {error}', + 'fileProcessingFailed': + 'Dateiverarbeitung fehlgeschlagen: {filePath}, Fehler: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Mindmap speichern', + 'shareMindMap': 'Mindmap teilen', + 'shareSuccess': 'Teilen erfolgreich', + + // Meeting模块 - AI问答 + 'askAI': 'KI fragen...', + 'askAIPrompt': 'Wobei kann ich Ihnen heute helfen?', + 'continueAsk': 'Weiter fragen', + 'todoList': 'To-Do-Liste', + 'extractConclusion': 'Fazit extrahieren', + 'generateKeyIndicators': 'Schlüsselindikatoren generieren', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Link teilen', + 'copyTranscript': 'Transkript kopieren', + 'copySummary': 'Zusammenfassung kopieren', + 'exportAudio': 'Audio exportieren', + 'exportTranscript': 'Transkript exportieren', + 'shareMeetingAudio': 'Meeting-Audio teilen', + 'exportSummary': 'Zusammenfassung exportieren', + 'exportAs': 'Exportieren als', + 'exportingPDF': 'Exportiere PDF...', + 'export': 'Exportieren', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Auf alle Absätze dieses Sprechers anwenden', + 'summaryWillBeUpdatedAutomatically': + 'Die Zusammenfassung wird basierend auf der Vorlage automatisch aktualisiert', + 'nameCurrentSpeaker': 'Aktuellen Sprecher benennen', + 'recentlyUsedNames': 'Zuletzt verwendete Namen', + 'applyToCurrentParagraph': 'Auf aktuellen Absatz anwenden', + 'totalTime': 'Gesamt', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Sprecher in der Zusammenfassung werden automatisch aktualisiert', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Mit Cloud synchronisieren', + 'syncToCloudTip': + 'Synchronisieren Sie Ihre Aufnahmen automatisch mit der Cloud. Sie können Aufnahmen über jede VOITRANS APP oder VOITRANS Web (web.voitrans.com) abspielen, verwalten und teilen.', + 'syncToVoitransApp': 'VOITRANS APP synchronisieren', + 'transcriptionRecord': 'Transkriptionsaufzeichnung', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transkriptionsaufzeichnungen', 'templateCommunity': 'Vorlagen-Community', @@ -503,7 +647,7 @@ const Map deDE = { 'Voitrans-Gerät binden, um Starter-Mitgliedschaft zu aktivieren', 'unlockNow': 'Jetzt freischalten', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Vergleich', 'detailedInfo': 'Detaillierte Informationen', 'monthlyTranscriptionTime': 'Monatliche Transkriptionszeit', @@ -539,8 +683,6 @@ const Map deDE = { 'Importieren Sie einfach Audiodateien aus lokalen oder Drittanbieter-Anwendungen wie Sprachmemos, Google Drive usw.', 'multipleExportFormatsDesc': 'Exportieren Sie Ihre Audioaufnahmen, Transkriptionstexte und Zusammenfassungen in verschiedenen Formaten (TXT, PDF, JPEG), um Ihre Anforderungen zu erfüllen.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Mitgliedschaft upgraden', 'yearlySubscription': 'Jahresabo', 'monthlySubscription': 'Monatsabo', @@ -570,106 +712,26 @@ const Map deDE = { 'Sofort nach Kauf aktiviert, 2 Jahre nach Aktivierung gültig.', 'purchase': 'Kaufen', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Zusammenfassungsvorlage auswählen', - 'useThisTemplate': 'Diese Vorlage verwenden', - 'lastUsed': 'Zuletzt verwendet', - 'viewAll': 'Alle anzeigen', - 'recordingLanguage': 'Aufnahmesprache', - 'chineseSimplified': 'Chinesisch (Vereinfacht)', - 'meetingGenerateNow': 'Jetzt generieren', - 'keyEventsAnalyzed': '{count} Schlüsselereignisse analysiert.', - 'aiAnalysisDesc': - 'Die KI-Analyse identifiziert Schlüsselereignisse in Aufnahmen, sodass Sie wichtige Ereignisse für die KI-Generierung auswählen können.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importiere...', - 'batchImporting': 'Batch-Import...', - 'importingLocalRecordings': 'Importiere lokale Aufnahmen...', - 'importFailed': 'Dateiimport fehlgeschlagen: {filePath}, Fehler: {error}', - 'importSuccess': '{count} lokale Aufnahmen erfolgreich importiert', - 'importError': 'Import fehlgeschlagen: {error}', - 'pleaseSelectAudioFile': 'Bitte Audiodatei auswählen', - 'shareAudio': 'Meeting-Audio teilen', - 'shareComplete': 'Teilen abgeschlossen!', - 'shareFailed': 'Teilen fehlgeschlagen: {error}', - 'fileProcessingFailed': - 'Dateiverarbeitung fehlgeschlagen: {filePath}, Fehler: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unbekannte Sprache', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Speicher', - 'meetingStoragePermissionExplanation': - 'Wir benötigen Zugriff auf Speicherberechtigungen, damit Sie Audiodateien auswählen und hochladen können.', - 'meetingStoragePermissionPermanentDenial': - 'Sie haben die Speicherberechtigung dauerhaft verweigert. Um diese Funktion weiterhin nutzen zu können, aktivieren Sie die Speicherberechtigung bitte manuell in den App-Einstellungen.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Mindmap teilen', - 'shareSuccess': 'Teilen erfolgreich', - - // Meeting模块 - AI相关 - 'askAI': 'KI fragen...', - 'askAIPrompt': 'Wobei kann ich Ihnen heute helfen?', - 'continueAsk': 'Weiter fragen', - 'todoList': 'To-Do-Liste', - 'extractConclusion': 'Fazit extrahieren', - 'generateKeyIndicators': 'Schlüsselindikatoren generieren', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Erneut zusammenfassen', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Aufnahmesprache', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Kantonesisch', 'sichuan': 'Sichuan-Dialekt', 'shanghai': 'Shanghai-Dialekt', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - // Meeting模块 - 分享相关 - 'shareLink': 'Link teilen', - 'copyTranscript': 'Transkript kopieren', - 'copySummary': 'Zusammenfassung kopieren', - 'exportAudio': 'Audio exportieren', - 'exportTranscript': 'Transkript exportieren', - 'shareMeetingAudio': 'Meeting-Audio teilen', - 'exportSummary': 'Zusammenfassung exportieren', - 'exportAs': 'Exportieren als', - 'exportingPDF': 'Exportiere PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Auf alle Absätze dieses Sprechers anwenden', - 'summaryWillBeUpdatedAutomatically': - 'Die Zusammenfassung wird basierend auf der Vorlage automatisch aktualisiert', - 'nameCurrentSpeaker': 'Aktuellen Sprecher benennen', - 'recentlyUsedNames': 'Zuletzt verwendete Namen', - 'applyToCurrentParagraph': 'Auf aktuellen Absatz anwenden', - 'totalTime': 'Gesamt', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Sprecher in der Zusammenfassung werden automatisch aktualisiert', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Mit Cloud synchronisieren', - 'syncToCloudTip': - 'Synchronisieren Sie Ihre Aufnahmen automatisch mit der Cloud. Sie können Aufnahmen über jede VOITRANS APP oder VOITRANS Web (web.voitrans.com) abspielen, verwalten und teilen.', - 'syncToVoitransApp': 'VOITRANS APP synchronisieren', - 'transcriptionRecord': 'Transkriptionsaufzeichnung', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Datum & Uhrzeit', - 'location': 'Ort', - 'attendees': 'Teilnehmer', - 'inputLocation': 'Ort eingeben', - 'inputAttendees': 'Teilnehmer eingeben', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unbekannte Sprache', + 'analysisFailed': 'Analyse fehlgeschlagen, bitte versuchen Sie es später erneut', + 'transcriptionFailed': 'Transkription fehlgeschlagen, bitte versuchen Sie es später erneut', + 'summaryFailed': 'Zusammenfassung fehlgeschlagen, bitte versuchen Sie es später erneut', + 'summaryFailedShort': 'Zusammenfassung fehlgeschlagen', + 'transcriptionFailedShort': 'Transkription fehlgeschlagen', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Audioplayer ist nicht bereit, bitte warten', + 'playFailed': 'Wiedergabe fehlgeschlagen', + 'audioFileNotFound': 'Audiodatei nicht gefunden', + 'fetchingAudio': 'Audio wird aus der Cloud abgerufen...', + 'playerLoadFailed': 'Audioplayer konnte nicht geladen werden', // 设置页 "systemSettings": "Systemeinstellungen", @@ -722,26 +784,15 @@ const Map deDE = { "bleHeadsetFirmwareUpgrade": "BLE-Kopfhörer Firmware-Upgrade", "deviceManagement": "Geräteverwaltung", "manageConnectedDevices": "Verbundene Bluetooth-Geräte verwalten", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Aktuelle Version ist bereits die neueste {version}', 'checkUpdateFailed': 'Update-Prüfung fehlgeschlagen', 'networkErrorRetry': 'Netzwerkfehler, bitte später versuchen', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": 'Echtzeit-Sprachgespräch', "realtimeVoiceChatInfo": 'Intelligente Sprachinteraktionsfunktionen erleben (Vorschau)', "loading": 'Laden...', - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unbekanntes Gerät", "deviceTypeClassicBluetoothHeadset": "Klassisches Bluetooth-Headset", "deviceTypeBleBluetoothHeadset": "BLE-Bluetooth-Headset", @@ -758,8 +809,7 @@ const Map deDE = { "Sind Sie sicher, dass Sie die Bindung des Geräts \"{deviceName}\" aufheben möchten?", "confirmUnbindAction": "Bindung aufheben bestätigen", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Chat-Verlauf löschen", "online": "Online", @@ -789,8 +839,9 @@ const Map deDE = { "swipeUpForMore": "Nach oben wischen für mehr", "callingTool": "Ich helfe Ihnen, bitte warten!", // 正在帮您,请稍等! "voice_interrupt": "Unterbrechen", // 语音打断 + 'voice_interrupt_tip': 'Wenn aktiviert: Die KI wird nicht durch Ihre Stimme unterbrochen, während sie spricht, und kann nur eine Gesprächsrunde gleichzeitig bearbeiten. Um eine neue Runde zu starten, sagen Sie einfach das Aktivierungswort.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Musik abspielen", // 来点音乐 "presetNavigation": "Navigieren zu", // 导航 "presetWeather": "Wetter heute", // 今日天气 @@ -802,7 +853,7 @@ const Map deDE = { "todayNews": "Was sind die Nachrichten heute?", // 今日新闻 "nearbyFood": "Welches leckere Essen gibt es in der Nähe?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Hallo! Ich bin **Lily**, ich kann Ihnen helfen:\n\n' '• Fragen beantworten und Informationen bereitstellen\n\n' '• Echtzeit-Sprachübersetzung\n\n' @@ -822,11 +873,11 @@ const Map deDE = { 'startVoiceInput': 'Spracheingabe starten', 'startPhoneCallMode': 'Anrufmodus starten, Spracheingabe beginnen', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Geben Sie hier Ihre Nachricht ein...', // 全屏编辑器输入提示 'characterCount': '{count} Zeichen', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopieren', 'copySuccess': 'Erfolgreich kopiert', 'report': 'Melden', @@ -834,7 +885,6 @@ const Map deDE = { 'submitFailed': 'Übermittlung fehlgeschlagen', 'reportSubmitted': 'Meldung übermittelt, wir werden sie so schnell wie möglich bearbeiten', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Schädlich/Unsicher', 'pornographicVulgar': 'Pornografisch/Vulgär', 'misleadingAttack': 'Irreführend/Angriff', @@ -845,17 +895,14 @@ const Map deDE = { 'other': 'Andere', 'reportDescriptionHint': 'Wir möchten den Grund für Ihre Meldung wissen, Sie können das Problem beschreiben, das Sie erlebt haben.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Von KI generiert', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'Hier sind einige empfohlene Musik:', 'playList': 'Wiedergabeliste', 'moreMusic': 'Mehr Musik', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'Stunden', // 小时单位 @@ -870,7 +917,7 @@ const Map deDE = { "bicycling": "Radfahren", "tsransit": "ÖPNV", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Wetterabfrage:', 'highest': 'Höchste', 'lowest': 'Niedrigste', @@ -900,18 +947,8 @@ const Map deDE = { "friday": "Fr", "saturday": "Sa", "sunday": "So", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Willkommensbonus", - "firstBindRewardDesc": "Sie haben Bindungsprämien erhalten.", - "vipLevelLabel": "VIP-Level:", - "expiryLabel": "Ablaufdatum:", - "notActivated": "Nicht aktiviert", - "aiChatCreditsLabel": "KI-Chat-Guthaben:", - "translationCreditsLabel": "Übersetzungsguthaben:", - "meetingCreditsLabel": "Meeting-Guthaben:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Sonnig", "partlyCloudy": "Teilweise bewölkt", "partlySunny": "Teilweise sonnig", @@ -932,7 +969,131 @@ const Map deDE = { "haze": "Dunst", "strongWind": "Starker Wind", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Bildübersetzung", + "textTranslation": "Textübersetzung", + + // 翻译模块 - 主页 + "translationHistory": "Übersetzungsverlauf", + "enableRecording": "Aufnahme aktivieren", + "viewAudioFiles": "Audiodateien anzeigen", + "headsetUser": "Kopfhörer-Benutzer", + "phoneUser": "Telefon-Benutzer", + "selectSourceLanguage": "Quellsprache auswählen", + "selectTargetLanguage": "Zielsprache auswählen", + "me": "Ich", + "counterPart": "Gegenüber", + "bluetoothCallStateError": + "Bitte stellen Sie sicher, dass das Bluetooth-Headset mit dem Telefon verbunden ist und sich in einem Anrufzustand befindet", + "autoDetect": "Automatische Erkennung", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Spracherkennung fehlgeschlagen", + "translationFailed": "Übersetzung fehlgeschlagen", + "pleaseInputText": "Bitte Text eingeben", + "textTooLong": "Text zu lang, max. 5000 Zeichen", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Kein Übersetzungsverlauf", + "historyRecords": "Verlaufsaufzeichnungen", + "clearResults": "Ergebnisse löschen", + "clearHistory": "Verlauf löschen", + "clearHistoryConfirm": + "Sind Sie sicher, dass Sie den gesamten Übersetzungsverlauf löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.", + "unknownLanguage": "Unbekannte Sprache", + "deleteSessionRecord": "Sitzungsaufzeichnung löschen", + "deleteSessionConfirm": + "Sind Sie sicher, dass Sie alle Übersetzungsaufzeichnungen für diese Sitzung löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Bildquelle auswählen", + "imagePreview": "Bildvorschau", + "translationResult": "Übersetzungsergebnis", + "recognitionResult": "Erkennungsergebnis", + "translatedImagePreview": "Übersetzte Bildvorschau", + "translatedImageLoadFailed": "Laden des übersetzten Bildes fehlgeschlagen", + "pleaseSelectImage": "Bitte wählen Sie ein Bild aus", + "imageLoadFailed": "Bild laden fehlgeschlagen", + "imageQuality": "Bildqualität", + "maxSize": "Maximale Größe", + "close": "Schließen", + "setImageQuality": "Bildqualität einstellen", + "currentQuality": "Aktuelle Qualität: @value%", + "setMaxSize": "Maximale Größe einstellen", + "currentMaxSize": "Aktuell: @pxpx", + "waitingForAction": "Warte auf Aktion", + "pleaseSelectImageToStart": "Bitte wählen Sie ein Bild aus, um zu beginnen", + "chooseImage": "Bild auswählen", + "openingCamera": "Kamera öffnen...", + "openingPhotoAlbum": "Fotoalbum öffnen...", + "cancelled": "Abgebrochen", + "userCancelledSelection": "Benutzer hat die Auswahl abgebrochen", + "translatingImage": "Bild wird übersetzt", + "callingImageTranslateService": "Rufe Bildübersetzungsdienst auf...", + "savingRecord": "Speichere Datensatz", + "savingTranslationResult": "Speichere Übersetzungsergebnis...", + "translationCompleted": "Übersetzung abgeschlossen", + "allStepsCompleted": "Alle Schritte abgeschlossen", + "processingFailed": "Verarbeitung fehlgeschlagen", + "imageProcessingOrTranslationFailed": + "Bildverarbeitung oder Übersetzung fehlgeschlagen. Bitte erneut versuchen.\nFehler: {error}", + "imageTooLarge": "Bildgröße überschreitet 4MB-Limit", + "imageTooLargeHint": + "Bildgröße überschreitet 4MB. Qualität oder Abmessungen reduzieren und erneut versuchen", + "emptyTranslationResult": "Bildübersetzungs-API gab leeres Ergebnis zurück", + "imageTranslationFailedTryLater": + "Bildübersetzung fehlgeschlagen. Netzwerkproblem oder Ratenbegrenzung. Bitte später versuchen", + "imageTranslationApiException": + "Bildübersetzungs-API Ausnahme. Netzwerk prüfen und erneut versuchen", + "permissionRequired": "Berechtigung erforderlich", + "cameraPermissionRequired": + "Kameraberechtigung erforderlich, um Fotos aufzunehmen", + "photoAlbumPermissionRequired": + "Fotoalbum-Berechtigung erforderlich, um Bilder auszuwählen", + "translationDetails": "Übersetzungsdetails", + "originalImage": "Originalbild", + "sourceLanguage": "Quellsprache", + "targetLanguage": "Zielsprache", + "translationTime": "Übersetzungszeit", + "shareInDevelopment": "Teilen-Funktion in Entwicklung", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Audiodateien übersetzen", + "noAudioFiles": "Keine Audiodateien", + "calculating": "Berechnung läuft...", + "playing": "Wiedergabe läuft...", + "paused": "Pausiert", + "clickToPlay": "Zum Abspielen klicken", + "rename": "Umbenennen", + "smartTranscription": "Intelligente Transkription", + "renameAudioFile": "Audiodatei umbenennen", + "enterNewFileName": "Bitte geben Sie den neuen Dateinamen ein", + + // 翻译模块 - 翻译详情 + "originalRecord": "Originalaufzeichnung", + "recordSummary": "Aufzeichnungszusammenfassung", + "clickToGenerateSummary": + "Klicken Sie auf die Schaltfläche unten, um eine Sitzungszusammenfassung zu generieren", + "summaryContent": "Zusammenfassungsinhalt", + "copied": "Kopiert", + "summaryCopiledToClipboard": "Zusammenfassung in die Zwischenablage kopiert", + "extractSummary": "Zusammenfassung extrahieren", + "summaryGenerated": "Zusammenfassung generiert", + "generating": "Generierung läuft...", + "regenerate": "Neu generieren", + "summaryTimeoutMessage": + "Zusammenfassungsgenerierung-Anfrage ist abgelaufen, möglicherweise aufgrund von Netzwerkproblemen oder Server-Überlastung.", + "deleteTranslationRecord": "Übersetzungsaufzeichnung löschen", + "deleteTranslationConfirm": + "Sind Sie sicher, dass Sie diese Übersetzungsaufzeichnung löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.", + "originalText": "Originaltext", + "translatedText": "Übersetzter Text", + "sessionSummary": "Sitzungszusammenfassung", + "cannotShare": "Kann nicht teilen", + "generateSummaryFirst": "Bitte generieren Sie zuerst eine Zusammenfassung", + "translationSessionRecord": "Übersetzungssitzungsaufzeichnung", + + // 个人资料模块 "editProfile": "Profil bearbeiten", "avatar": "Avatar", "nickname": "Spitzname", @@ -950,8 +1111,6 @@ const Map deDE = { 'clean': 'Cache leeren', 'cleanTips': 'Sind Sie sicher, dass Sie den persönlichen Cache leeren möchten?', - - // Profile 错误信息 'networkConnectionFailed': 'Netzwerkverbindung fehlgeschlagen, bitte überprüfen Sie die Netzwerkeinstellungen und versuchen Sie es erneut', 'serverTemporarilyUnavailable': @@ -970,10 +1129,6 @@ const Map deDE = { 'Netzwerkverbindung fehlgeschlagen, bitte überprüfen Sie die Netzwerkeinstellungen', 'serverInternalErrorRetryLater': 'Interner Serverfehler, bitte versuchen Sie es später erneut', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Bildkomprimierung fehlgeschlagen', 'avatarUpdateFailed': 'Avatar-Update fehlgeschlagen', 'usernameCannotBeEmpty': 'Benutzername darf nicht leer sein', @@ -986,8 +1141,6 @@ const Map deDE = { 'accountPermanentlyDeleted': 'Konto dauerhaft gelöscht', 'deleteAccountFailedRetry': 'Konto löschen fehlgeschlagen, bitte versuchen Sie es erneut', - - // 账号服务相关 'clearUserDataFailed': 'Benutzerdaten löschen fehlgeschlagen', // 清理用户数据失败 'deleteUserDataFailed': 'Benutzerdaten löschen fehlgeschlagen', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'Drittanbieter-Abmeldung erfolgreich', // 第三方登录退出成功 @@ -1002,7 +1155,12 @@ const Map deDE = { 'accountServiceInitialized': 'AccountService initialisiert', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Speicher', + 'meetingStoragePermissionExplanation': + 'Wir benötigen Zugriff auf Speicherberechtigungen, damit Sie Audiodateien auswählen und hochladen können.', + 'meetingStoragePermissionPermanentDenial': + 'Sie haben die Speicherberechtigung dauerhaft verweigert. Um diese Funktion weiterhin nutzen zu können, aktivieren Sie die Speicherberechtigung bitte manuell in den App-Einstellungen.', 'getPermissionStatusFailed': 'Berechtigungsstatus abrufen fehlgeschlagen', 'communicationPermissions': 'Kommunikationsberechtigungen', 'bluetoothPermissions': 'Bluetooth-Berechtigungen', @@ -1015,7 +1173,6 @@ const Map deDE = { 'phone': 'Telefon', 'sms': 'SMS', 'contacts': 'Kontakte', - //'bluetooth': '蓝牙', 'notification': 'Benachrichtigung', 'alarm': 'Alarm', 'calendarWrite': 'Kalender schreiben', @@ -1075,8 +1232,6 @@ const Map deDE = { 'permanentDenialText': 'Sie haben die {permission}-Berechtigung dauerhaft verweigert, bitte gehen Sie zu den App-Einstellungen, um sie zu aktivieren', 'goToSettings': 'Zu Einstellungen gehen', - - // 权限申请 'bluetoothScan': 'Bluetooth-Scan', 'bluetoothConnect': 'Bluetooth-Verbindung', 'bluetoothScanExplanation': @@ -1101,7 +1256,6 @@ const Map deDE = { 'Sie haben die Benachrichtigungsberechtigung dauerhaft verweigert, bitte gehen Sie zu den Einstellungen, um sie zu aktivieren.', 'locationPermissionPermanentDenial': 'Sie haben die Standortberechtigung dauerhaft verweigert, bitte gehen Sie zu den Einstellungen, um sie zu aktivieren.', -//'microphonePermission': '录音', 'storagePermission': 'Speicher', 'microphonePermissionExplanation': 'Wir benötigen Mikrofonberechtigung, um Audioinhalte aufzunehmen.', @@ -1111,6 +1265,12 @@ const Map deDE = { 'Mikrofonberechtigung wurde dauerhaft verweigert. Um diese Funktion weiterhin nutzen zu können, gehen Sie bitte zu den App-Einstellungen, um die Mikrofonberechtigung manuell zu aktivieren.', 'storagePermissionPermanentDenial': 'Speicherberechtigung wurde dauerhaft verweigert. Um diese Funktion weiterhin nutzen zu können, gehen Sie bitte zu den App-Einstellungen, um die Speicherberechtigung manuell zu aktivieren.', + 'permissionUtilNeed': 'Benötige ', + 'permissionUtilPermission': ' Berechtigung', + 'permissionUtilRestricted': ' Berechtigung eingeschränkt', + 'permissionUtilRestrictedMessage': + 'Diese Funktion ist auf dem aktuellen Gerät nicht verfügbar oder eingeschränkt, bitte überprüfen Sie die Geräteeinstellungen oder Systemeinschränkungen', + 'permissionUtilConfirm': 'OK', // 原生前台服务通知(Android) 'native.notification.appName': 'VOITRANS', // VOITRANS @@ -1127,15 +1287,7 @@ const Map deDE = { 'native.notification.music.pause': 'Pause', // 暂停 'native.notification.qqMusic.playing': 'Musik wird wiedergegeben', // 正在播放音乐 - //permission_util.dart - 'permissionUtilNeed': 'Benötige ', - 'permissionUtilPermission': ' Berechtigung', - 'permissionUtilRestricted': ' Berechtigung eingeschränkt', - 'permissionUtilRestrictedMessage': - 'Diese Funktion ist auf dem aktuellen Gerät nicht verfügbar oder eingeschränkt, bitte überprüfen Sie die Geräteeinstellungen oder Systemeinschränkungen', - 'permissionUtilConfirm': 'OK', - - // 版本更新对话框 + // 版本更新 'newVersionFound': 'Neue Version gefunden', // 版本更新对话框标题 'remindLater': 'Später erinnern', // 稍后提醒按钮 'updateNow': 'Jetzt aktualisieren', // 立即更新按钮 @@ -1146,254 +1298,7 @@ const Map deDE = { 'updateErrorRetry': 'Fehler beim Update-Prozess aufgetreten, bitte versuchen Sie es später erneut', // 更新错误重试提示 - //国家列表 - "邮箱": "E-Mail", - "中国": "China", - "美国": "Vereinigte Staaten", - "加拿大": "Kanada", - "俄罗斯": "Russland", - "英国": "Vereinigtes Königreich", - "德国": "Deutschland", - "意大利": "Italien", - "法国": "Frankreich", - "西班牙": "Spanien", - "南非": "Südafrika", - "沙特阿拉伯": "Saudi-Arabien", - "土耳其": "Türkei", - "日本": "Japan", - "韩国": "Südkorea", - "新加坡": "Singapur", - "马来西亚": "Malaysia", - "泰国": "Thailand", - "越南": "Vietnam", - "印度": "Indien", - "巴基斯坦": "Pakistan", - "菲律宾": "Philippinen", - "印度尼西亚": "Indonesien", - "阿联酋": "Vereinigte Arabische Emirate", - "墨西哥": "Mexiko", - "巴西": "Brasilien", - "阿根廷": "Argentinien", - "澳大利亚": "Australien", - "新西兰": "Neuseeland", - "中国香港": "Hongkong, China", - "中国澳门": "Macau, China", - "中国台湾": "Taiwan, China", - "埃及": "Ägypten", - "希腊": "Griechenland", - "荷兰": "Niederlande", - "比利时": "Belgien", - "匈牙利": "Ungarn", - "罗马尼亚": "Rumänien", - "瑞士": "Schweiz", - "奥地利": "Österreich", - "丹麦": "Dänemark", - "瑞典": "Schweden", - "挪威": "Norwegen", - "波兰": "Polen", - "秘鲁": "Peru", - "智利": "Chile", - "哥伦比亚": "Kolumbien", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugal", - "卢森堡": "Luxemburg", - "爱尔兰": "Irland", - "冰岛": "Island", - "阿尔巴尼亚": "Albanien", - "马耳他": "Malta", - "塞浦路斯": "Zypern", - "芬兰": "Finnland", - "保加利亚": "Bulgarien", - "立陶宛": "Litauen", - "拉脱维亚": "Lettland", - "爱沙尼亚": "Estland", - "乌克兰": "Ukraine", - "塞尔维亚": "Serbien", - "克罗地亚": "Kroatien", - "斯洛文尼亚": "Slowenien", - "捷克": "Tschechische Republik", - "斯洛伐克": "Slowakei", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolivien", - "厄瓜多尔": "Ecuador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Marokko", - "阿尔及利亚": "Algerien", - "突尼斯": "Tunesien", - "尼日利亚": "Nigeria", - "加纳": "Ghana", - "埃塞俄比亚": "Äthiopien", - "肯尼亚": "Kenia", - "坦桑尼亚": "Tansania", - "乌干达": "Uganda", - "孟加拉国": "Bangladesch", - "以色列": "Israel", - "黎巴嫩": "Libanon", - "约旦": "Jordanien", - "伊拉克": "Irak", - "科威特": "Kuwait", - "巴林": "Bahrain", - "卡塔尔": "Katar", - "阿曼": "Oman", - "阿富汗": "Afghanistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongolei", - "柬埔寨": "Kambodscha", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "Osttimor", - "斐济": "Fidschi", - "所罗门群岛": "Salomonen", - "刚果民主共和国": "Demokratische Republik Kongo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Malediven", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaika", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua-Neuguinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Bildübersetzung", - "textTranslation": "Textübersetzung", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Übersetzungsverlauf", - "enableRecording": "Aufnahme aktivieren", - "viewAudioFiles": "Audiodateien anzeigen", - "headsetUser": "Kopfhörer-Benutzer", - "phoneUser": "Telefon-Benutzer", - "selectSourceLanguage": "Quellsprache auswählen", - "selectTargetLanguage": "Zielsprache auswählen", - "me": "Ich", - "counterPart": "Gegenüber", - "bluetoothCallStateError": - "Bitte stellen Sie sicher, dass das Bluetooth-Headset mit dem Telefon verbunden ist und sich in einem Anrufzustand befindet", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Automatische Erkennung", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Spracherkennung fehlgeschlagen", - "translationFailed": "Übersetzung fehlgeschlagen", - "pleaseInputText": "Bitte Text eingeben", - "textTooLong": "Text zu lang, max. 5000 Zeichen", - - // 翻译历史页 - "noTranslationHistory": "Kein Übersetzungsverlauf", - "historyRecords": "Verlaufsaufzeichnungen", - "clearResults": "Ergebnisse löschen", - "clearHistory": "Verlauf löschen", - "clearHistoryConfirm": - "Sind Sie sicher, dass Sie den gesamten Übersetzungsverlauf löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.", - "unknownLanguage": "Unbekannte Sprache", - "deleteSessionRecord": "Sitzungsaufzeichnung löschen", - "deleteSessionConfirm": - "Sind Sie sicher, dass Sie alle Übersetzungsaufzeichnungen für diese Sitzung löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Bildquelle auswählen", - "imagePreview": "Bildvorschau", - "translationResult": "Übersetzungsergebnis", - "recognitionResult": "Erkennungsergebnis", - "translatedImagePreview": "Übersetzte Bildvorschau", - "translatedImageLoadFailed": "Laden des übersetzten Bildes fehlgeschlagen", - "pleaseSelectImage": "Bitte wählen Sie ein Bild aus", - "imageLoadFailed": "Bild laden fehlgeschlagen", - "imageQuality": "Bildqualität", - "maxSize": "Maximale Größe", - "close": "Schließen", - "setImageQuality": "Bildqualität einstellen", - "currentQuality": "Aktuelle Qualität: @value%", - "setMaxSize": "Maximale Größe einstellen", - "currentMaxSize": "Aktuell: @pxpx", - "waitingForAction": "Warte auf Aktion", - "pleaseSelectImageToStart": "Bitte wählen Sie ein Bild aus, um zu beginnen", - "chooseImage": "Bild auswählen", - "openingCamera": "Kamera öffnen...", - "openingPhotoAlbum": "Fotoalbum öffnen...", - "cancelled": "Abgebrochen", - "userCancelledSelection": "Benutzer hat die Auswahl abgebrochen", - "translatingImage": "Bild wird übersetzt", - "callingImageTranslateService": "Rufe Bildübersetzungsdienst auf...", - "savingRecord": "Speichere Datensatz", - "savingTranslationResult": "Speichere Übersetzungsergebnis...", - "translationCompleted": "Übersetzung abgeschlossen", - "allStepsCompleted": "Alle Schritte abgeschlossen", - "processingFailed": "Verarbeitung fehlgeschlagen", - "imageProcessingOrTranslationFailed": - "Bildverarbeitung oder Übersetzung fehlgeschlagen. Bitte erneut versuchen.\nFehler: {error}", - "imageTooLarge": "Bildgröße überschreitet 4MB-Limit", - "imageTooLargeHint": - "Bildgröße überschreitet 4MB. Qualität oder Abmessungen reduzieren und erneut versuchen", - "emptyTranslationResult": "Bildübersetzungs-API gab leeres Ergebnis zurück", - "imageTranslationFailedTryLater": - "Bildübersetzung fehlgeschlagen. Netzwerkproblem oder Ratenbegrenzung. Bitte später versuchen", - "imageTranslationApiException": - "Bildübersetzungs-API Ausnahme. Netzwerk prüfen und erneut versuchen", - "permissionRequired": "Berechtigung erforderlich", - "cameraPermissionRequired": - "Kameraberechtigung erforderlich, um Fotos aufzunehmen", - "photoAlbumPermissionRequired": - "Fotoalbum-Berechtigung erforderlich, um Bilder auszuwählen", - "translationDetails": "Übersetzungsdetails", - "originalImage": "Originalbild", - "sourceLanguage": "Quellsprache", - "targetLanguage": "Zielsprache", - "translationTime": "Übersetzungszeit", - "shareInDevelopment": "Teilen-Funktion in Entwicklung", - - // 翻译录音文件列表页 - "translateAudioFiles": "Audiodateien übersetzen", - "noAudioFiles": "Keine Audiodateien", - "calculating": "Berechnung läuft...", - "playing": "Wiedergabe läuft...", - "paused": "Pausiert", - "clickToPlay": "Zum Abspielen klicken", - "rename": "Umbenennen", - "smartTranscription": "Intelligente Transkription", - "renameAudioFile": "Audiodatei umbenennen", - "enterNewFileName": "Bitte geben Sie den neuen Dateinamen ein", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Originalaufzeichnung", - "recordSummary": "Aufzeichnungszusammenfassung", - "clickToGenerateSummary": - "Klicken Sie auf die Schaltfläche unten, um eine Sitzungszusammenfassung zu generieren", - "summaryContent": "Zusammenfassungsinhalt", - "copied": "Kopiert", - "summaryCopiledToClipboard": "Zusammenfassung in die Zwischenablage kopiert", - "extractSummary": "Zusammenfassung extrahieren", - "summaryGenerated": "Zusammenfassung generiert", - "generating": "Generierung läuft...", - "regenerate": "Neu generieren", - "summaryTimeoutMessage": - "Zusammenfassungsgenerierung-Anfrage ist abgelaufen, möglicherweise aufgrund von Netzwerkproblemen oder Server-Überlastung.", - "deleteTranslationRecord": "Übersetzungsaufzeichnung löschen", - "deleteTranslationConfirm": - "Sind Sie sicher, dass Sie diese Übersetzungsaufzeichnung löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.", - "originalText": "Originaltext", - "translatedText": "Übersetzter Text", - "sessionSummary": "Sitzungszusammenfassung", - "cannotShare": "Kann nicht teilen", - "generateSummaryFirst": "Bitte generieren Sie zuerst eine Zusammenfassung", - "translationSessionRecord": "Übersetzungssitzungsaufzeichnung", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Gerätekopplung", "connectYourDeepSoundHeadset": "Verbinden Sie Ihr Voitrans-Headset", "bind": "Binden", @@ -1402,14 +1307,11 @@ const Map deDE = { "autoInputCode": "Code automatisch eingeben", "skipBinding": "Bindung überspringen", "rescan": "Erneut scannen", - "verifyingDevice": "Gerät wird verifiziert...", "confirmBinding": "Bindung bestätigen", "associatingDevice": "Gerät wird zugeordnet...", "goToBluetoothSettings": "Zu Bluetooth-Einstellungen gehen", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Bereit zum Koppeln", "preparingPairingEnvironment": "Kopplungsumgebung wird vorbereitet...", "connectDeepSoundViaSystemBluetooth": @@ -1419,8 +1321,6 @@ const Map deDE = { "waitingCompletePairing": "Bitte warten, Kopplung wird abgeschlossen...", "pairingSuccessRedirecting": "Kopplung erfolgreich! Weiterleitung zur Startseite...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Bitte stellen Sie sicher, dass das verbundene Gerät Voitrans ist", "deviceAlreadyBoundToOtherAccount": @@ -1434,19 +1334,12 @@ const Map deDE = { "Autorisierung fehlgeschlagen, bitte überprüfen Sie den Autorisierungscode", "pairingFailedRetry": "Kopplung fehlgeschlagen, bitte versuchen Sie es erneut", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Bitte aktivieren Sie Bluetooth', 'deviceDisconnected': 'Gerät getrennt', 'readyToStartPairing': 'Bereit zum Starten der Kopplung', 'checkingEnvironment': 'Umgebung wird überprüft...', 'ensureHeadsetOnAndPairingMode': 'Bitte stellen Sie sicher, dass das Headset eingeschaltet und im Kopplungsmodus ist', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Sichere Verbindung wird hergestellt...', 'needManualBindingAuthCode': 'Manuelle Bindung des Autorisierungscodes erforderlich...', @@ -1472,8 +1365,6 @@ const Map deDE = { 'bleConnectionFailed': 'BLE-Verbindung fehlgeschlagen', 'deviceAuthorizationFailedCheckCode': 'Geräteautorisierung fehlgeschlagen, bitte überprüfen Sie den Autorisierungscode', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1486,7 +1377,18 @@ const Map deDE = { 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Willkommensbonus", + "firstBindRewardDesc": "Sie haben Bindungsprämien erhalten.", + "vipLevelLabel": "VIP-Level:", + "expiryLabel": "Ablaufdatum:", + "notActivated": "Nicht aktiviert", + "aiChatCreditsLabel": "KI-Chat-Guthaben:", + "translationCreditsLabel": "Übersetzungsguthaben:", + "meetingCreditsLabel": "Meeting-Guthaben:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Feedback", 'feedbackInfo': 'Feedback oder Vorschläge geben', 'feedbackDescription': @@ -1529,7 +1431,7 @@ const Map deDE = { "removeEarbudsEnsureBattery": "Entfernen Sie beide Ohrhörer und stellen Sie sicher, dass der Batteriestand über 20% liegt", - // 音乐列表页面 + // 音乐模块 "noMusic": "Keine Musik", // 暂无音乐 "noPlayingMusic": "Keine Musik wird abgespielt", // 暂无播放音乐 "unknownSong": "Unbekanntes Lied", // 未知歌曲 @@ -1577,22 +1479,122 @@ const Map deDE = { "波斯语": "Persisch", "斯瓦希里语": "Swahili", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "E-Mail", + "中国": "China", + "美国": "Vereinigte Staaten", + "加拿大": "Kanada", + "俄罗斯": "Russland", + "英国": "Vereinigtes Königreich", + "德国": "Deutschland", + "意大利": "Italien", + "法国": "Frankreich", + "西班牙": "Spanien", + "南非": "Südafrika", + "沙特阿拉伯": "Saudi-Arabien", + "土耳其": "Türkei", + "日本": "Japan", + "韩国": "Südkorea", + "新加坡": "Singapur", + "马来西亚": "Malaysia", + "泰国": "Thailand", + "越南": "Vietnam", + "印度": "Indien", + "巴基斯坦": "Pakistan", + "菲律宾": "Philippinen", + "印度尼西亚": "Indonesien", + "阿联酋": "Vereinigte Arabische Emirate", + "墨西哥": "Mexiko", + "巴西": "Brasilien", + "阿根廷": "Argentinien", + "澳大利亚": "Australien", + "新西兰": "Neuseeland", + "中国香港": "Hongkong, China", + "中国澳门": "Macau, China", + "中国台湾": "Taiwan, China", + "埃及": "Ägypten", + "希腊": "Griechenland", + "荷兰": "Niederlande", + "比利时": "Belgien", + "匈牙利": "Ungarn", + "罗马尼亚": "Rumänien", + "瑞士": "Schweiz", + "奥地利": "Österreich", + "丹麦": "Dänemark", + "瑞典": "Schweden", + "挪威": "Norwegen", + "波兰": "Polen", + "秘鲁": "Peru", + "智利": "Chile", + "哥伦比亚": "Kolumbien", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portugal", + "卢森堡": "Luxemburg", + "爱尔兰": "Irland", + "冰岛": "Island", + "阿尔巴尼亚": "Albanien", + "马耳他": "Malta", + "塞浦路斯": "Zypern", + "芬兰": "Finnland", + "保加利亚": "Bulgarien", + "立陶宛": "Litauen", + "拉脱维亚": "Lettland", + "爱沙尼亚": "Estland", + "乌克兰": "Ukraine", + "塞尔维亚": "Serbien", + "克罗地亚": "Kroatien", + "斯洛文尼亚": "Slowenien", + "捷克": "Tschechische Republik", + "斯洛伐克": "Slowakei", + "危地马拉": "Guatemala", + "萨尔瓦多": "El Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nicaragua", + "哥斯达黎加": "Costa Rica", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Bolivien", + "厄瓜多尔": "Ecuador", + "巴拉圭": "Paraguay", + "乌拉圭": "Uruguay", + "摩洛哥": "Marokko", + "阿尔及利亚": "Algerien", + "突尼斯": "Tunesien", + "尼日利亚": "Nigeria", + "加纳": "Ghana", + "埃塞俄比亚": "Äthiopien", + "肯尼亚": "Kenia", + "坦桑尼亚": "Tansania", + "乌干达": "Uganda", + "孟加拉国": "Bangladesch", + "以色列": "Israel", + "黎巴嫩": "Libanon", + "约旦": "Jordanien", + "伊拉克": "Irak", + "科威特": "Kuwait", + "巴林": "Bahrain", + "卡塔尔": "Katar", + "阿曼": "Oman", + "阿富汗": "Afghanistan", + "斯里兰卡": "Sri Lanka", + "缅甸": "Myanmar", + "尼泊尔": "Nepal", + "蒙古": "Mongolei", + "柬埔寨": "Kambodscha", + "老挝": "Laos", + "文莱": "Brunei", + "东帝汶": "Osttimor", + "斐济": "Fidschi", + "所罗门群岛": "Salomonen", + "刚果民主共和国": "Demokratische Republik Kongo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Malediven", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaika", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua-Neuguinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/el_gr.dart b/lib/core/translations/language/el_gr.dart index 0c94da52a..f329bd823 100644 --- a/lib/core/translations/language/el_gr.dart +++ b/lib/core/translations/language/el_gr.dart @@ -1,4 +1,5 @@ const Map elGR = { + // 通用 'continue': 'Συνέχεια', 'confirm': 'Επιβεβαίωση', @@ -18,6 +19,11 @@ const Map elGR = { "unknownError": "Άγνωστο σφάλμα", "asrConnectionFailed": "Η σύνδεση με την υπηρεσία αναγνώρισης ομιλίας απέτυχε. Ελέγξτε το δίκτυο ή δοκιμάστε ξανά αργότερα.", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "Συνδέοντας τον κόσμο, πέρα από τον ήχο", @@ -28,7 +34,7 @@ const Map elGR = { "explore": "Εξερεύνηση", "settings": "Ρυθμίσεις", - // 语言 + // 语言列表 "followingSystem": "Ακολουθώντας το σύστημα", "chinese": "Κινέζικα", "english": "Αγγλικά", @@ -72,7 +78,7 @@ const Map elGR = { "arabic": "Αραβικά", "persian": "Φαρασικά", - // 登录页 + // 登录模块 "welcome": "Καλώς ήρθατε", "loginTips": "Συνδεθείτε ή εγγραφείτε με αριθμό τηλεφώνου ή email", "accountNumber": "Αριθμός τηλεφώνου ή email", @@ -100,13 +106,9 @@ const Map elGR = { "resendVerificationCode": "Επαναποστολή κωδικού επαλήθευσης", "login": "Σύνδεση", "usePasswordLogin": "Χρήση σύνδεσης με κωδικό", - - // 隐私政策弹窗 "loginDeclaration": "Δήλωση Voitrans", // Voitrans 声明 "welcomeToThisApp": "Καλώς ήρθατε στο Voitrans, διαβάστε προσεκτικά", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ". Κάνοντας κλικ στο 'Συμφωνώ και εισέρχομαι' δηλώνετε ότι έχετε διαβάσει πλήρως και συμφωνείτε με τις παραπάνω συμφωνίες. Κάνοντας κλικ στο 'Δεν συμφωνώ' θα κλείσει η εφαρμογή.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Δεν συμφωνώ", // 不同意 @@ -166,7 +168,7 @@ const Map elGR = { 'right': 'Δεξιά', 'checkConnectionStatusFailed': 'Αποτυχία ελέγχου κατάστασης σύνδεσης', -// 发现页 + // 发现页 "searchAi": "Αναζήτηση λειτουργιών AI...", "exploreSlogan": "Έξυπνα ακουστικά, απεριόριστες δυνατότητες", "exploreSlogan1": "Έξυπνος σύντροφος, απεριόριστες δυνατότητες", @@ -190,6 +192,7 @@ const Map elGR = { "usageStats": "Στατιστικά χρήσης", "usageStatsInfo": "Δείτε τα στατιστικά χρήσης της εφαρμογής", "scene": "Σενάρια", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Στατιστικά Μετάφρασης", @@ -210,7 +213,6 @@ const Map elGR = { "translationApi": "API Μετάφρασης", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Στατιστικά όγκου δεδομένων", "sourceTextCharacters": "Χαρακτήρες πηγαίου κειμένου", "ttsTextCharacters": "Χαρακτήρες κειμένου TTS", @@ -227,7 +229,6 @@ const Map elGR = { "totalAudioDuration": "Συνολική διάρκεια ήχου", "audioFileSize": "Μέγεθος αρχείου ήχου", "transcriptBytes": "Bytes απομαγνητοφώνησης", - // 通知文案 "loadFailed": "Αποτυχία φόρτωσης", "statsLoadFailedTryLater": "Αποτυχία φόρτωσης στατιστικών. Δοκιμάστε ξανά αργότερα.", @@ -236,93 +237,79 @@ const Map elGR = { "exportFeature": "Λειτουργία εξαγωγής", "exportInDevelopment": "Η εξαγωγή δεδομένων είναι υπό ανάπτυξη", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Διαθέσιμα πακέτα', 'remainingQuota': 'Υπόλοιπο όριο', 'totalQuota': 'Συνολικό όριο', 'remaining': 'Υπόλοιπο', 'featureDescription': 'Περιγραφή λειτουργίας', - // AI 功能卡片 + 'paymentSuccess': 'Πληρωμή επιτυχής', + 'paymentFailed': 'Αποτυχία πληρωμής', + 'gotIt': 'Κατάλαβα', + 'paymentFailedTryAgain': 'Η πληρωμή απέτυχε. Παρακαλώ δοκιμάστε ξανά.', + 'selectPaymentMethod': 'Επιλέξτε τρόπο πληρωμής', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Αποτυχία δημιουργίας παραγγελίας WeChat Pay', + 'alipayOrderCreateFailed': 'Αποτυχία δημιουργίας παραγγελίας Alipay', + 'appleOrderCreateFailed': 'Αποτυχία δημιουργίας παραγγελίας Apple', + 'googleOrderCreateFailed': 'Αποτυχία δημιουργίας παραγγελίας Google', + 'paypalOrderCreateFailed': 'Αποτυχία δημιουργίας παραγγελίας PayPal', + 'paymentException': 'Εξαίρεση πληρωμής', + 'paymentLaunchFailed': 'Αποτυχία εκκίνησης πληρωμής', + 'paymentExceptionWithError': 'Εξαίρεση πληρωμής: @error', + 'paymentProcessingCheckLater': 'Η παραγγελία σας επεξεργάζεται. Παρακαλώ ελέγξτε αργότερα.', + 'paymentResultQueryException': 'Αποτυχία αναζήτησης αποτελέσματος πληρωμής: @error', + 'orderConfirmedQuotaRefreshed': 'Η παραγγελία επιβεβαιώθηκε. Το όριό σας ανανεώθηκε.', + 'paymentCompletedConfirming': 'Η πληρωμή ολοκληρώθηκε. Επιβεβαίωση…', + 'paymentCancelled': 'Η πληρωμή ακυρώθηκε', + 'paypalOpenedCompleteInBrowser': 'Το PayPal άνοιξε. Παρακαλώ ολοκληρώστε την πληρωμή στο πρόγραμμα περιήγησής σας.', + 'paypalOpenFailed': 'Αδυναμία ανοίγματος σελίδας πληρωμής PayPal', + 'paymentTestTitle': 'Δοκιμή Πληρωμής', + 'paymentTestOrderInfo': 'Πληροφορίες Δοκιμαστικής Παραγγελίας', + 'paymentTestProductId': 'Αναγνωριστικό Προϊόντος', + 'paymentTestProductDescription': 'Περιγραφή προϊόντος', + 'paymentTestWechatDescription': 'Δοκιμή πληρωμής WeChat Pay', + 'paymentTestAlipayDescription': 'Δοκιμή πληρωμής Alipay', + 'paymentTestAmount': 'Ποσό', + 'paymentTestSelectAmount': 'Επιλέξτε ποσό δοκιμής', + 'paying': 'Πληρωμή...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Κατάσταση πληρωμής', + 'errorInfoWithMessage': 'Σφάλμα: @message', + 'retest': 'Επανέλεγχος', + 'paymentTestInstructionsTitle': 'Οδηγίες', + 'paymentTestInstructionsContent': '1. Επιλέξτε ένα ποσό δοκιμής (προτεινόμενο: ¥0,01)\n2. Κάντε κλικ στο κουμπί πληρωμής για να ξεκινήσετε\n3. Ολοκληρώστε την πληρωμή στην εφαρμογή πληρωμής\n4. Επιστρέψτε για να ελέγξετε το αποτέλεσμα', + 'startingWechatPayment': 'Εκκίνηση WeChat Pay...', + 'startingAlipayPayment': 'Εκκίνηση Alipay...', + 'wechatPaymentSuccess': 'WeChat Pay επιτυχής!', + 'wechatPaymentFailed': 'Αποτυχία WeChat Pay', + 'wechatPaymentLaunchFailed': 'Αποτυχία εκκίνησης WeChat Pay', + 'cannotLaunchWechatPayment': 'Αδυναμία εκκίνησης WeChat Pay', + 'wechatPaymentException': 'Εξαίρεση WeChat Pay', + 'wechatPaymentTestCompleted': 'Η δοκιμή WeChat Pay ολοκληρώθηκε', + 'alipayPaymentSuccess': 'Alipay επιτυχής!', + 'alipayPaymentFailed': 'Αποτυχία Alipay', + 'alipayPaymentLaunchFailed': 'Αποτυχία εκκίνησης Alipay', + 'cannotLaunchAlipayPayment': 'Αδυναμία εκκίνησης Alipay', + 'alipayPaymentException': 'Εξαίρεση Alipay', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": + 'Insufficient balance, please go to the corresponding recharge page to recharge.', + "recharge": 'Go to Recharge', + "aiMemberExpiredDesc": + 'AI membership expired, please go to the membership recharge page to renew.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Μουσική & Προτάσεις', 'navigationAndRoutes': 'Πλοήγηση & Διαδρομές', 'nearbySearch': 'Αναζήτηση κοντά', 'newsInformation': 'Ειδήσεις', 'communicationAssistant': 'Βοηθός επικοινωνίας', - // 翻译功能卡片 - 'realtimeTranscription': 'Απομαγνητοφώνηση σε πραγματικό χρόνο', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Γλωσσάρι σεναρίων', - 'subtitleDisplay': 'Υπότιτλοι', - // 会议功能卡片 - 'meetingRecording': 'Εγγραφή συνάντησης', - 'transcriptionAndSummary': 'Απομαγνητοφώνηση & Περίληψη', - 'keywordSearch': 'Αναζήτηση λέξεων-κλειδιών', - 'collaborationSharing': 'Συνεργασία & Κοινή χρήση', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': - 'Περιλαμβάνει 100 χρήσεις. Πρόσβαση σε βασικές λειτουργίες AI.', - 'ai_002_desc': - 'Περιλαμβάνει 500 χρήσεις. Πρόσβαση σε βασικές λειτουργίες AI.', - 'ai_003_desc': - 'Περιλαμβάνει 1000 χρήσεις. Πρόσβαση σε βασικές λειτουργίες AI.', - 'meet_001_desc': 'Περιλαμβάνει 100 εγγραφές/απομαγνητοφωνήσεις συναντήσεων.', - 'meet_002_desc': 'Περιλαμβάνει 500 εγγραφές/απομαγνητοφωνήσεις συναντήσεων.', - 'meet_003_desc': 'Περιλαμβάνει 1000 εγγραφές/απομαγνητοφωνήσεις συναντήσεων.', - 'trans_001_desc': 'Περιλαμβάνει 100 μεταφράσεις (φωνή/κείμενο).', - 'trans_002_desc': 'Περιλαμβάνει 500 μεταφράσεις (φωνή/κείμενο).', - 'trans_003_desc': 'Περιλαμβάνει 1000 μεταφράσεις (φωνή/κείμενο).', - -// 商品页通用页脚 - 'appNameProvider': 'Εφαρμογή: VoiTrans · Παρέχεται από: VoiTrans', - 'iapCustomerServiceQQLabel': 'Εξυπηρέτηση πελατών IAP QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Εγγραφή ήχου, απομαγνητοφώνηση, αναζήτηση λέξεων-κλειδιών και αυτόματη περίληψη για ενίσχυση της αποδοτικότητας των συναντήσεων.', - 'meetingHeaderDesc2': - 'Κατάλληλο για επαγγελματικές συναντήσεις, σημειώσεις μαθημάτων και πρακτικά συνεντεύξεων.', - 'meetingAutoRecording': 'Αυτόματη εγγραφή και τμηματοποίηση', - 'meetingSpeakerTagging': 'Σήμανση ομιλητή', - 'meetingLongAudioTranscription': 'Απομαγνητοφώνηση μεγάλου ήχου', - 'meetingKeyPointSummary': 'Εξαγωγή βασικών σημείων', - 'meetingTopicNameSearch': 'Αναζήτηση με θέμα/όνομα', - 'meetingTimelineJump': 'Άλμα στη χρονογραμμή', - 'meetingExportSummary': 'Εξαγωγή πρακτικών', - 'meetingMultiPlatformShare': 'Κοινή χρήση σε πολλές πλατφόρμες', - 'meetingDisclaimer': - 'Χρήση σε ήσυχο περιβάλλον. Η απόδοση εξαρτάται από το μικρόφωνο και το δίκτυο.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Ταυτόχρονη διερμηνεία σε πραγματικό χρόνο και μετάφραση κειμένου με φωνή χαμηλής καθυστέρησης.', - 'transHeaderDesc2': - 'Κατάλληλο για ταξίδια, επιχειρήσεις, ομιλίες και διδασκαλία.', - 'translateZhEn': 'Μετάφραση Κινεζικά-Αγγλικά', - 'lowLatencyVoiceBroadcast': 'Φωνητική μετάδοση χαμηλής καθυστέρησης', - 'multiLangTextTranslation': 'Πολυγλωσσική μετάφραση κειμένου', - 'termOptimizationContextPreserve': - 'Βελτιστοποίηση ορολογίας και διατήρηση πλαισίου', - 'lexiconTourBusinessLife': 'Γλωσσάρια Ταξιδιού/Επιχειρήσεων/Ζωής', - 'personalVocabularyMemory': 'Προσωπική μνήμη λεξιλογίου', - 'conversationSubtitleLargeText': - 'Υπότιτλοι συνομιλίας / Λειτουργία μεγάλου κειμένου', - 'colorHighContrast': 'Υψηλή αντίθεση χρωμάτων', - 'transDisclaimer': - 'Η απόδοση μετάφρασης εξαρτάται από το μικρόφωνο, την καθυστέρηση δικτύου και τον θόρυβο περιβάλλοντος.', - - // AI 商品页描述 'aiHeaderDesc1': 'Μεγαλύτερο όριο συνομιλίας, περισσότερες κλήσεις εργαλείων, εκτεταμένο μήκος πλαισίου.', 'aiHeaderDesc2': @@ -350,7 +337,48 @@ const Map elGR = { 'aiDisclaimer': 'Οι λειτουργίες εξαρτώνται από τα δικαιώματα συσκευής, τη διαθεσιμότητα υπηρεσίας και τις συνθήκες δικτύου.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Απομαγνητοφώνηση σε πραγματικό χρόνο', + 'sceneLexicon': 'Γλωσσάρι σεναρίων', + 'subtitleDisplay': 'Υπότιτλοι', + 'transHeaderDesc1': + 'Ταυτόχρονη διερμηνεία σε πραγματικό χρόνο και μετάφραση κειμένου με φωνή χαμηλής καθυστέρησης.', + 'transHeaderDesc2': + 'Κατάλληλο για ταξίδια, επιχειρήσεις, ομιλίες και διδασκαλία.', + 'translateZhEn': 'Μετάφραση Κινεζικά-Αγγλικά', + 'lowLatencyVoiceBroadcast': 'Φωνητική μετάδοση χαμηλής καθυστέρησης', + 'multiLangTextTranslation': 'Πολυγλωσσική μετάφραση κειμένου', + 'termOptimizationContextPreserve': + 'Βελτιστοποίηση ορολογίας και διατήρηση πλαισίου', + 'lexiconTourBusinessLife': 'Γλωσσάρια Ταξιδιού/Επιχειρήσεων/Ζωής', + 'personalVocabularyMemory': 'Προσωπική μνήμη λεξιλογίου', + 'conversationSubtitleLargeText': + 'Υπότιτλοι συνομιλίας / Λειτουργία μεγάλου κειμένου', + 'colorHighContrast': 'Υψηλή αντίθεση χρωμάτων', + 'transDisclaimer': + 'Η απόδοση μετάφρασης εξαρτάται από το μικρόφωνο, την καθυστέρηση δικτύου και τον θόρυβο περιβάλλοντος.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Εγγραφή συνάντησης', + 'transcriptionAndSummary': 'Απομαγνητοφώνηση & Περίληψη', + 'keywordSearch': 'Αναζήτηση λέξεων-κλειδιών', + 'collaborationSharing': 'Συνεργασία & Κοινή χρήση', + 'meetingHeaderDesc1': + 'Εγγραφή ήχου, απομαγνητοφώνηση, αναζήτηση λέξεων-κλειδιών και αυτόματη περίληψη για ενίσχυση της αποδοτικότητας των συναντήσεων.', + 'meetingHeaderDesc2': + 'Κατάλληλο για επαγγελματικές συναντήσεις, σημειώσεις μαθημάτων και πρακτικά συνεντεύξεων.', + 'meetingAutoRecording': 'Αυτόματη εγγραφή και τμηματοποίηση', + 'meetingSpeakerTagging': 'Σήμανση ομιλητή', + 'meetingLongAudioTranscription': 'Απομαγνητοφώνηση μεγάλου ήχου', + 'meetingKeyPointSummary': 'Εξαγωγή βασικών σημείων', + 'meetingTopicNameSearch': 'Αναζήτηση με θέμα/όνομα', + 'meetingTimelineJump': 'Άλμα στη χρονογραμμή', + 'meetingExportSummary': 'Εξαγωγή πρακτικών', + 'meetingMultiPlatformShare': 'Κοινή χρήση σε πολλές πλατφόρμες', + 'meetingDisclaimer': + 'Χρήση σε ήσυχο περιβάλλον. Η απόδοση εξαρτάται από το μικρόφωνο και το δίκτυο.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Επισκόπηση προνομίων', 'higherQuota': 'Υψηλότερο όριο χρήσης', 'lowerUnitPrice': 'Χαμηλότερη τιμή μονάδας', @@ -366,7 +394,35 @@ const Map elGR = { 'vipDisclaimer': 'Τα πραγματικά προνόμια εξαρτώνται από τις λεπτομέρειες του πακέτου και μπορεί να αλλάξουν με τις εκδόσεις.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Translation Basic 100', + 'trans_002_name': 'Translation Basic 500', + 'trans_003_name': 'Translation Basic 1000', + 'ai_001_desc': + 'Περιλαμβάνει 100 χρήσεις. Πρόσβαση σε βασικές λειτουργίες AI.', + 'ai_002_desc': + 'Περιλαμβάνει 500 χρήσεις. Πρόσβαση σε βασικές λειτουργίες AI.', + 'ai_003_desc': + 'Περιλαμβάνει 1000 χρήσεις. Πρόσβαση σε βασικές λειτουργίες AI.', + 'meet_001_desc': 'Περιλαμβάνει 100 εγγραφές/απομαγνητοφωνήσεις συναντήσεων.', + 'meet_002_desc': 'Περιλαμβάνει 500 εγγραφές/απομαγνητοφωνήσεις συναντήσεων.', + 'meet_003_desc': 'Περιλαμβάνει 1000 εγγραφές/απομαγνητοφωνήσεις συναντήσεων.', + 'trans_001_desc': 'Περιλαμβάνει 100 μεταφράσεις (φωνή/κείμενο).', + 'trans_002_desc': 'Περιλαμβάνει 500 μεταφράσεις (φωνή/κείμενο).', + 'trans_003_desc': 'Περιλαμβάνει 1000 μεταφράσεις (φωνή/κείμενο).', + + // 商品模块 - 页脚 + 'appNameProvider': 'Εφαρμογή: VoiTrans · Παρέχεται από: VoiTrans', + 'iapCustomerServiceQQLabel': 'Εξυπηρέτηση πελατών IAP QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "Παράλειψη", 'next': 'Επόμενο', 'sayLilyHint': 'Πείτε "Lily Lily" στο μικρόφωνο', @@ -378,7 +434,6 @@ const Map elGR = { 'guideAwakenSuccess': 'Τέλεια! Η Lily είναι ξύπνια - ζητήστε της βοήθεια.', 'confirmInput': 'Επιβεβαίωση εισόδου', 'guideClickSendPrefix': 'Πατήστε αποστολή, ', - // AI 引导步骤 'guideWeatherStart': 'Πείτε στη Lily: "Τι καιρό κάνει σήμερα;"', 'guideWeatherInput': 'Τι καιρό κάνει σήμερα;', 'guideWeatherSend': 'Η Lily θα αναφέρει τον καιρό σε πραγματικό χρόνο', @@ -407,7 +462,7 @@ const Map elGR = { 'guideSmsSend': 'Η Lily θα στείλει το μήνυμα', 'guideSmsEnd': 'Το μήνυμα στάλθηκε - ο φωνητικός έλεγχος είναι βολικός', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Έναρξη συνάντησης", 'edit': 'Επεξεργασία', 'delete': 'Διαγραφή', @@ -419,8 +474,6 @@ const Map elGR = { 'recordingDetails': 'Λεπτομέρειες εγγραφής', 'aiSummary': 'Περίληψη AI', 'meetingTranscript': 'Απομαγνητοφώνηση συνάντησης', - - // Meeting模块 - 导航和基础功能 'files': 'Αρχεία', 'mine': 'Δικά μου', 'connect': 'Σύνδεση', @@ -472,7 +525,6 @@ const Map elGR = { 'summarizing': 'Δημιουργία περίληψης...', 'analyzing': 'Ανάλυση...', 'summaryComplete': 'Περίληψη ολοκληρώθηκε', - //'generating': '正在生成...', 'generate': 'Δημιουργία', 'overview': 'Επισκόπηση', 'transcription': 'Απομαγνητοφώνηση', @@ -481,6 +533,98 @@ const Map elGR = { 'editSpeaker': 'Επεξεργασία', 'nameSpeaker': 'Ονομασία ομιλητή', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Επανασύνοψη', + 'dateAndTime': 'Ημερομηνία & Ώρα', + 'location': 'Τοποθεσία', + 'attendees': 'Παρευρισκόμενοι', + 'inputLocation': 'Εισαγωγή τοποθεσίας', + 'inputAttendees': 'Εισαγωγή παρευρισκομένων', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Επιλογή προτύπου περίληψης', + 'useThisTemplate': 'Χρήση αυτού του προτύπου', + 'lastUsed': 'Τελευταία χρήση', + 'create': 'Δημιουργία', + 'templateDetails': 'Λεπτομέρειες Προτύπου', + 'tag': 'Ετικέτα', + 'description': 'Περιγραφή', + 'template': 'Πρότυπο', + 'deleteTemplate': 'Διαγραφή Προτύπου', + 'deleteTemplateConfirm': 'Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το πρότυπο;', + 'editTemplate': 'Επεξεργασία Προτύπου', + 'createTemplate': 'Δημιουργία Προτύπου', + 'name': 'Όνομα', + 'templateContentHint': 'Παρακαλώ εισάγετε περιεχόμενο προτύπου! Συμβουλή: Κάντε κλικ στο κουμπί AI παραπάνω για γρήγορη δημιουργία περιεχομένου προτύπου βάσει του ονόματος και της περιγραφής που εισάγατε', + 'inputNameHint': 'Παρακαλώ εισάγετε όνομα', + 'inputDescHint': 'Παρακαλώ εισάγετε περιγραφή', + 'custom': 'Προσαρμοσμένο', + 'pleaseEnter': 'Παρακαλώ εισάγετε', + 'viewAll': 'Προβολή όλων', + 'recordingLanguage': 'Γλώσσα εγγραφής', + 'chineseSimplified': 'Κινέζικα (Απλοποιημένα)', + 'meetingGenerateNow': 'Δημιουργία τώρα', + 'keyEventsAnalyzed': 'Αναλύθηκαν {count} βασικά γεγονότα.', + 'aiAnalysisDesc': + 'Η ανάλυση AI εντοπίζει βασικά γεγονότα στις εγγραφές, επιτρέποντάς σας να επιλέξετε σημαντικά γεγονότα για δημιουργία AI.', + + // Meeting模块 - 文件操作 + 'importing': 'Εισαγωγή...', + 'batchImporting': 'Μαζική εισαγωγή...', + 'importingLocalRecordings': 'Εισαγωγή τοπικών εγγραφών...', + 'importFailed': 'Αποτυχία εισαγωγής αρχείου: {filePath}, σφάλμα: {error}', + 'importSuccess': 'Επιτυχής εισαγωγή {count} τοπικών εγγραφών', + 'importError': 'Αποτυχία εισαγωγής: {error}', + 'pleaseSelectAudioFile': 'Παρακαλώ επιλέξτε αρχείο ήχου', + 'shareAudio': 'Κοινοποίηση ήχου συνάντησης', + 'shareComplete': 'Η κοινοποίηση ολοκληρώθηκε!', + 'shareFailed': 'Αποτυχία κοινοποίησης: {error}', + 'fileProcessingFailed': + 'Αποτυχία επεξεργασίας αρχείου: {filePath}, σφάλμα: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Αποθήκευση Νοητικού Χάρτη', + 'shareMindMap': 'Κοινοποίηση χάρτη μυαλού', + 'shareSuccess': 'Επιτυχής κοινοποίηση', + + // Meeting模块 - AI问答 + 'askAI': 'Ρωτήστε το AI ...', + 'askAIPrompt': 'Πώς μπορώ να σας βοηθήσω σήμερα;', + 'continueAsk': 'Συνεχίστε να ρωτάτε', + 'todoList': 'Λίστα εργασιών', + 'extractConclusion': 'Εξαγωγή συμπεράσματος', + 'generateKeyIndicators': 'Δημιουργία βασικών δεικτών', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Κοινοποίηση συνδέσμου', + 'copyTranscript': 'Αντιγραφή απομαγνητοφώνησης', + 'copySummary': 'Αντιγραφή περίληψης', + 'exportAudio': 'Εξαγωγή ήχου', + 'exportTranscript': 'Εξαγωγή απομαγνητοφώνησης', + 'shareMeetingAudio': 'Κοινοποίηση ήχου συνάντησης', + 'exportSummary': 'Εξαγωγή περίληψης', + 'exportAs': 'Εξαγωγή ως', + 'exportingPDF': 'Εξαγωγή PDF...', + 'export': 'Εξαγωγή', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Εφαρμογή σε όλες τις παραγράφους αυτού του ομιλητή', + 'summaryWillBeUpdatedAutomatically': + 'Η σύνοψη θα ενημερώνεται αυτόματα βάσει του προτύπου', + 'nameCurrentSpeaker': 'Ονοματοδοσία τρέχοντος ομιλητή', + 'recentlyUsedNames': 'Πρόσφατα χρησιμοποιημένα ονόματα', + 'applyToCurrentParagraph': 'Εφαρμογή στην τρέχουσα παράγραφο', + 'totalTime': 'Σύνολο', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Οι ομιλητές στη σύνοψη θα ενημερώνονται αυτόματα', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Συγχρονισμός στο cloud', + 'syncToCloudTip': + 'Συγχρονίστε αυτόματα τις εγγραφές σας στο cloud, μπορείτε να αναπαράγετε, να διαχειριστείτε και να μοιραστείτε εγγραφές μέσω οποιασδήποτε εφαρμογής VOITRANS ή VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Συγχρονισμός VOITRANS APP', + 'transcriptionRecord': 'Αρχείο απομαγνητοφώνησης', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Αρχεία απομαγνητοφώνησης', 'templateCommunity': 'Κοινότητα προτύπων', @@ -500,7 +644,7 @@ const Map elGR = { 'Συνδέστε συσκευή Voitrans για ενεργοποίηση Starter μέλους', 'unlockNow': 'Ξεκλείδωμα τώρα', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Σύγκριση', 'detailedInfo': 'Λεπτομερείς πληροφορίες', 'monthlyTranscriptionTime': 'Μηνιαίος χρόνος απομαγνητοφώνησης', @@ -536,8 +680,6 @@ const Map elGR = { 'Εύκολη εισαγωγή αρχείων ήχου από τοπικές ή τρίτες εφαρμογές, όπως φωνητικά σημειώματα, Google Drive, κ.λπ.', 'multipleExportFormatsDesc': 'Εξάγετε τις ηχογραφήσεις σας, το κείμενο απομαγνητοφώνησης και τις περιλήψεις σε διάφορες μορφές (TXT, PDF, JPEG) για να καλύψετε τις ανάγκες σας.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Αναβάθμιση συνδρομής', 'yearlySubscription': 'Ετήσια συνδρομή', 'monthlySubscription': 'Μηνιαία συνδρομή', @@ -567,106 +709,26 @@ const Map elGR = { 'Ενεργοποιείται αμέσως μετά την αγορά, ισχύει για 2 χρόνια μετά την ενεργοποίηση.', 'purchase': 'Αγορά', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Επιλογή προτύπου περίληψης', - 'useThisTemplate': 'Χρήση αυτού του προτύπου', - 'lastUsed': 'Τελευταία χρήση', - 'viewAll': 'Προβολή όλων', - 'recordingLanguage': 'Γλώσσα εγγραφής', - 'chineseSimplified': 'Κινέζικα (Απλοποιημένα)', - 'meetingGenerateNow': 'Δημιουργία τώρα', - 'keyEventsAnalyzed': 'Αναλύθηκαν {count} βασικά γεγονότα.', - 'aiAnalysisDesc': - 'Η ανάλυση AI εντοπίζει βασικά γεγονότα στις εγγραφές, επιτρέποντάς σας να επιλέξετε σημαντικά γεγονότα για δημιουργία AI.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Εισαγωγή...', - 'batchImporting': 'Μαζική εισαγωγή...', - 'importingLocalRecordings': 'Εισαγωγή τοπικών εγγραφών...', - 'importFailed': 'Αποτυχία εισαγωγής αρχείου: {filePath}, σφάλμα: {error}', - 'importSuccess': 'Επιτυχής εισαγωγή {count} τοπικών εγγραφών', - 'importError': 'Αποτυχία εισαγωγής: {error}', - 'pleaseSelectAudioFile': 'Παρακαλώ επιλέξτε αρχείο ήχου', - 'shareAudio': 'Κοινοποίηση ήχου συνάντησης', - 'shareComplete': 'Η κοινοποίηση ολοκληρώθηκε!', - 'shareFailed': 'Αποτυχία κοινοποίησης: {error}', - 'fileProcessingFailed': - 'Αποτυχία επεξεργασίας αρχείου: {filePath}, σφάλμα: {error}', + // Meeting模块 - 录音语言 + 'recordLanguage': 'Γλώσσα εγγραφής', + 'cantonese': 'Καντονέζικα', + 'sichuan': 'Διάλεκτος Σετσουάν', + 'shanghai': 'Διάλεκτος Σαγκάης', - // 翻译模块 - Meeting相关 + // Meeting模块 - 错误提示 'meetingUnknownLanguage': 'Άγνωστη γλώσσα', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Αποθήκευση', - 'meetingStoragePermissionExplanation': - 'Χρειαζόμαστε πρόσβαση στα δικαιώματα αποθήκευσης για να μπορείτε να επιλέξετε και να ανεβάσετε αρχεία ήχου.', - 'meetingStoragePermissionPermanentDenial': - 'Εντοπίστηκε ότι έχετε αρνηθεί μόνιμα το δικαίωμα αποθήκευσης. Για να συνεχίσετε να χρησιμοποιείτε αυτή τη λειτουργία, παρακαλώ μεταβείτε στις ρυθμίσεις εφαρμογής για να ενεργοποιήσετε χειροκίνητα το δικαίωμα αποθήκευσης.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Κοινοποίηση χάρτη μυαλού', - 'shareSuccess': 'Επιτυχής κοινοποίηση', - - // Meeting模块 - AI相关 - 'askAI': 'Ρωτήστε το AI ...', - 'askAIPrompt': 'Πώς μπορώ να σας βοηθήσω σήμερα;', - 'continueAsk': 'Συνεχίστε να ρωτάτε', - 'todoList': 'Λίστα εργασιών', - 'extractConclusion': 'Εξαγωγή συμπεράσματος', - 'generateKeyIndicators': 'Δημιουργία βασικών δεικτών', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Επανασύνοψη', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Γλώσσα εγγραφής', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Καντονέζικα', - 'sichuan': 'Διάλεκτος Σετσουάν', - 'shanghai': 'Διάλεκτος Σαγκάης', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Κοινοποίηση συνδέσμου', - 'copyTranscript': 'Αντιγραφή απομαγνητοφώνησης', - 'copySummary': 'Αντιγραφή περίληψης', - 'exportAudio': 'Εξαγωγή ήχου', - 'exportTranscript': 'Εξαγωγή απομαγνητοφώνησης', - 'shareMeetingAudio': 'Κοινοποίηση ήχου συνάντησης', - 'exportSummary': 'Εξαγωγή περίληψης', - 'exportAs': 'Εξαγωγή ως', - 'exportingPDF': 'Εξαγωγή PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Εφαρμογή σε όλες τις παραγράφους αυτού του ομιλητή', - 'summaryWillBeUpdatedAutomatically': - 'Η σύνοψη θα ενημερώνεται αυτόματα βάσει του προτύπου', - 'nameCurrentSpeaker': 'Ονοματοδοσία τρέχοντος ομιλητή', - 'recentlyUsedNames': 'Πρόσφατα χρησιμοποιημένα ονόματα', - 'applyToCurrentParagraph': 'Εφαρμογή στην τρέχουσα παράγραφο', - 'totalTime': 'Σύνολο', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Οι ομιλητές στη σύνοψη θα ενημερώνονται αυτόματα', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Συγχρονισμός στο cloud', - 'syncToCloudTip': - 'Συγχρονίστε αυτόματα τις εγγραφές σας στο cloud, μπορείτε να αναπαράγετε, να διαχειριστείτε και να μοιραστείτε εγγραφές μέσω οποιασδήποτε εφαρμογής VOITRANS ή VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Συγχρονισμός VOITRANS APP', - 'transcriptionRecord': 'Αρχείο απομαγνητοφώνησης', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Ημερομηνία & Ώρα', - 'location': 'Τοποθεσία', - 'attendees': 'Παρευρισκόμενοι', - 'inputLocation': 'Εισαγωγή τοποθεσίας', - 'inputAttendees': 'Εισαγωγή παρευρισκομένων', + 'analysisFailed': 'Η ανάλυση απέτυχε, παρακαλώ δοκιμάστε ξανά αργότερα', + 'transcriptionFailed': 'Η μεταγραφή απέτυχε, παρακαλώ δοκιμάστε ξανά αργότερα', + 'summaryFailed': 'Η σύνοψη απέτυχε, παρακαλώ δοκιμάστε ξανά αργότερα', + 'summaryFailedShort': 'Αποτυχία σύνοψης', + 'transcriptionFailedShort': 'Αποτυχία μεταγραφής', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Ο αναπαραγωγέας ήχου δεν είναι έτοιμος, παρακαλώ περιμένετε', + 'playFailed': 'Αποτυχία αναπαραγωγής', + 'audioFileNotFound': 'Το αρχείο ήχου δεν βρέθηκε', + 'fetchingAudio': 'Λήψη ήχου από το cloud...', + 'playerLoadFailed': 'Αποτυχία φόρτωσης αναπαραγωγέα ήχου', // 设置页 "systemSettings": "Ρυθμίσεις συστήματος", @@ -719,26 +781,15 @@ const Map elGR = { "bleHeadsetFirmwareUpgrade": "Αναβάθμιση firmware ακουστικών BLE", "deviceManagement": "Διαχείριση συσκευών", "manageConnectedDevices": "Διαχείριση συνδεδεμένων συσκευών Bluetooth", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Αυτή τη στιγμή η τελευταία έκδοση {version}', 'checkUpdateFailed': 'Αποτυχία ελέγχου ενημερώσεων', 'networkErrorRetry': 'Σφάλμα δικτύου, δοκιμάστε ξανά αργότερα', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Φωνητική συνομιλία σε πραγματικό χρόνο", "realtimeVoiceChatInfo": "Δοκιμάστε τη λειτουργία έξυπνης φωνητικής αλληλεπίδρασης (προεπισκόπηση λειτουργίας)", "loading": "Φόρτωση...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -754,8 +805,7 @@ const Map elGR = { "Are you sure you want to unbind device \"{deviceName}\"?", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Εκκαθάριση ιστορικού συνομιλίας", "online": "Σε σύνδεση", @@ -785,8 +835,9 @@ const Map elGR = { "swipeUpForMore": "Σύρετε προς τα πάνω για περισσότερα", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': 'Όταν είναι ενεργοποιημένο: Η AI δεν θα διακοπεί από τη φωνή σας κατά τη διάρκεια της ομιλίας και μπορεί να χειριστεί μόνο έναν γύρο συνομιλίας τη φορά. Για να ξεκινήσετε νέο γύρο, απλά πείτε τη λέξη αφύπνισης.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -798,7 +849,7 @@ const Map elGR = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Γεια σας! Είμαι ο **Lily**, μπορώ να σας βοηθήσω με:\n\n' '• Απάντηση σε ερωτήσεις και παροχή πληροφοριών\n\n' '• Μετάφραση φωνής σε πραγματικό χρόνο\n\n' @@ -819,11 +870,11 @@ const Map elGR = { 'startPhoneCallMode': 'Έναρξη λειτουργίας τηλεφωνικής κλήσης, έναρξη φωνητικής εισόδου', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Εισάγετε το μήνυμά σας εδώ...', // 全屏编辑器输入提示 'characterCount': '{count} χαρακτήρες', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Αντιγραφή', 'copySuccess': 'Επιτυχής αντιγραφή', 'report': 'Αναφορά', @@ -831,7 +882,6 @@ const Map elGR = { 'submitFailed': 'Αποτυχία υποβολής', 'reportSubmitted': 'Η αναφορά υποβλήθηκε, θα την επεξεργαστούμε το συντομότερο δυνατό', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Επιβλαβές/μη ασφαλές', 'pornographicVulgar': 'Πορνογραφικό/χυδαίο', 'misleadingAttack': 'Παραπλανητική επίθεση', @@ -841,17 +891,14 @@ const Map elGR = { 'other': 'Άλλο', 'reportDescriptionHint': 'Θέλουμε να γνωρίζουμε τον λόγο της αναφοράς σας, μπορείτε να περιγράψετε το πρόβλημα που αντιμετωπίσατε.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Δημιουργήθηκε από AI', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'Ορίστε μερικές προτεινόμενες μουσικές:', 'playList': 'Λίστα αναπαραγωγής', 'moreMusic': 'Περισσότερη μουσική', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'χιλιόμετρα', // 公里单位 'meters': 'μέτρα', // 米单位 'hours': 'ώρες', // 小时单位 @@ -866,7 +913,7 @@ const Map elGR = { "bicycling": "Ποδηλασία", "tsransit": "Δημόσια συγκοινωνία", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Ερώτημα καιρού:', 'highest': 'Υψηλότερη', 'lowest': 'Χαμηλότερη', @@ -896,18 +943,8 @@ const Map elGR = { "friday": "Παρασκευή", "saturday": "Σάββατο", "sunday": "Κυριακή", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Ηλιόλουστος", "partlyCloudy": "Μερικώς συννεφιασμένος", "partlySunny": "Μερικώς ηλιόλουστος", @@ -928,7 +965,130 @@ const Map elGR = { "haze": "Καταχνιά", "strongWind": "Δυνατός άνεμος", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "Ιστορικό μεταφράσεων", + "enableRecording": "Ενεργοποίηση εγγραφής", + "viewAudioFiles": "Προβολή αρχείων ήχου", + "headsetUser": "Χρήστης ακουστικών", + "phoneUser": "Χρήστης τηλεφώνου", + "selectSourceLanguage": "Επιλέξτε γλώσσα προέλευσης", + "selectTargetLanguage": "Επιλέξτε γλώσσα προορισμού", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": + "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Δεν υπάρχει ιστορικό μεταφράσεων", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "Εκκαθάριση ιστορικού", + "clearHistoryConfirm": + "Είστε βέβαιοι ότι θέλετε να εκκαθαρίσετε όλο το ιστορικό μεταφράσεων; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.", + "unknownLanguage": "Άγνωστη γλώσσα", + "deleteSessionRecord": "Διαγραφή εγγραφής συνεδρίας", + "deleteSessionConfirm": + "Είστε βέβαιοι ότι θέλετε να διαγράψετε όλες τις εγγραφές μεταφράσεων για αυτή τη συνεδρία; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": + "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": + "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": + "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": + "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Μετάφραση αρχείων ήχου", + "noAudioFiles": "Δεν υπάρχουν αρχεία ήχου", + "calculating": "Υπολογισμός...", + "playing": "Αναπαραγωγή...", + "paused": "Σε παύση", + "clickToPlay": "Κάντε κλικ για αναπαραγωγή", + "rename": "Μετονομασία", + "smartTranscription": "Έξυπνη μεταγραφή", + "renameAudioFile": "Μετονομασία αρχείου ήχου", + "enterNewFileName": "Εισάγετε νέο όνομα αρχείου", + + // 翻译模块 - 翻译详情 + "originalRecord": "Αρχική εγγραφή", + "recordSummary": "Περίληψη εγγραφής", + "clickToGenerateSummary": + "Κάντε κλικ στο κουμπί παρακάτω για να δημιουργήσετε περίληψη συνεδρίας", + "summaryContent": "Περιεχόμενο περίληψης", + "copied": "Αντιγράφηκε", + "summaryCopiledToClipboard": "Η περίληψη αντιγράφηκε στο πρόχειρο", + "extractSummary": "Εξαγωγή περίληψης", + "summaryGenerated": "Η περίληψη δημιουργήθηκε", + "generating": "Δημιουργία...", + "regenerate": "Αναδημιουργία", + "summaryTimeoutMessage": + "Το αίτημα δημιουργίας περίληψης έληξε, πιθανώς λόγω προβλήματος δικτύου ή υπερφόρτωσης διακομιστή.", + "deleteTranslationRecord": "Διαγραφή εγγραφής μετάφρασης", + "deleteTranslationConfirm": + "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτή την εγγραφή μετάφρασης; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.", + "originalText": "Αρχικό κείμενο", + "translatedText": "Μεταφρασμένο κείμενο", + "sessionSummary": "Περίληψη συνεδρίας", + "cannotShare": "Δεν είναι δυνατή η κοινοποίηση", + "generateSummaryFirst": "Δημιουργήστε πρώτα περίληψη", + "translationSessionRecord": "Εγγραφή συνεδρίας μετάφρασης", + + // 个人资料模块 "editProfile": "Επεξεργασία προσωπικών στοιχείων", "avatar": "Avatar", "nickname": "Ψευδώνυμο", @@ -945,8 +1105,6 @@ const Map elGR = { 'Είστε βέβαιοι ότι θέλετε να διαγράψετε μόνιμα τον λογαριασμό σας; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'Αποτυχία σύνδεσης δικτύου, ελέγξτε τις ρυθμίσεις δικτύου και δοκιμάστε ξανά', 'serverTemporarilyUnavailable': @@ -963,10 +1121,6 @@ const Map elGR = { 'Αποτυχία σύνδεσης δικτύου, ελέγξτε τις ρυθμίσεις δικτύου', 'serverInternalErrorRetryLater': 'Εσωτερικό σφάλμα διακομιστή, δοκιμάστε ξανά αργότερα', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Αποτυχία συμπίεσης εικόνας', 'avatarUpdateFailed': 'Αποτυχία ενημέρωσης avatar', 'usernameCannotBeEmpty': 'Το όνομα χρήστη δεν μπορεί να είναι κενό', @@ -977,8 +1131,6 @@ const Map elGR = { 'logoutFailedRetry': 'Αποτυχία αποσύνδεσης, δοκιμάστε ξανά', 'accountPermanentlyDeleted': 'Ο λογαριασμός διαγράφηκε μόνιμα', 'deleteAccountFailedRetry': 'Αποτυχία διαγραφής λογαριασμού, δοκιμάστε ξανά', - - // 账号服务相关 'clearUserDataFailed': 'Αποτυχία εκκαθάρισης δεδομένων χρήστη', // 清理用户数据失败 'deleteUserDataFailed': 'Αποτυχία διαγραφής δεδομένων χρήστη', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'Επιτυχής αποσύνδεση τρίτου μέρους', // 第三方登录退出成功 @@ -992,7 +1144,12 @@ const Map elGR = { 'accountServiceInitialized': 'Το AccountService αρχικοποιήθηκε', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Αποθήκευση', + 'meetingStoragePermissionExplanation': + 'Χρειαζόμαστε πρόσβαση στα δικαιώματα αποθήκευσης για να μπορείτε να επιλέξετε και να ανεβάσετε αρχεία ήχου.', + 'meetingStoragePermissionPermanentDenial': + 'Εντοπίστηκε ότι έχετε αρνηθεί μόνιμα το δικαίωμα αποθήκευσης. Για να συνεχίσετε να χρησιμοποιείτε αυτή τη λειτουργία, παρακαλώ μεταβείτε στις ρυθμίσεις εφαρμογής για να ενεργοποιήσετε χειροκίνητα το δικαίωμα αποθήκευσης.', 'getPermissionStatusFailed': 'Αποτυχία λήψης κατάστασης δικαιωμάτων', 'communicationPermissions': 'Δικαιώματα επικοινωνίας', 'bluetoothPermissions': 'Bluetooth Permissions', @@ -1005,7 +1162,6 @@ const Map elGR = { 'phone': 'Τηλέφωνο', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'Εγγραφή ημερολογίου', @@ -1064,8 +1220,6 @@ const Map elGR = { 'permanentDenialText': 'Έχετε αρνηθεί μόνιμα το δικαίωμα {permission}, μεταβείτε στις ρυθμίσεις εφαρμογής για να το ενεργοποιήσετε', 'goToSettings': 'Μετάβαση στις ρυθμίσεις', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': @@ -1090,7 +1244,6 @@ const Map elGR = { 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', @@ -1100,8 +1253,6 @@ const Map elGR = { 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', 'storagePermissionPermanentDenial': 'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', - - //permission_util.dart 'permissionUtilNeed': 'Need ', 'permissionUtilPermission': ' Permission', 'permissionUtilRestricted': ' Permission Restricted', @@ -1109,7 +1260,20 @@ const Map elGR = { 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Πλοήγηση σε εξέλιξη', + 'native.notification.navigation.keepRunning': 'Πλοήγηση σε εξέλιξη, διατηρήστε την εφαρμογή ανοιχτή', + 'native.notification.bleAgent.running': 'Ο φωνητικός βοηθός εκτελείται', + 'native.notification.audioRecording.recording': 'Εγγραφή ήχου, πατήστε για επιστροφή στην εφαρμογή', + 'native.notification.music.waiting': 'Αναμονή αναπαραγωγής', + 'native.notification.music.previous': 'Προηγούμενο', + 'native.notification.music.next': 'Επόμενο', + 'native.notification.music.play': 'Αναπαραγωγή', + 'native.notification.music.pause': 'Παύση', + 'native.notification.qqMusic.playing': 'Αναπαραγωγή μουσικής', + + // 版本更新 'newVersionFound': 'Βρέθηκε νέα έκδοση', // 版本更新对话框标题 'remindLater': 'Υπενθύμιση αργότερα', // 稍后提醒按钮 'updateNow': 'Ενημέρωση τώρα', // 立即更新按钮 @@ -1120,253 +1284,7 @@ const Map elGR = { 'updateErrorRetry': 'Παρουσιάστηκε σφάλμα κατά την ενημέρωση, δοκιμάστε ξανά αργότερα', // 更新错误重试提示 - //国家列表 - "邮箱": "Email", - "中国": "Κίνα", - "美国": "ΗΠΑ", - "加拿大": "Καναδάς", - "俄罗斯": "Ρωσία", - "英国": "Ηνωμένο Βασίλειο", - "德国": "Γερμανία", - "意大利": "Ιταλία", - "法国": "Γαλλία", - "西班牙": "Ισπανία", - "南非": "Νότια Αφρική", - "沙特阿拉伯": "Σαουδική Αραβία", - "土耳其": "Τουρκία", - "日本": "Ιαπωνία", - "韩国": "Νότια Κορέα", - "新加坡": "Σιγκαπούρη", - "马来西亚": "Μαλαισία", - "泰国": "Ταϊλάνδη", - "越南": "Βιετνάμ", - "印度": "Ινδία", - "巴基斯坦": "Πακιστάν", - "菲律宾": "Φιλιππίνες", - "印度尼西亚": "Ινδονησία", - "阿联酋": "ΗΑΕ", - "墨西哥": "Μεξικό", - "巴西": "Βραζιλία", - "阿根廷": "Αργεντινή", - "澳大利亚": "Αυστραλία", - "新西兰": "Νέα Ζηλανδία", - "中国香港": "Χονγκ Κονγκ", - "中国澳门": "Μακάο", - "中国台湾": "Ταϊβάν", - "埃及": "Αίγυπτος", - "希腊": "Ελλάδα", - "荷兰": "Ολλανδία", - "比利时": "Βέλγιο", - "匈牙利": "Ουγγαρία", - "罗马尼亚": "Ρουμανία", - "瑞士": "Ελβετία", - "奥地利": "Αυστρία", - "丹麦": "Δανία", - "瑞典": "Σουηδία", - "挪威": "Νορβηγία", - "波兰": "Πολωνία", - "秘鲁": "Περού", - "智利": "Χιλή", - "哥伦比亚": "Κολομβία", - "委内瑞拉": "Βενεζουέλα", - "葡萄牙": "Πορτογαλία", - "卢森堡": "Λουξεμβούργο", - "爱尔兰": "Ιρλανδία", - "冰岛": "Ισλανδία", - "阿尔巴尼亚": "Αλβανία", - "马耳他": "Μάλτα", - "塞浦路斯": "Κύπρος", - "芬兰": "Φινλανδία", - "保加利亚": "Βουλγαρία", - "立陶宛": "Λιθουανία", - "拉脱维亚": "Λετονία", - "爱沙尼亚": "Εσθονία", - "乌克兰": "Ουκρανία", - "塞尔维亚": "Σερβία", - "克罗地亚": "Κροατία", - "斯洛文尼亚": "Σλοβενία", - "捷克": "Τσεχία", - "斯洛伐克": "Σλοβακία", - "危地马拉": "Γουατεμάλα", - "萨尔瓦多": "Ελ Σαλβαδόρ", - "洪都拉斯": "Ονδούρα", - "尼加拉瓜": "Νικαράγουα", - "哥斯达黎加": "Κόστα Ρίκα", - "巴拿马": "Παναμάς", - "海地": "Αϊτή", - "玻利维亚": "Βολιβία", - "厄瓜多尔": "Ισημερινός", - "巴拉圭": "Παραγουάη", - "乌拉圭": "Ουρουγουάη", - "摩洛哥": "Μαρόκο", - "阿尔及利亚": "Αλγερία", - "突尼斯": "Τυνησία", - "尼日利亚": "Νιγηρία", - "加纳": "Γκάνα", - "埃塞俄比亚": "Αιθιοπία", - "肯尼亚": "Κένυα", - "坦桑尼亚": "Τανζανία", - "乌干达": "Ουγκάντα", - "孟加拉国": "Μπανγκλαντές", - "以色列": "Ισραήλ", - "黎巴嫩": "Λίβανος", - "约旦": "Ιορδανία", - "伊拉克": "Ιράκ", - "科威特": "Κουβέιτ", - "巴林": "Μπαχρέιν", - "卡塔尔": "Κατάρ", - "阿曼": "Ομάν", - "阿富汗": "Αφγανιστάν", - "斯里兰卡": "Σρι Λάνκα", - "缅甸": "Μιανμάρ", - "尼泊尔": "Νεπάλ", - "蒙古": "Μογγολία", - "柬埔寨": "Καμπότζη", - "老挝": "Λάος", - "文莱": "Μπρουνέι", - "东帝汶": "Ανατολικό Τιμόρ", - "斐济": "Φίτζι", - "所罗门群岛": "Νησιά Σολομώντα", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Ιστορικό μεταφράσεων", - "enableRecording": "Ενεργοποίηση εγγραφής", - "viewAudioFiles": "Προβολή αρχείων ήχου", - "headsetUser": "Χρήστης ακουστικών", - "phoneUser": "Χρήστης τηλεφώνου", - "selectSourceLanguage": "Επιλέξτε γλώσσα προέλευσης", - "selectTargetLanguage": "Επιλέξτε γλώσσα προορισμού", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Δεν υπάρχει ιστορικό μεταφράσεων", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Εκκαθάριση ιστορικού", - "clearHistoryConfirm": - "Είστε βέβαιοι ότι θέλετε να εκκαθαρίσετε όλο το ιστορικό μεταφράσεων; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.", - "unknownLanguage": "Άγνωστη γλώσσα", - "deleteSessionRecord": "Διαγραφή εγγραφής συνεδρίας", - "deleteSessionConfirm": - "Είστε βέβαιοι ότι θέλετε να διαγράψετε όλες τις εγγραφές μεταφράσεων για αυτή τη συνεδρία; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Μετάφραση αρχείων ήχου", - "noAudioFiles": "Δεν υπάρχουν αρχεία ήχου", - "calculating": "Υπολογισμός...", - "playing": "Αναπαραγωγή...", - "paused": "Σε παύση", - "clickToPlay": "Κάντε κλικ για αναπαραγωγή", - "rename": "Μετονομασία", - "smartTranscription": "Έξυπνη μεταγραφή", - "renameAudioFile": "Μετονομασία αρχείου ήχου", - "enterNewFileName": "Εισάγετε νέο όνομα αρχείου", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Αρχική εγγραφή", - "recordSummary": "Περίληψη εγγραφής", - "clickToGenerateSummary": - "Κάντε κλικ στο κουμπί παρακάτω για να δημιουργήσετε περίληψη συνεδρίας", - "summaryContent": "Περιεχόμενο περίληψης", - "copied": "Αντιγράφηκε", - "summaryCopiledToClipboard": "Η περίληψη αντιγράφηκε στο πρόχειρο", - "extractSummary": "Εξαγωγή περίληψης", - "summaryGenerated": "Η περίληψη δημιουργήθηκε", - "generating": "Δημιουργία...", - "regenerate": "Αναδημιουργία", - "summaryTimeoutMessage": - "Το αίτημα δημιουργίας περίληψης έληξε, πιθανώς λόγω προβλήματος δικτύου ή υπερφόρτωσης διακομιστή.", - "deleteTranslationRecord": "Διαγραφή εγγραφής μετάφρασης", - "deleteTranslationConfirm": - "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτή την εγγραφή μετάφρασης; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.", - "originalText": "Αρχικό κείμενο", - "translatedText": "Μεταφρασμένο κείμενο", - "sessionSummary": "Περίληψη συνεδρίας", - "cannotShare": "Δεν είναι δυνατή η κοινοποίηση", - "generateSummaryFirst": "Δημιουργήστε πρώτα περίληψη", - "translationSessionRecord": "Εγγραφή συνεδρίας μετάφρασης", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Σύζευξη συσκευής", "connectYourDeepSoundHeadset": "Συνδέστε τα ακουστικά Voitrans", "bind": "Σύνδεση", @@ -1375,14 +1293,11 @@ const Map elGR = { "autoInputCode": "Αυτόματη εισαγωγή κωδικού", "skipBinding": "Παράλειψη σύνδεσης", "rescan": "Επανάληψη σάρωσης", - "verifyingDevice": "Επαλήθευση συσκευής...", "confirmBinding": "Επιβεβαίωση σύνδεσης", "associatingDevice": "Συσχέτιση συσκευής...", "goToBluetoothSettings": "Μετάβαση στις ρυθμίσεις Bluetooth", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Έτοιμο για σύζευξη", "preparingPairingEnvironment": "Προετοιμασία περιβάλλοντος σύζευξης...", "connectDeepSoundViaSystemBluetooth": @@ -1392,8 +1307,6 @@ const Map elGR = { "waitingCompletePairing": "Περιμένετε, ολοκλήρωση σύζευξης...", "pairingSuccessRedirecting": "Επιτυχής σύζευξη! Ανακατεύθυνση στην αρχική σελίδα...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Βεβαιωθείτε ότι η συνδεδεμένη συσκευή είναι Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1405,19 +1318,12 @@ const Map elGR = { "authorizationFailedCheckCode": "Αποτυχία εξουσιοδότησης, ελέγξτε αν ο κωδικός εξουσιοδότησης είναι σωστός", "pairingFailedRetry": "Αποτυχία σύζευξης, δοκιμάστε ξανά", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Ενεργοποιήστε το Bluetooth', 'deviceDisconnected': 'Η συσκευή αποσυνδέθηκε', 'readyToStartPairing': 'Έτοιμο για έναρξη σύζευξης', 'checkingEnvironment': 'Έλεγχος περιβάλλοντος...', 'ensureHeadsetOnAndPairingMode': 'Βεβαιωθείτε ότι τα ακουστικά είναι ενεργοποιημένα και σε λειτουργία σύζευξης', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Δημιουργία ασφαλούς σύνδεσης...', 'needManualBindingAuthCode': 'Απαιτείται χειροκίνητος κωδικός εξουσιοδότησης σύνδεσης...', @@ -1439,8 +1345,6 @@ const Map elGR = { 'bleConnectionFailed': 'Αποτυχία σύνδεσης BLE', 'deviceAuthorizationFailedCheckCode': 'Αποτυχία εξουσιοδότησης συσκευής, ελέγξτε τον κωδικό εξουσιοδότησης', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1453,7 +1357,18 @@ const Map elGR = { 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Σχόλια χρήστη", 'feedbackInfo': 'Παρέχετε σχόλια ή προτάσεις', 'feedbackDescription': 'Περιγράψτε το πρόβλημα ή την πρότασή σας', @@ -1494,7 +1409,7 @@ const Map elGR = { "removeEarbudsEnsureBattery": "Αφαιρέστε και τα δύο ακουστικά και βεβαιωθείτε ότι η μπαταρία και των δύο είναι πάνω από 20%", - // 音乐列表页面 + // 音乐模块 "noMusic": "Δεν υπάρχει μουσική", // 暂无音乐 "noPlayingMusic": "Δεν παίζει μουσική", // 暂无播放音乐 "unknownSong": "Άγνωστο τραγούδι", // 未知歌曲 @@ -1542,22 +1457,122 @@ const Map elGR = { "波斯语": "Περσικά", "斯瓦希里语": "Σουαχίλι", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "Email", + "中国": "Κίνα", + "美国": "ΗΠΑ", + "加拿大": "Καναδάς", + "俄罗斯": "Ρωσία", + "英国": "Ηνωμένο Βασίλειο", + "德国": "Γερμανία", + "意大利": "Ιταλία", + "法国": "Γαλλία", + "西班牙": "Ισπανία", + "南非": "Νότια Αφρική", + "沙特阿拉伯": "Σαουδική Αραβία", + "土耳其": "Τουρκία", + "日本": "Ιαπωνία", + "韩国": "Νότια Κορέα", + "新加坡": "Σιγκαπούρη", + "马来西亚": "Μαλαισία", + "泰国": "Ταϊλάνδη", + "越南": "Βιετνάμ", + "印度": "Ινδία", + "巴基斯坦": "Πακιστάν", + "菲律宾": "Φιλιππίνες", + "印度尼西亚": "Ινδονησία", + "阿联酋": "ΗΑΕ", + "墨西哥": "Μεξικό", + "巴西": "Βραζιλία", + "阿根廷": "Αργεντινή", + "澳大利亚": "Αυστραλία", + "新西兰": "Νέα Ζηλανδία", + "中国香港": "Χονγκ Κονγκ", + "中国澳门": "Μακάο", + "中国台湾": "Ταϊβάν", + "埃及": "Αίγυπτος", + "希腊": "Ελλάδα", + "荷兰": "Ολλανδία", + "比利时": "Βέλγιο", + "匈牙利": "Ουγγαρία", + "罗马尼亚": "Ρουμανία", + "瑞士": "Ελβετία", + "奥地利": "Αυστρία", + "丹麦": "Δανία", + "瑞典": "Σουηδία", + "挪威": "Νορβηγία", + "波兰": "Πολωνία", + "秘鲁": "Περού", + "智利": "Χιλή", + "哥伦比亚": "Κολομβία", + "委内瑞拉": "Βενεζουέλα", + "葡萄牙": "Πορτογαλία", + "卢森堡": "Λουξεμβούργο", + "爱尔兰": "Ιρλανδία", + "冰岛": "Ισλανδία", + "阿尔巴尼亚": "Αλβανία", + "马耳他": "Μάλτα", + "塞浦路斯": "Κύπρος", + "芬兰": "Φινλανδία", + "保加利亚": "Βουλγαρία", + "立陶宛": "Λιθουανία", + "拉脱维亚": "Λετονία", + "爱沙尼亚": "Εσθονία", + "乌克兰": "Ουκρανία", + "塞尔维亚": "Σερβία", + "克罗地亚": "Κροατία", + "斯洛文尼亚": "Σλοβενία", + "捷克": "Τσεχία", + "斯洛伐克": "Σλοβακία", + "危地马拉": "Γουατεμάλα", + "萨尔瓦多": "Ελ Σαλβαδόρ", + "洪都拉斯": "Ονδούρα", + "尼加拉瓜": "Νικαράγουα", + "哥斯达黎加": "Κόστα Ρίκα", + "巴拿马": "Παναμάς", + "海地": "Αϊτή", + "玻利维亚": "Βολιβία", + "厄瓜多尔": "Ισημερινός", + "巴拉圭": "Παραγουάη", + "乌拉圭": "Ουρουγουάη", + "摩洛哥": "Μαρόκο", + "阿尔及利亚": "Αλγερία", + "突尼斯": "Τυνησία", + "尼日利亚": "Νιγηρία", + "加纳": "Γκάνα", + "埃塞俄比亚": "Αιθιοπία", + "肯尼亚": "Κένυα", + "坦桑尼亚": "Τανζανία", + "乌干达": "Ουγκάντα", + "孟加拉国": "Μπανγκλαντές", + "以色列": "Ισραήλ", + "黎巴嫩": "Λίβανος", + "约旦": "Ιορδανία", + "伊拉克": "Ιράκ", + "科威特": "Κουβέιτ", + "巴林": "Μπαχρέιν", + "卡塔尔": "Κατάρ", + "阿曼": "Ομάν", + "阿富汗": "Αφγανιστάν", + "斯里兰卡": "Σρι Λάνκα", + "缅甸": "Μιανμάρ", + "尼泊尔": "Νεπάλ", + "蒙古": "Μογγολία", + "柬埔寨": "Καμπότζη", + "老挝": "Λάος", + "文莱": "Μπρουνέι", + "东帝汶": "Ανατολικό Τιμόρ", + "斐济": "Φίτζι", + "所罗门群岛": "Νησιά Σολομώντα", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/en_us.dart b/lib/core/translations/language/en_us.dart index aacf26599..cb2923627 100644 --- a/lib/core/translations/language/en_us.dart +++ b/lib/core/translations/language/en_us.dart @@ -1,4 +1,5 @@ const Map enUS = { + // 通用 'continue': 'Continue', 'confirm': 'Confirm', @@ -18,6 +19,11 @@ const Map enUS = { "unknownError": "Unknown error", "asrConnectionFailed": "Speech recognition service connection failed. Please check network and try again.", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "Connect the World, Beyond Voice", @@ -28,7 +34,7 @@ const Map enUS = { "explore": "Explore", "settings": "Settings", - // 语言 + // 语言列表 "followingSystem": "Following system", "chinese": "Chinese", "english": "English", @@ -72,7 +78,7 @@ const Map enUS = { "arabic": "Arabic", "persian": "Persian", - // 登录页 + // 登录模块 "welcome": "Welcome", "loginTips": "Please sign in or create an account using your phone number or email", @@ -101,13 +107,9 @@ const Map enUS = { "resendVerificationCode": "Resend verification code", "login": "Login", "usePasswordLogin": "Use password login", - -// 隐私政策弹窗 "loginDeclaration": "Voitrans Declaration", // Voitrans 声明 "welcomeToThisApp": "Welcome to Voitrans, please read carefully ", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "Privacy Policy", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "User Agreement", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ". By clicking \"Agree and Enter\", you indicate that you have fully read and agree to the above agreements. Clicking \"Disagree\" will exit the application.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Disagree", // 不同意 @@ -189,7 +191,7 @@ const Map enUS = { "usageStatsInfo": "View Your Usage Statistics", "scene": "Scenarios", - /// 用量统计模块 + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", "meetingStats": "Meeting Statistics", @@ -209,7 +211,6 @@ const Map enUS = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - // "aiSummary": "AI Summary", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -226,7 +227,6 @@ const Map enUS = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - //通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", @@ -235,7 +235,7 @@ const Map enUS = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', @@ -304,82 +304,19 @@ const Map enUS = { 'alipayPaymentLaunchFailed': 'Failed to launch Alipay', 'cannotLaunchAlipayPayment': 'Unable to launch Alipay', 'alipayPaymentException': 'Alipay exception', - // AI 功能卡片 + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": + 'Insufficient balance, please go to the corresponding recharge page to recharge.', + "recharge": 'Go to Recharge', + "aiMemberExpiredDesc": + 'AI membership expired, please go to the membership recharge page to renew.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' exists - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - - // 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', 'aiHeaderDesc2': @@ -402,7 +339,46 @@ const Map enUS = { 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Real-time Transcription', + 'sceneLexicon': 'Scenario Glossary', + 'subtitleDisplay': 'Subtitles', + 'transHeaderDesc1': + 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', + 'translateZhEn': 'Chinese-English translation', + 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', + 'multiLangTextTranslation': 'Multilingual text translation', + 'termOptimizationContextPreserve': + 'Terminology optimization and context preservation', + 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', + 'personalVocabularyMemory': 'Personal vocabulary memory', + 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', + 'colorHighContrast': 'High color contrast', + 'transDisclaimer': + 'Translation performance depends on microphone, network latency, and ambient noise.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Meeting Recording', + 'transcriptionAndSummary': 'Transcription & Summary', + 'keywordSearch': 'Keyword Search', + 'collaborationSharing': 'Collaboration & Sharing', + 'meetingHeaderDesc1': + 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'meetingHeaderDesc2': + 'Suitable for business meetings, class notes, and interview minutes.', + 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingSpeakerTagging': 'Speaker labeling', + 'meetingLongAudioTranscription': 'Long audio transcription', + 'meetingKeyPointSummary': 'Key point extraction', + 'meetingTopicNameSearch': 'Search by topic/name', + 'meetingTimelineJump': 'Timeline jump', + 'meetingExportSummary': 'Export minutes', + 'meetingMultiPlatformShare': 'Share across platforms', + 'meetingDisclaimer': + 'Use in quiet environments; performance depends on microphone and network.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', 'higherQuota': 'Higher usage quota', 'lowerUnitPrice': 'Lower unit price', @@ -418,7 +394,32 @@ const Map enUS = { 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Translation Basic 100', + 'trans_002_name': 'Translation Basic 500', + 'trans_003_name': 'Translation Basic 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': 'Includes 100 translations (voice/text).', + 'trans_002_desc': 'Includes 500 translations (voice/text).', + 'trans_003_desc': 'Includes 1000 translations (voice/text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': 'Skip', 'next': 'Next', 'sayLilyHint': 'Say "Lily Lily" to the mic', @@ -429,7 +430,6 @@ const Map enUS = { 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', 'confirmInput': 'Confirm Input', 'guideClickSendPrefix': 'Tap send, ', - // AI 引导步骤 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', 'guideWeatherInput': 'What’s the weather today?', 'guideWeatherSend': 'Lily will report the weather in real time', @@ -456,7 +456,7 @@ const Map enUS = { 'guideSmsSend': 'Lily will send the message', 'guideSmsEnd': 'Message sent—voice control is convenient', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Start Meeting", 'edit': 'Edit', 'delete': 'Delete', @@ -468,8 +468,6 @@ const Map enUS = { 'recordingDetails': 'Recording Details', 'aiSummary': 'AI Summary', 'meetingTranscript': 'Meeting Transcript', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -528,7 +526,6 @@ const Map enUS = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': 'Generating...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -537,6 +534,98 @@ const Map enUS = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': 'Create', + 'templateDetails': 'Template Details', + 'tag': 'Tag', + 'description': 'Description', + 'template': 'Template', + 'deleteTemplate': 'Delete Template', + 'deleteTemplateConfirm': 'Are you sure you want to delete this template?', + 'editTemplate': 'Edit Template', + 'createTemplate': 'Create Template', + 'name': 'Name', + 'templateContentHint': + 'Please enter template content! Tip: Click the AI button above to quickly generate template content based on the name and description you entered', + 'inputNameHint': 'Please enter name', + 'inputDescHint': 'Please enter description', + 'custom': 'Custom', + 'pleaseEnter': 'Please enter ', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': + 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Save Mind Map', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'Export', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Apply to All Paragraphs of This Speaker', + 'summaryWillBeUpdatedAutomatically': + 'Summary will be updated automatically based on the template', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -555,7 +644,7 @@ const Map enUS = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -591,8 +680,6 @@ const Map enUS = { 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -621,138 +708,27 @@ const Map enUS = { 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'create': 'Create', - 'templateDetails': 'Template Details', - 'tag': 'Tag', - 'description': 'Description', - 'template': 'Template', - 'deleteTemplate': 'Delete Template', - 'deleteTemplateConfirm': 'Are you sure you want to delete this template?', - 'editTemplate': 'Edit Template', - 'createTemplate': 'Create Template', - 'name': 'Name', - 'templateContentHint': - 'Please enter template content! Tip: Click the AI button above to quickly generate template content based on the name and description you entered', - 'inputNameHint': 'Please enter name', - 'inputDescHint': 'Please enter description', - 'custom': 'Custom', - 'pleaseEnter': 'Please enter ', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + // Meeting模块 - 录音语言 + 'recordLanguage': 'Recording Language', + 'cantonese': 'Cantonese', + 'sichuan': 'Sichuan Dialect', + 'shanghai': 'Shanghai Dialect', - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 + // Meeting模块 - 错误提示 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'saveMindMap': 'Save Mind Map', - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 错误提示相关 'analysisFailed': 'Analysis failed, please try again later', 'transcriptionFailed': 'Transcription failed, please try again later', 'summaryFailed': 'Summary failed, please try again later', 'summaryFailedShort': 'Summary failed', 'transcriptionFailedShort': 'Transcription failed', - // Meeting模块 - 播放器相关 + // Meeting模块 - 播放器 'playerNotReady': 'Audio player is not ready, please wait', 'playFailed': 'Playback failed', 'audioFileNotFound': 'Audio file not found', 'fetchingAudio': 'Fetching audio from cloud...', // Prompt shown when local audio file is missing and downloading from cloud 'playerLoadFailed': 'Audio player failed to load', - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': 'Chinese Mandarin (Simplified)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': 'English', - // 'japanese': 'Japanese', - // 'korean': 'Korean', - // 'french': 'French', - // 'spanish': 'Spanish', - // 'portuguese': 'Portuguese', - // 'indonesian': 'Indonesian', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - 'export': 'Export', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Apply to All Paragraphs of This Speaker', - 'summaryWillBeUpdatedAutomatically': - 'Summary will be updated automatically based on the template', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', - // 设置页 "systemSettings": "System Settings", //系统设置 "vipRecharge": "VIP Recharge", //会员充值 @@ -803,27 +779,15 @@ const Map enUS = { "bleHeadsetFirmwareUpgrade": "BLE Headset Firmware Upgrade", // BLE耳机固件版本升级 "deviceManagement": "Device Management", // 设备管理 "manageConnectedDevices": "Manage Connected Bluetooth Devices", // 管理已绑定的蓝牙设备 - -//设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Current version is already the latest {version}', 'checkUpdateFailed': 'Check update failed', 'networkErrorRetry': 'Network error, please try again later', - -// 设备管理相关 - // 'clearPairedDevices': 'Clear Paired Devices', - // 'clearPairedDevicesConfirm': - // 'Are you sure you want to clear all paired devices?', - // 'clearPairedDevicesSuccess': 'Clear paired devices successfully', - // 'clearPairedDevicesFailed': 'Clear paired devices failed', - - // 设置页面 - 实时语音对话 'realtimeVoiceChat': 'Real-time Voice Chat', 'realtimeVoiceChatInfo': 'Experience intelligent voice interaction features (Preview)', 'loading': 'Loading...', -//设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -839,8 +803,7 @@ const Map enUS = { "Are you sure you want to unbind device \"{deviceName}\"?", "confirmUnbindAction": "Confirm Unbind", -// Agent模块 - //Agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Clear Chat History", "online": "Online", @@ -873,7 +836,7 @@ const Map enUS = { "voice_interrupt_tip": "When enabled: The AI won't be interrupted by your voice while speaking and can only handle one conversation round at a time. To start a new round, just say the wake-up word.", // 开启后:AI播报时不会被语音打断,只能进行单轮对话,需要打断时请说唤醒词开启新一轮对话。关闭后:播报期间保持拾音,可能出现回声或误触发。 - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", "presetNavigation": "Navigation to", "presetWeather": "Today's weather", @@ -885,7 +848,7 @@ const Map enUS = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Hello! I\'m **Lily**, I can help you:\n\n' '• Answer questions and provide information\n\n' '• Real-time voice translation\n\n' @@ -905,18 +868,17 @@ const Map enUS = { 'startVoiceInput': 'Start voice input', 'startPhoneCallMode': 'Start phone call mode, begin voice input', - //Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Type your message here...', // 全屏编辑器输入提示 'characterCount': '{count} characters', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Copy', 'copySuccess': 'Copy successful', 'report': 'Report', 'submitSuccess': 'Submit successful', 'submitFailed': 'Submit failed', 'reportSubmitted': 'Report submitted, we will process it as soon as possible', - //'networkError': 'Network error, please try again later', 'harmfulUnsafe': 'Harmful/Unsafe', 'pornographicVulgar': 'Pornographic/Vulgar', 'misleadingAttack': 'Misleading/Attack', @@ -926,17 +888,14 @@ const Map enUS = { 'other': 'Other', 'reportDescriptionHint': 'We want to know the reason for your report, you can describe the problem you encountered.', - //'submit': 'Submit', - - //Message_bubble 'generatedByAi': 'Generated by AI', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'Here are some recommended music:', 'playList': 'Playlist', 'moreMusic': 'More music', -//导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': ' km', // 公里单位 'meters': ' m', // 米单位 'hours': ' hours', // 小时单位 @@ -951,7 +910,7 @@ const Map enUS = { "bicycling": "Cycling", // 骑行 "tsransit": "Transit", // 公交 - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Weather Query:', 'highest': 'High', 'lowest': 'Low', @@ -981,18 +940,8 @@ const Map enUS = { "friday": "Fri", "saturday": "Sat", "sunday": "Sun", - // First bind rewards dialog - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Sunny", "partlyCloudy": "Partly Cloudy", "partlySunny": "Partly Sunny", @@ -1013,7 +962,130 @@ const Map enUS = { "haze": "Haze", "strongWind": "Strong Wind", - // 编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "Translation History", + "enableRecording": "Enable Recording", + "viewAudioFiles": "View Audio Files", + "headsetUser": "Headset User", + "phoneUser": "Phone User", + "selectSourceLanguage": "Select Source Language", + "selectTargetLanguage": "Select Target Language", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": + "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "No translation history", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "Clear History", + "clearHistoryConfirm": + "Are you sure you want to clear all translation history? This action cannot be undone.", + "unknownLanguage": "Unknown Language", + "deleteSessionRecord": "Delete Session Record", + "deleteSessionConfirm": + "Are you sure you want to delete all translation records for this session? This action cannot be undone.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": + "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": + "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": + "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": + "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Translate Audio Files", + "noAudioFiles": "No audio files", + "calculating": "Calculating...", + "playing": "Playing...", + "paused": "Paused", + "clickToPlay": "Click to play", + "rename": "Rename", + "smartTranscription": "Smart Transcription", + "renameAudioFile": "Rename Audio File", + "enterNewFileName": "Please enter new file name", + + // 翻译模块 - 翻译详情 + "originalRecord": "Original Record", + "recordSummary": "Record Summary", + "clickToGenerateSummary": + "Click the button below to generate session summary", + "summaryContent": "Summary Content", + "copied": "Copied", + "summaryCopiledToClipboard": "Summary copied to clipboard", + "extractSummary": "Extract Summary", + "summaryGenerated": "Summary generated", + "generating": "Generating...", + "regenerate": "Regenerate", + "summaryTimeoutMessage": + "Summary generation request timed out, possibly due to network issues or server busy.", + "deleteTranslationRecord": "Delete Translation Record", + "deleteTranslationConfirm": + "Are you sure you want to delete this translation record? This action cannot be undone.", + "originalText": "Original Text", + "translatedText": "Translated Text", + "sessionSummary": "Session Summary", + "cannotShare": "Cannot Share", + "generateSummaryFirst": "Please generate summary first", + "translationSessionRecord": "Translation Session Record", + + // 个人资料模块 "editProfile": "Edit Profile", "avatar": "Avatar", "nickname": "Nickname", @@ -1029,8 +1101,6 @@ const Map enUS = { 'Are you sure you want to permanently delete your account? This action cannot be undone.', 'clean': 'Clear Cache', // 清除缓存 'cleanTips': 'Are you sure you want to clear personal cache?', // 确定要清除个人缓存吗? - - //Profile 错误信息 'networkConnectionFailed': 'Network connection failed, please check network settings and try again', 'serverTemporarilyUnavailable': @@ -1047,10 +1117,6 @@ const Map enUS = { 'Network connection failed, please check network settings', 'serverInternalErrorRetryLater': 'Server internal error, please try again later', - -//Profile 用户交互 -//'error': 'Error', -//'success': 'Success', 'imageCompressionFailed': 'Image compression failed', 'avatarUpdateFailed': 'Avatar update failed', 'usernameCannotBeEmpty': 'Username cannot be empty', @@ -1061,8 +1127,6 @@ const Map enUS = { 'logoutFailedRetry': 'Logout failed, please try again', 'accountPermanentlyDeleted': 'Account permanently deleted', 'deleteAccountFailedRetry': 'Delete account failed, please try again', - - // 账号服务相关 'clearUserDataFailed': 'Failed to clear user data', // 清理用户数据失败 'deleteUserDataFailed': 'Failed to delete user data', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'Third-party logout successful', // 第三方登录退出成功 @@ -1075,7 +1139,12 @@ const Map enUS = { 'accountServiceInitialized': 'AccountService initialized', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': + 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', 'getPermissionStatusFailed': 'Failed to get permission status', 'communicationPermissions': 'Communication Permissions', 'bluetoothPermissions': 'Bluetooth Permissions', @@ -1088,7 +1157,6 @@ const Map enUS = { 'phone': 'Phone', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': 'Bluetooth', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'Calendar Write', @@ -1143,8 +1211,6 @@ const Map enUS = { 'permanentDenialText': 'You have permanently denied {permission} permission, please go to app settings to enable it', 'goToSettings': 'Go to Settings', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': @@ -1169,7 +1235,6 @@ const Map enUS = { 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', - //'microphonePermission': 'Microphone', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', @@ -1179,6 +1244,12 @@ const Map enUS = { 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', 'storagePermissionPermanentDenial': 'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', + 'permissionUtilNeed': 'Need ', + 'permissionUtilPermission': ' Permission', + 'permissionUtilRestricted': ' Permission Restricted', + 'permissionUtilRestrictedMessage': + 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'permissionUtilConfirm': 'OK', // 原生前台服务通知(Android) 'native.notification.appName': 'VOITRANS', // VOITRANS @@ -1196,15 +1267,7 @@ const Map enUS = { 'native.notification.music.pause': 'Pause', // 暂停 'native.notification.qqMusic.playing': 'Playing music', // 正在播放音乐 -//permission_util.dart - 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', - 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', - 'permissionUtilConfirm': 'OK', - - // 版本更新对话框 + // 版本更新 'newVersionFound': 'New Version Found', // 版本更新对话框标题 'remindLater': 'Remind Later', // 稍后提醒按钮 'updateNow': 'Update Now', // 立即更新按钮 @@ -1215,253 +1278,7 @@ const Map enUS = { 'updateErrorRetry': 'Error occurred during update, please try again later', // 更新错误重试提示 - // 国家列表 - "邮箱": "Email", - "中国": "China", - "美国": "United States", - "加拿大": "Canada", - "俄罗斯": "Russia", - "英国": "United Kingdom", - "德国": "Germany", - "意大利": "Italy", - "法国": "France", - "西班牙": "Spain", - "南非": "South Africa", - "沙特阿拉伯": "Saudi Arabia", - "土耳其": "Turkey", - "日本": "Japan", - "韩国": "South Korea", - "新加坡": "Singapore", - "马来西亚": "Malaysia", - "泰国": "Thailand", - "越南": "Vietnam", - "印度": "India", - "巴基斯坦": "Pakistan", - "菲律宾": "Philippines", - "印度尼西亚": "Indonesia", - "阿联酋": "United Arab Emirates", - "墨西哥": "Mexico", - "巴西": "Brazil", - "阿根廷": "Argentina", - "澳大利亚": "Australia", - "新西兰": "New Zealand", - "中国香港": "Hong Kong, China", - "中国澳门": "Macau, China", - "中国台湾": "Taiwan, China", - "埃及": "Egypt", - "希腊": "Greece", - "荷兰": "Netherlands", - "比利时": "Belgium", - "匈牙利": "Hungary", - "罗马尼亚": "Romania", - "瑞士": "Switzerland", - "奥地利": "Austria", - "丹麦": "Denmark", - "瑞典": "Sweden", - "挪威": "Norway", - "波兰": "Poland", - "秘鲁": "Peru", - "智利": "Chile", - "哥伦比亚": "Colombia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugal", - "卢森堡": "Luxembourg", - "爱尔兰": "Ireland", - "冰岛": "Iceland", - "阿尔巴尼亚": "Albania", - "马耳他": "Malta", - "塞浦路斯": "Cyprus", - "芬兰": "Finland", - "保加利亚": "Bulgaria", - "立陶宛": "Lithuania", - "拉脱维亚": "Latvia", - "爱沙尼亚": "Estonia", - "乌克兰": "Ukraine", - "塞尔维亚": "Serbia", - "克罗地亚": "Croatia", - "斯洛文尼亚": "Slovenia", - "捷克": "Czech Republic", - "斯洛伐克": "Slovakia", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolivia", - "厄瓜多尔": "Ecuador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Morocco", - "阿尔及利亚": "Algeria", - "突尼斯": "Tunisia", - "尼日利亚": "Nigeria", - "加纳": "Ghana", - "埃塞俄比亚": "Ethiopia", - "肯尼亚": "Kenya", - "坦桑尼亚": "Tanzania", - "乌干达": "Uganda", - "孟加拉国": "Bangladesh", - "以色列": "Israel", - "黎巴嫩": "Lebanon", - "约旦": "Jordan", - "伊拉克": "Iraq", - "科威特": "Kuwait", - "巴林": "Bahrain", - "卡塔尔": "Qatar", - "阿曼": "Oman", - "阿富汗": "Afghanistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongolia", - "柬埔寨": "Cambodia", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "East Timor", - "斐济": "Fiji", - "所罗门群岛": "Solomon Islands", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Translation History", - "enableRecording": "Enable Recording", - "viewAudioFiles": "View Audio Files", - "headsetUser": "Headset User", - "phoneUser": "Phone User", - "selectSourceLanguage": "Select Source Language", - "selectTargetLanguage": "Select Target Language", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // Text translation & language detection - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "No translation history", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Clear History", - "clearHistoryConfirm": - "Are you sure you want to clear all translation history? This action cannot be undone.", - "unknownLanguage": "Unknown Language", - "deleteSessionRecord": "Delete Session Record", - "deleteSessionConfirm": - "Are you sure you want to delete all translation records for this session? This action cannot be undone.", - - // Picture Translation module - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Translate Audio Files", - "noAudioFiles": "No audio files", - "calculating": "Calculating...", - "playing": "Playing...", - "paused": "Paused", - "clickToPlay": "Click to play", - "rename": "Rename", - "smartTranscription": "Smart Transcription", - "renameAudioFile": "Rename Audio File", - "enterNewFileName": "Please enter new file name", - - // 翻译详情页(translation_detail_view.dart) - "originalRecord": "Original Record", - "recordSummary": "Record Summary", - "clickToGenerateSummary": - "Click the button below to generate session summary", - "summaryContent": "Summary Content", - "copied": "Copied", - "summaryCopiledToClipboard": "Summary copied to clipboard", - "extractSummary": "Extract Summary", - "summaryGenerated": "Summary generated", - "generating": "Generating...", - "regenerate": "Regenerate", - "summaryTimeoutMessage": - "Summary generation request timed out, possibly due to network issues or server busy.", - "deleteTranslationRecord": "Delete Translation Record", - "deleteTranslationConfirm": - "Are you sure you want to delete this translation record? This action cannot be undone.", - "originalText": "Original Text", - "translatedText": "Translated Text", - "sessionSummary": "Session Summary", - "cannotShare": "Cannot Share", - "generateSummaryFirst": "Please generate summary first", - "translationSessionRecord": "Translation Session Record", - // 配对模块 - // 配对页面 "devicePairing": "Device Pairing", "connectYourDeepSoundHeadset": "Connect Your Voitrans Headset", "bind": "Bind", @@ -1470,14 +1287,11 @@ const Map enUS = { "autoInputCode": "Auto Input Code", "skipBinding": "Skip Binding", "rescan": "Rescan", - "verifyingDevice": "Verifying device...", "confirmBinding": "Confirm Binding", "associatingDevice": "Associating device...", "goToBluetoothSettings": "Go to Bluetooth Settings", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Ready to pair", "preparingPairingEnvironment": "Preparing pairing environment...", "connectDeepSoundViaSystemBluetooth": @@ -1487,8 +1301,6 @@ const Map enUS = { "waitingCompletePairing": "Please wait, completing pairing...", "pairingSuccessRedirecting": "Pairing successful! Redirecting to home page...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Please ensure connected device is Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1500,19 +1312,12 @@ const Map enUS = { "authorizationFailedCheckCode": "Authorization failed, please check authorization code", "pairingFailedRetry": "Pairing failed, please retry", - -//配对控制器相关 - //'connectDevice': 'Connect Device', 'pleaseEnableBluetooth': 'Please enable Bluetooth', 'deviceDisconnected': 'Device disconnected', 'readyToStartPairing': 'Ready to start pairing', 'checkingEnvironment': 'Checking environment...', 'ensureHeadsetOnAndPairingMode': 'Please ensure headset is on and in pairing mode', - //'goToBluetoothSettings': 'Go to Bluetooth Settings', - //'verifyingDevice': 'Verifying device...', - //'confirmBinding': 'Confirm Binding', - //'associatingDevice': 'Associating device...', 'establishingSecureConnection': 'Establishing secure connection...', 'needManualBindingAuthCode': 'Manual binding authorization code required...', 'pairingSuccessful': 'Pairing successful!', @@ -1533,8 +1338,6 @@ const Map enUS = { 'bleConnectionFailed': 'BLE connection failed', 'deviceAuthorizationFailedCheckCode': 'Device authorization failed, please check authorization code', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1547,7 +1350,18 @@ const Map enUS = { 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - // 用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Feedback", 'feedbackInfo': 'Provide feedback or suggestions', 'feedbackDescription': 'Please describe your issue or suggestion', @@ -1588,7 +1402,7 @@ const Map enUS = { "removeEarbudsEnsureBattery": "Remove both earbuds and ensure battery level is above 20%", - // 音乐列表页面 + // 音乐模块 "noMusic": "No Music", // 暂无音乐 "noPlayingMusic": "No Playing Music", // 暂无播放音乐 "unknownSong": "Unknown Song", // 未知歌曲 @@ -1636,22 +1450,122 @@ const Map enUS = { "波斯语": "Persian", "斯瓦希里语": "Swahili", - // Time related - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // Time extensions (used by picture translation) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示(中文注释) - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "Email", + "中国": "China", + "美国": "United States", + "加拿大": "Canada", + "俄罗斯": "Russia", + "英国": "United Kingdom", + "德国": "Germany", + "意大利": "Italy", + "法国": "France", + "西班牙": "Spain", + "南非": "South Africa", + "沙特阿拉伯": "Saudi Arabia", + "土耳其": "Turkey", + "日本": "Japan", + "韩国": "South Korea", + "新加坡": "Singapore", + "马来西亚": "Malaysia", + "泰国": "Thailand", + "越南": "Vietnam", + "印度": "India", + "巴基斯坦": "Pakistan", + "菲律宾": "Philippines", + "印度尼西亚": "Indonesia", + "阿联酋": "United Arab Emirates", + "墨西哥": "Mexico", + "巴西": "Brazil", + "阿根廷": "Argentina", + "澳大利亚": "Australia", + "新西兰": "New Zealand", + "中国香港": "Hong Kong, China", + "中国澳门": "Macau, China", + "中国台湾": "Taiwan, China", + "埃及": "Egypt", + "希腊": "Greece", + "荷兰": "Netherlands", + "比利时": "Belgium", + "匈牙利": "Hungary", + "罗马尼亚": "Romania", + "瑞士": "Switzerland", + "奥地利": "Austria", + "丹麦": "Denmark", + "瑞典": "Sweden", + "挪威": "Norway", + "波兰": "Poland", + "秘鲁": "Peru", + "智利": "Chile", + "哥伦比亚": "Colombia", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portugal", + "卢森堡": "Luxembourg", + "爱尔兰": "Ireland", + "冰岛": "Iceland", + "阿尔巴尼亚": "Albania", + "马耳他": "Malta", + "塞浦路斯": "Cyprus", + "芬兰": "Finland", + "保加利亚": "Bulgaria", + "立陶宛": "Lithuania", + "拉脱维亚": "Latvia", + "爱沙尼亚": "Estonia", + "乌克兰": "Ukraine", + "塞尔维亚": "Serbia", + "克罗地亚": "Croatia", + "斯洛文尼亚": "Slovenia", + "捷克": "Czech Republic", + "斯洛伐克": "Slovakia", + "危地马拉": "Guatemala", + "萨尔瓦多": "El Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nicaragua", + "哥斯达黎加": "Costa Rica", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Bolivia", + "厄瓜多尔": "Ecuador", + "巴拉圭": "Paraguay", + "乌拉圭": "Uruguay", + "摩洛哥": "Morocco", + "阿尔及利亚": "Algeria", + "突尼斯": "Tunisia", + "尼日利亚": "Nigeria", + "加纳": "Ghana", + "埃塞俄比亚": "Ethiopia", + "肯尼亚": "Kenya", + "坦桑尼亚": "Tanzania", + "乌干达": "Uganda", + "孟加拉国": "Bangladesh", + "以色列": "Israel", + "黎巴嫩": "Lebanon", + "约旦": "Jordan", + "伊拉克": "Iraq", + "科威特": "Kuwait", + "巴林": "Bahrain", + "卡塔尔": "Qatar", + "阿曼": "Oman", + "阿富汗": "Afghanistan", + "斯里兰卡": "Sri Lanka", + "缅甸": "Myanmar", + "尼泊尔": "Nepal", + "蒙古": "Mongolia", + "柬埔寨": "Cambodia", + "老挝": "Laos", + "文莱": "Brunei", + "东帝汶": "East Timor", + "斐济": "Fiji", + "所罗门群岛": "Solomon Islands", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/es_es.dart b/lib/core/translations/language/es_es.dart index 23aa0d7e5..1bd49fe22 100644 --- a/lib/core/translations/language/es_es.dart +++ b/lib/core/translations/language/es_es.dart @@ -1,4 +1,5 @@ const Map esES = { + // 通用 'continue': 'Continuar', 'confirm': 'Confirmar', @@ -18,6 +19,11 @@ const Map esES = { "unknownError": "Error desconocido", "asrConnectionFailed": "La conexión con el servicio de reconocimiento de voz ha fallado. Comprueba la red o inténtalo de nuevo más tarde.", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "Conectando el mundo, más allá del sonido", @@ -28,7 +34,7 @@ const Map esES = { "explore": "Explorar", "settings": "Configuración", - // 语言 + // 语言列表 "followingSystem": "Seguir sistema", "chinese": "Chino", "english": "Inglés", @@ -72,7 +78,7 @@ const Map esES = { "arabic": "Arabés", "persian": "Persio", - // 登录页 + // 登录模块 "welcome": "Bienvenido", "loginTips": "Inicia sesión o regístrate con número de teléfono o email", "accountNumber": "Número de teléfono o email", @@ -100,13 +106,9 @@ const Map esES = { "resendVerificationCode": "Reenviar código de verificación", "login": "Iniciar sesión", "usePasswordLogin": "Usar inicio de sesión con contraseña", - - // 隐私政策弹窗 "loginDeclaration": "Declaración de Voitrans", // Voitrans 声明 "welcomeToThisApp": "Bienvenido a Voitrans, lee cuidadosamente", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ". Al hacer clic en 'Acepto y continúo' indicas que has leído completamente y aceptas los acuerdos anteriores. Al hacer clic en 'No acepto' se cerrará la aplicación.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "No acepto", // 不同意 @@ -166,7 +168,7 @@ const Map esES = { 'right': 'Derecha', 'checkConnectionStatusFailed': 'Fallo al verificar estado de conexión', -// 发现页 + // 发现页 "searchAi": "Buscar funciones de IA...", "exploreSlogan": "Auriculares inteligentes, posibilidades infinitas", "exploreSlogan1": "Compañero inteligente, posibilidades infinitas", @@ -191,6 +193,7 @@ const Map esES = { "usageStats": "Estadísticas de uso", "usageStatsInfo": "Consulte las estadísticas de uso de la aplicación", "scene": "Escenarios", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", @@ -211,7 +214,6 @@ const Map esES = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -228,7 +230,6 @@ const Map esES = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - // 通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", @@ -237,88 +238,79 @@ const Map esES = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', 'remaining': 'Remaining', 'featureDescription': 'Feature Description', - // AI 功能卡片 + 'paymentSuccess': 'Pago exitoso', + 'paymentFailed': 'Pago fallido', + 'gotIt': 'Entendido', + 'paymentFailedTryAgain': 'Pago fallido. Por favor, intente de nuevo.', + 'selectPaymentMethod': 'Seleccione el método de pago', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Error al crear el pedido de WeChat', + 'alipayOrderCreateFailed': 'Error al crear el pedido de Alipay', + 'appleOrderCreateFailed': 'Error al crear el pedido de Apple', + 'googleOrderCreateFailed': 'Error al crear el pedido de Google', + 'paypalOrderCreateFailed': 'Error al crear el pedido de PayPal', + 'paymentException': 'Excepción de pago', + 'paymentLaunchFailed': 'Error al iniciar el pago', + 'paymentExceptionWithError': 'Excepción de pago: @error', + 'paymentProcessingCheckLater': 'Su pedido está siendo procesado. Por favor, verifique más tarde.', + 'paymentResultQueryException': 'Error al consultar el resultado del pago: @error', + 'orderConfirmedQuotaRefreshed': 'Pedido confirmado. Su cuota ha sido actualizada.', + 'paymentCompletedConfirming': 'Pago completado. Confirmando…', + 'paymentCancelled': 'Pago cancelado', + 'paypalOpenedCompleteInBrowser': 'PayPal abierto. Por favor, complete el pago en su navegador.', + 'paypalOpenFailed': 'No se puede abrir la página de pago de PayPal', + 'paymentTestTitle': 'Prueba de pago', + 'paymentTestOrderInfo': 'Información del pedido de prueba', + 'paymentTestProductId': 'ID del producto', + 'paymentTestProductDescription': 'Descripción del producto', + 'paymentTestWechatDescription': 'Prueba de pago con WeChat', + 'paymentTestAlipayDescription': 'Prueba de pago con Alipay', + 'paymentTestAmount': 'Monto', + 'paymentTestSelectAmount': 'Seleccione el monto de prueba', + 'paying': 'Pagando...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Estado del pago', + 'errorInfoWithMessage': 'Error: @message', + 'retest': 'Volver a probar', + 'paymentTestInstructionsTitle': 'Instrucciones', + 'paymentTestInstructionsContent': '1. Seleccione un monto de prueba (recomendado: ¥0.01)\n2. Haga clic en el botón de pago para iniciar\n3. Complete el pago en la aplicación de pago\n4. Regrese para verificar el resultado', + 'startingWechatPayment': 'Iniciando WeChat Pay...', + 'startingAlipayPayment': 'Iniciando Alipay...', + 'wechatPaymentSuccess': '¡Pago con WeChat Pay exitoso!', + 'wechatPaymentFailed': 'Fallo de WeChat Pay', + 'wechatPaymentLaunchFailed': 'Error al iniciar WeChat Pay', + 'cannotLaunchWechatPayment': 'No se puede iniciar WeChat Pay', + 'wechatPaymentException': 'Excepción de WeChat Pay', + 'wechatPaymentTestCompleted': 'Prueba de WeChat Pay completada', + 'alipayPaymentSuccess': '¡Pago con Alipay exitoso!', + 'alipayPaymentFailed': 'Fallo de Alipay', + 'alipayPaymentLaunchFailed': 'Error al iniciar Alipay', + 'cannotLaunchAlipayPayment': 'No se puede iniciar Alipay', + 'alipayPaymentException': 'Excepción de Alipay', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": + 'Insufficient balance, please go to the corresponding recharge page to recharge.', + "recharge": 'Go to Recharge', + "aiMemberExpiredDesc": + 'AI membership expired, please go to the membership recharge page to renew.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', 'aiHeaderDesc2': @@ -341,7 +333,46 @@ const Map esES = { 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Real-time Transcription', + 'sceneLexicon': 'Scenario Glossary', + 'subtitleDisplay': 'Subtitles', + 'transHeaderDesc1': + 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', + 'translateZhEn': 'Chinese-English translation', + 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', + 'multiLangTextTranslation': 'Multilingual text translation', + 'termOptimizationContextPreserve': + 'Terminology optimization and context preservation', + 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', + 'personalVocabularyMemory': 'Personal vocabulary memory', + 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', + 'colorHighContrast': 'High color contrast', + 'transDisclaimer': + 'Translation performance depends on microphone, network latency, and ambient noise.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Meeting Recording', + 'transcriptionAndSummary': 'Transcription & Summary', + 'keywordSearch': 'Keyword Search', + 'collaborationSharing': 'Collaboration & Sharing', + 'meetingHeaderDesc1': + 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'meetingHeaderDesc2': + 'Suitable for business meetings, class notes, and interview minutes.', + 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingSpeakerTagging': 'Speaker labeling', + 'meetingLongAudioTranscription': 'Long audio transcription', + 'meetingKeyPointSummary': 'Key point extraction', + 'meetingTopicNameSearch': 'Search by topic/name', + 'meetingTimelineJump': 'Timeline jump', + 'meetingExportSummary': 'Export minutes', + 'meetingMultiPlatformShare': 'Share across platforms', + 'meetingDisclaimer': + 'Use in quiet environments; performance depends on microphone and network.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', 'higherQuota': 'Higher usage quota', 'lowerUnitPrice': 'Lower unit price', @@ -357,7 +388,32 @@ const Map esES = { 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Translation Basic 100', + 'trans_002_name': 'Translation Basic 500', + 'trans_003_name': 'Translation Basic 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': 'Includes 100 translations (voice/text).', + 'trans_002_desc': 'Includes 500 translations (voice/text).', + 'trans_003_desc': 'Includes 1000 translations (voice/text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "Omitir", 'next': 'Next', 'sayLilyHint': "Say \"Lily Lily\" to the mic", @@ -368,7 +424,6 @@ const Map esES = { 'guideAwakenSuccess': "Great! Lily is awake—ask it to help.", 'confirmInput': "Confirm Input", 'guideClickSendPrefix': "Tap send, ", - // AI 引导步骤 'guideWeatherStart': "Tell Lily: “What’s the weather today?”", 'guideWeatherInput': "What’s the weather today?", 'guideWeatherSend': "Lily will report the weather in real time", @@ -395,7 +450,7 @@ const Map esES = { 'guideSmsSend': "Lily will send the message", 'guideSmsEnd': "Message sent—voice control is convenient", - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Iniciar reunión", 'edit': 'Editar', 'delete': 'Eliminar', @@ -407,8 +462,6 @@ const Map esES = { 'recordingDetails': 'Detalles de grabación', 'aiSummary': 'Resumen de IA', 'meetingTranscript': 'Transcripción de reunión', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -459,7 +512,6 @@ const Map esES = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -468,6 +520,97 @@ const Map esES = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': 'Crear', + 'templateDetails': 'Detalles de la plantilla', + 'tag': 'Etiqueta', + 'description': 'Descripción', + 'template': 'Plantilla', + 'deleteTemplate': 'Eliminar plantilla', + 'deleteTemplateConfirm': '¿Está seguro de que desea eliminar esta plantilla?', + 'editTemplate': 'Editar plantilla', + 'createTemplate': 'Crear plantilla', + 'name': 'Nombre', + 'templateContentHint': 'Por favor, introduzca el contenido de la plantilla. Consejo: Haga clic en el botón de AI de arriba para generar rápidamente el contenido de la plantilla según el nombre y la descripción que ingresó', + 'inputNameHint': 'Por favor, introduzca el nombre', + 'inputDescHint': 'Por favor, introduzca la descripción', + 'custom': 'Personalizado', + 'pleaseEnter': 'Por favor ingrese', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': + 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Guardar mapa mental', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'Exportar', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Aplicar a todos los párrafos de este orador', + 'summaryWillBeUpdatedAutomatically': + 'El resumen se actualizará automáticamente según la plantilla', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -486,7 +629,7 @@ const Map esES = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -522,8 +665,6 @@ const Map esES = { 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -552,105 +693,26 @@ const Map esES = { 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Aplicar a todos los párrafos de este orador', - 'summaryWillBeUpdatedAutomatically': - 'El resumen se actualizará automáticamente según la plantilla', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': 'Análisis fallido, por favor intente más tarde', + 'transcriptionFailed': 'Transcripción fallida, por favor intente más tarde', + 'summaryFailed': 'Resumen fallido, por favor intente más tarde', + 'summaryFailedShort': 'Resumen fallido', + 'transcriptionFailedShort': 'Transcripción fallida', + + // Meeting模块 - 播放器 + 'playerNotReady': 'El reproductor de audio no está listo, por favor espere', + 'playFailed': 'Reproducción fallida', + 'audioFileNotFound': 'Archivo de audio no encontrado', + 'fetchingAudio': 'Obteniendo audio desde la nube...', + 'playerLoadFailed': 'Error al cargar el reproductor de audio', // 设置页 "systemSettings": "Configuración del sistema", @@ -704,26 +766,15 @@ const Map esES = { "bleHeadsetFirmwareUpgrade": "Actualización de firmware de auriculares BLE", "deviceManagement": "Gestión de dispositivos", "manageConnectedDevices": "Gestionar dispositivos Bluetooth conectados", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Actualmente la última versión {version}', 'checkUpdateFailed': 'Fallo al verificar actualizaciones', 'networkErrorRetry': 'Error de red, inténtalo de nuevo más tarde', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Chat de voz en tiempo real", "realtimeVoiceChatInfo": "Experimenta la función de interacción de voz inteligente (vista previa de función)", "loading": "Cargando...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -739,8 +790,7 @@ const Map esES = { "Are you sure you want to unbind device \"{deviceName}\"?", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Limpiar historial de chat", "online": "En línea", @@ -770,8 +820,9 @@ const Map esES = { "swipeUpForMore": "Desliza hacia arriba para más", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': 'Cuando está activado: La IA no será interrumpida por tu voz mientras habla y solo podrá manejar una ronda de conversación a la vez. Para iniciar una nueva ronda, simplemente di la palabra de activación.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -783,7 +834,7 @@ const Map esES = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': '¡Hola! Soy **Lily**, puedo ayudarte con:\n\n' '• Responder preguntas y proporcionar información\n\n' '• Traducción de voz en tiempo real\n\n' @@ -804,18 +855,17 @@ const Map esES = { 'startPhoneCallMode': 'Iniciar modo de llamada telefónica, iniciar entrada de voz', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Ingresa tu mensaje aquí...', // 全屏编辑器输入提示 'characterCount': '{count} caracteres', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Copiar', 'copySuccess': 'Copiado exitosamente', 'report': 'Reportar', 'submitSuccess': 'Enviado exitosamente', 'submitFailed': 'Fallo al enviar', 'reportSubmitted': 'Reporte enviado, lo procesaremos lo antes posible', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Dañino/inseguro', 'pornographicVulgar': 'Pornográfico/vulgar', 'misleadingAttack': 'Ataque engañoso', @@ -825,17 +875,14 @@ const Map esES = { 'other': 'Otro', 'reportDescriptionHint': 'Queremos conocer la razón de tu reporte, puedes describir el problema que encontraste.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Generado por IA', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'Aquí tienes algunas músicas recomendadas:', 'playList': 'Lista de reproducción', 'moreMusic': 'Más música', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'kilómetros', // 公里单位 'meters': 'metros', // 米单位 'hours': 'horas', // 小时单位 @@ -850,7 +897,7 @@ const Map esES = { "bicycling": "Ciclismo", "tsransit": "Transporte público", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Consulta del clima:', 'highest': 'Máxima', 'lowest': 'Mínima', @@ -880,18 +927,8 @@ const Map esES = { "friday": "Viernes", "saturday": "Sábado", "sunday": "Domingo", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Soleado", "partlyCloudy": "Parcialmente nublado", "partlySunny": "Parcialmente soleado", @@ -912,7 +949,130 @@ const Map esES = { "haze": "Neblina", "strongWind": "Viento fuerte", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "Historial de traducción", + "enableRecording": "Habilitar grabación", + "viewAudioFiles": "Ver archivos de audio", + "headsetUser": "Usuario de auriculares", + "phoneUser": "Usuario de teléfono", + "selectSourceLanguage": "Seleccionar idioma origen", + "selectTargetLanguage": "Seleccionar idioma destino", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": + "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Sin historial de traducción", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "Limpiar historial", + "clearHistoryConfirm": + "¿Estás seguro de que quieres limpiar todo el historial de traducción? Esta operación no se puede deshacer.", + "unknownLanguage": "Idioma desconocido", + "deleteSessionRecord": "Eliminar registro de sesión", + "deleteSessionConfirm": + "¿Estás seguro de que quieres eliminar todos los registros de traducción de esta sesión? Esta operación no se puede deshacer.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": + "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": + "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": + "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": + "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Traducir archivos de audio", + "noAudioFiles": "Sin archivos de audio", + "calculating": "Calculando...", + "playing": "Reproduciendo...", + "paused": "Pausado", + "clickToPlay": "Haz clic para reproducir", + "rename": "Renombrar", + "smartTranscription": "Transcripción inteligente", + "renameAudioFile": "Renombrar archivo de audio", + "enterNewFileName": "Ingresa nuevo nombre de archivo", + + // 翻译模块 - 翻译详情 + "originalRecord": "Registro original", + "recordSummary": "Resumen del registro", + "clickToGenerateSummary": + "Haz clic en el botón de abajo para generar resumen de sesión", + "summaryContent": "Contenido del resumen", + "copied": "Copiado", + "summaryCopiledToClipboard": "Resumen copiado al portapapeles", + "extractSummary": "Extraer resumen", + "summaryGenerated": "Resumen generado", + "generating": "Generando...", + "regenerate": "Regenerar", + "summaryTimeoutMessage": + "Solicitud de generación de resumen expirada, posiblemente debido a problema de red o sobrecarga del servidor.", + "deleteTranslationRecord": "Eliminar registro de traducción", + "deleteTranslationConfirm": + "¿Estás seguro de que quieres eliminar este registro de traducción? Esta operación no se puede deshacer.", + "originalText": "Texto original", + "translatedText": "Texto traducido", + "sessionSummary": "Resumen de sesión", + "cannotShare": "No se puede compartir", + "generateSummaryFirst": "Genera resumen primero", + "translationSessionRecord": "Registro de sesión de traducción", + + // 个人资料模块 "editProfile": "Editar información personal", "avatar": "Avatar", "nickname": "Apodo", @@ -929,8 +1089,6 @@ const Map esES = { '¿Estás seguro de que quieres eliminar permanentemente tu cuenta? Esta acción no se puede deshacer', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'Fallo de conexión de red, verifica la configuración de red e inténtalo de nuevo', 'serverTemporarilyUnavailable': @@ -947,10 +1105,6 @@ const Map esES = { 'Fallo de conexión de red, verifica la configuración de red', 'serverInternalErrorRetryLater': 'Error interno del servidor, inténtalo de nuevo más tarde', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Fallo en la compresión de imagen', 'avatarUpdateFailed': 'Fallo en la actualización del avatar', 'usernameCannotBeEmpty': 'El nombre de usuario no puede estar vacío', @@ -961,8 +1115,6 @@ const Map esES = { 'logoutFailedRetry': 'Fallo al cerrar sesión, inténtalo de nuevo', 'accountPermanentlyDeleted': 'Cuenta eliminada permanentemente', 'deleteAccountFailedRetry': 'Fallo al eliminar cuenta, inténtalo nuevo', - - // 账号服务相关 'clearUserDataFailed': 'Fallo al limpiar datos de usuario', // 清理用户数据失败 'deleteUserDataFailed': 'Fallo al eliminar datos de usuario', // 删除用户数据失败 'thirdPartyLogoutSuccess': @@ -978,7 +1130,12 @@ const Map esES = { 'accountServiceInitialized': 'AccountService inicializado', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': + 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', 'getPermissionStatusFailed': 'Fallo al obtener estado de permisos', 'communicationPermissions': 'Permisos de comunicación', 'bluetoothPermissions': 'Bluetooth Permissions', @@ -991,7 +1148,6 @@ const Map esES = { 'phone': 'Teléfono', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'Escritura de calendario', @@ -1049,8 +1205,6 @@ const Map esES = { 'permanentDenialText': 'Has denegado permanentemente el permiso {permission}, ve a la configuración de la aplicación para habilitarlo', 'goToSettings': 'Ir a configuración', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': @@ -1075,7 +1229,6 @@ const Map esES = { 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', @@ -1085,8 +1238,6 @@ const Map esES = { 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', 'storagePermissionPermanentDenial': 'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', - - //permission_util.dart 'permissionUtilNeed': 'Need ', 'permissionUtilPermission': ' Permission', 'permissionUtilRestricted': ' Permission Restricted', @@ -1094,7 +1245,20 @@ const Map esES = { 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navegación en curso', + 'native.notification.navigation.keepRunning': 'Navegando, mantenga la aplicación en ejecución', + 'native.notification.bleAgent.running': 'El asistente de voz está en funcionamiento', + 'native.notification.audioRecording.recording': 'Grabando audio, toque para volver a la aplicación', + 'native.notification.music.waiting': 'Esperando para reproducir', + 'native.notification.music.previous': 'Anterior', + 'native.notification.music.next': 'Siguiente', + 'native.notification.music.play': 'Reproducir', + 'native.notification.music.pause': 'Pausa', + 'native.notification.qqMusic.playing': 'Reproduciendo música', + + // 版本更新 'newVersionFound': 'Nueva versión encontrada', // 版本更新对话框标题 'remindLater': 'Recordar más tarde', // 稍后提醒按钮 'updateNow': 'Actualizar ahora', // 立即更新按钮 @@ -1105,253 +1269,7 @@ const Map esES = { 'updateErrorRetry': 'Ocurrió un error durante la actualización, inténtalo de nuevo más tarde', // 更新错误重试提示 - //国家列表 - "邮箱": "Email", - "中国": "China", - "美国": "Estados Unidos", - "加拿大": "Canadá", - "俄罗斯": "Rusia", - "英国": "Reino Unido", - "德国": "Alemania", - "意大利": "Italia", - "法国": "Francia", - "西班牙": "España", - "南非": "Sudáfrica", - "沙特阿拉伯": "Arabia Saudí", - "土耳其": "Turquía", - "日本": "Japón", - "韩国": "Corea del Sur", - "新加坡": "Singapur", - "马来西亚": "Malasia", - "泰国": "Tailandia", - "越南": "Vietnam", - "印度": "India", - "巴基斯坦": "Pakistán", - "菲律宾": "Filipinas", - "印度尼西亚": "Indonesia", - "阿联酋": "EAU", - "墨西哥": "México", - "巴西": "Brasil", - "阿根廷": "Argentina", - "澳大利亚": "Australia", - "新西兰": "Nueva Zelanda", - "中国香港": "Hong Kong", - "中国澳门": "Macao", - "中国台湾": "Taiwán", - "埃及": "Egipto", - "希腊": "Grecia", - "荷兰": "Países Bajos", - "比利时": "Bélgica", - "匈牙利": "Hungría", - "罗马尼亚": "Rumania", - "瑞士": "Suiza", - "奥地利": "Austria", - "丹麦": "Dinamarca", - "瑞典": "Suecia", - "挪威": "Noruega", - "波兰": "Polonia", - "秘鲁": "Perú", - "智利": "Chile", - "哥伦比亚": "Colombia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugal", - "卢森堡": "Luxemburgo", - "爱尔兰": "Irlanda", - "冰岛": "Islandia", - "阿尔巴尼亚": "Albania", - "马耳他": "Malta", - "塞浦路斯": "Chipre", - "芬兰": "Finlandia", - "保加利亚": "Bulgaria", - "立陶宛": "Lituania", - "拉脱维亚": "Letonia", - "爱沙尼亚": "Estonia", - "乌克兰": "Ucrania", - "塞尔维亚": "Serbia", - "克罗地亚": "Croacia", - "斯洛文尼亚": "Eslovenia", - "捷克": "República Checa", - "斯洛伐克": "Eslovaquia", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panamá", - "海地": "Haití", - "玻利维亚": "Bolivia", - "厄瓜多尔": "Ecuador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Marruecos", - "阿尔及利亚": "Argelia", - "突尼斯": "Túnez", - "尼日利亚": "Nigeria", - "加纳": "Ghana", - "埃塞俄比亚": "Etiopía", - "肯尼亚": "Kenia", - "坦桑尼亚": "Tanzania", - "乌干达": "Uganda", - "孟加拉国": "Bangladesh", - "以色列": "Israel", - "黎巴嫩": "Líbano", - "约旦": "Jordania", - "伊拉克": "Irak", - "科威特": "Kuwait", - "巴林": "Baréin", - "卡塔尔": "Catar", - "阿曼": "Omán", - "阿富汗": "Afganistán", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongolia", - "柬埔寨": "Camboya", - "老挝": "Laos", - "文莱": "Brunéi", - "东帝汶": "Timor Oriental", - "斐济": "Fiyi", - "所罗门群岛": "Islas Salomón", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Historial de traducción", - "enableRecording": "Habilitar grabación", - "viewAudioFiles": "Ver archivos de audio", - "headsetUser": "Usuario de auriculares", - "phoneUser": "Usuario de teléfono", - "selectSourceLanguage": "Seleccionar idioma origen", - "selectTargetLanguage": "Seleccionar idioma destino", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Sin historial de traducción", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Limpiar historial", - "clearHistoryConfirm": - "¿Estás seguro de que quieres limpiar todo el historial de traducción? Esta operación no se puede deshacer.", - "unknownLanguage": "Idioma desconocido", - "deleteSessionRecord": "Eliminar registro de sesión", - "deleteSessionConfirm": - "¿Estás seguro de que quieres eliminar todos los registros de traducción de esta sesión? Esta operación no se puede deshacer.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Traducir archivos de audio", - "noAudioFiles": "Sin archivos de audio", - "calculating": "Calculando...", - "playing": "Reproduciendo...", - "paused": "Pausado", - "clickToPlay": "Haz clic para reproducir", - "rename": "Renombrar", - "smartTranscription": "Transcripción inteligente", - "renameAudioFile": "Renombrar archivo de audio", - "enterNewFileName": "Ingresa nuevo nombre de archivo", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Registro original", - "recordSummary": "Resumen del registro", - "clickToGenerateSummary": - "Haz clic en el botón de abajo para generar resumen de sesión", - "summaryContent": "Contenido del resumen", - "copied": "Copiado", - "summaryCopiledToClipboard": "Resumen copiado al portapapeles", - "extractSummary": "Extraer resumen", - "summaryGenerated": "Resumen generado", - "generating": "Generando...", - "regenerate": "Regenerar", - "summaryTimeoutMessage": - "Solicitud de generación de resumen expirada, posiblemente debido a problema de red o sobrecarga del servidor.", - "deleteTranslationRecord": "Eliminar registro de traducción", - "deleteTranslationConfirm": - "¿Estás seguro de que quieres eliminar este registro de traducción? Esta operación no se puede deshacer.", - "originalText": "Texto original", - "translatedText": "Texto traducido", - "sessionSummary": "Resumen de sesión", - "cannotShare": "No se puede compartir", - "generateSummaryFirst": "Genera resumen primero", - "translationSessionRecord": "Registro de sesión de traducción", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Emparejamiento de dispositivo", "connectYourDeepSoundHeadset": "Conecta tus auriculares Voitrans", "bind": "Vincular", @@ -1360,14 +1278,11 @@ const Map esES = { "autoInputCode": "Entrada automática de código", "skipBinding": "Omitir vinculación", "rescan": "Volver a escanear", - "verifyingDevice": "Verificando dispositivo...", "confirmBinding": "Confirmar vinculación", "associatingDevice": "Asociando dispositivo...", "goToBluetoothSettings": "Ir a configuración de Bluetooth", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Listo para emparejar", "preparingPairingEnvironment": "Preparando entorno de emparejamiento...", "connectDeepSoundViaSystemBluetooth": @@ -1377,8 +1292,6 @@ const Map esES = { "waitingCompletePairing": "Espera por favor, completando emparejamiento...", "pairingSuccessRedirecting": "¡Emparejamiento exitoso! Redirigiendo a página principal...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Asegúrate de que el dispositivo conectado sea Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1391,19 +1304,12 @@ const Map esES = { "authorizationFailedCheckCode": "Fallo en la autorización, verifica si el código de autorización es correcto", "pairingFailedRetry": "Fallo en el emparejamiento, inténtalo de nuevo", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Habilita Bluetooth por favor', 'deviceDisconnected': 'Dispositivo desconectado', 'readyToStartPairing': 'Listo para iniciar emparejamiento', 'checkingEnvironment': 'Verificando entorno...', 'ensureHeadsetOnAndPairingMode': 'Asegúrate de que los auriculares estén encendidos y en modo de emparejamiento', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Estableciendo conexión segura...', 'needManualBindingAuthCode': 'Necesita código de autorización de vinculación manual...', @@ -1426,8 +1332,6 @@ const Map esES = { 'bleConnectionFailed': 'Fallo en la conexión BLE', 'deviceAuthorizationFailedCheckCode': 'Fallo en la autorización del dispositivo, verifica el código de autorización', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1440,7 +1344,18 @@ const Map esES = { 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Comentarios del usuario", 'feedbackInfo': 'Proporciona comentarios o sugerencias', 'feedbackDescription': 'Describe tu problema o sugerencia', @@ -1482,7 +1397,7 @@ const Map esES = { "removeEarbudsEnsureBattery": "Retira ambos auriculares y asegúrate de que la batería de ambos esté por encima del 20%", - // 音乐列表页面 + // 音乐模块 "noMusic": "Sin música", // 暂无音乐 "noPlayingMusic": "Sin música reproduciéndose", // 暂无播放音乐 "unknownSong": "Canción desconocida", // 未知歌曲 @@ -1530,22 +1445,122 @@ const Map esES = { "波斯语": "Persa", "斯瓦希里语": "Suajili", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "Email", + "中国": "China", + "美国": "Estados Unidos", + "加拿大": "Canadá", + "俄罗斯": "Rusia", + "英国": "Reino Unido", + "德国": "Alemania", + "意大利": "Italia", + "法国": "Francia", + "西班牙": "España", + "南非": "Sudáfrica", + "沙特阿拉伯": "Arabia Saudí", + "土耳其": "Turquía", + "日本": "Japón", + "韩国": "Corea del Sur", + "新加坡": "Singapur", + "马来西亚": "Malasia", + "泰国": "Tailandia", + "越南": "Vietnam", + "印度": "India", + "巴基斯坦": "Pakistán", + "菲律宾": "Filipinas", + "印度尼西亚": "Indonesia", + "阿联酋": "EAU", + "墨西哥": "México", + "巴西": "Brasil", + "阿根廷": "Argentina", + "澳大利亚": "Australia", + "新西兰": "Nueva Zelanda", + "中国香港": "Hong Kong", + "中国澳门": "Macao", + "中国台湾": "Taiwán", + "埃及": "Egipto", + "希腊": "Grecia", + "荷兰": "Países Bajos", + "比利时": "Bélgica", + "匈牙利": "Hungría", + "罗马尼亚": "Rumania", + "瑞士": "Suiza", + "奥地利": "Austria", + "丹麦": "Dinamarca", + "瑞典": "Suecia", + "挪威": "Noruega", + "波兰": "Polonia", + "秘鲁": "Perú", + "智利": "Chile", + "哥伦比亚": "Colombia", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portugal", + "卢森堡": "Luxemburgo", + "爱尔兰": "Irlanda", + "冰岛": "Islandia", + "阿尔巴尼亚": "Albania", + "马耳他": "Malta", + "塞浦路斯": "Chipre", + "芬兰": "Finlandia", + "保加利亚": "Bulgaria", + "立陶宛": "Lituania", + "拉脱维亚": "Letonia", + "爱沙尼亚": "Estonia", + "乌克兰": "Ucrania", + "塞尔维亚": "Serbia", + "克罗地亚": "Croacia", + "斯洛文尼亚": "Eslovenia", + "捷克": "República Checa", + "斯洛伐克": "Eslovaquia", + "危地马拉": "Guatemala", + "萨尔瓦多": "El Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nicaragua", + "哥斯达黎加": "Costa Rica", + "巴拿马": "Panamá", + "海地": "Haití", + "玻利维亚": "Bolivia", + "厄瓜多尔": "Ecuador", + "巴拉圭": "Paraguay", + "乌拉圭": "Uruguay", + "摩洛哥": "Marruecos", + "阿尔及利亚": "Argelia", + "突尼斯": "Túnez", + "尼日利亚": "Nigeria", + "加纳": "Ghana", + "埃塞俄比亚": "Etiopía", + "肯尼亚": "Kenia", + "坦桑尼亚": "Tanzania", + "乌干达": "Uganda", + "孟加拉国": "Bangladesh", + "以色列": "Israel", + "黎巴嫩": "Líbano", + "约旦": "Jordania", + "伊拉克": "Irak", + "科威特": "Kuwait", + "巴林": "Baréin", + "卡塔尔": "Catar", + "阿曼": "Omán", + "阿富汗": "Afganistán", + "斯里兰卡": "Sri Lanka", + "缅甸": "Myanmar", + "尼泊尔": "Nepal", + "蒙古": "Mongolia", + "柬埔寨": "Camboya", + "老挝": "Laos", + "文莱": "Brunéi", + "东帝汶": "Timor Oriental", + "斐济": "Fiyi", + "所罗门群岛": "Islas Salomón", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/et_ee.dart b/lib/core/translations/language/et_ee.dart index d411ab144..6462b3fea 100644 --- a/lib/core/translations/language/et_ee.dart +++ b/lib/core/translations/language/et_ee.dart @@ -1,4 +1,5 @@ const Map etEE = { + // 通用 'continue': 'Jätka', 'confirm': 'Kinnita', @@ -18,6 +19,11 @@ const Map etEE = { "unknownError": "Tundmatu viga", "asrConnectionFailed": "Ühendus kõnetuvastusteenusega ebaõnnestus. Kontrollige võrku või proovige hiljem uuesti.", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "Maailma ühendamine, heli tagant", @@ -28,7 +34,7 @@ const Map etEE = { "explore": "Avasta", "settings": "Seaded", - // 语言 + // 语言列表 "followingSystem": "Järgi süsteemi", "chinese": "Hiina", "english": "Inglise", @@ -72,7 +78,7 @@ const Map etEE = { "arabic": "Arabi", "persian": "Farsi", - // 登录页 + // 登录模块 "welcome": "Tere tulemast", "loginTips": "Logi sisse või registreeru telefoninumbri või e-mailiga", "accountNumber": "Telefoninumber või e-mail", @@ -100,13 +106,9 @@ const Map etEE = { "resendVerificationCode": "Saada kinnituskood uuesti", "login": "Logi sisse", "usePasswordLogin": "Kasuta parooli sisselogimist", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans avaldus", // Voitrans 声明 "welcomeToThisApp": "Tere tulemast Voitrans'i, loe hoolikalt", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ". Klõpsates 'Nõustun ja sisenen' näitad, et oled täielikult lugenud ja nõustunud ülaltoodud lepingutega. Klõpsates 'Ei nõustu' rakendus sulgub.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Ei nõustu", // 不同意 @@ -162,7 +164,7 @@ const Map etEE = { 'right': 'Parem', 'checkConnectionStatusFailed': 'Ühenduse oleku kontrollimine ebaõnnestus', -// 发现页 + // 发现页 "searchAi": "Otsi AI funktsioone...", "exploreSlogan": "Nutikad kõrvaklapid, lõputud võimalused", "exploreSlogan1": "Nutikas kaaslane, lõputud võimalused", @@ -186,6 +188,7 @@ const Map etEE = { "usageStats": "Kasutamise statistika", "usageStatsInfo": "Näita sovelluksen kasutamise statistikat", "scene": "Stsenaariumid", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", @@ -206,7 +209,6 @@ const Map etEE = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -223,7 +225,6 @@ const Map etEE = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - // 通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", @@ -232,88 +233,79 @@ const Map etEE = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', 'remaining': 'Remaining', 'featureDescription': 'Feature Description', - // AI 功能卡片 + 'paymentSuccess': 'Makse edukas', + 'paymentFailed': 'Makse ebaõnnestus', + 'gotIt': 'Selge', + 'paymentFailedTryAgain': 'Makse ebaõnnestus. Palun proovi uuesti.', + 'selectPaymentMethod': 'Vali makseviis', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'WeChat Pay tellimuse loomine ebaõnnestus', + 'alipayOrderCreateFailed': 'Alipay tellimuse loomine ebaõnnestus', + 'appleOrderCreateFailed': 'Apple tellimuse loomine ebaõnnestus', + 'googleOrderCreateFailed': 'Google tellimuse loomine ebaõnnestus', + 'paypalOrderCreateFailed': 'PayPal tellimuse loomine ebaõnnestus', + 'paymentException': 'Makse erand', + 'paymentLaunchFailed': 'Makse käivitamine ebaõnnestus', + 'paymentExceptionWithError': 'Makse erand: @error', + 'paymentProcessingCheckLater': 'Sinu tellimust töödeldakse. Palun kontrolli hiljem.', + 'paymentResultQueryException': 'Makse tulemuse päring ebaõnnestus: @error', + 'orderConfirmedQuotaRefreshed': 'Tellimus kinnitatud. Sinu kvoot on värskendatud.', + 'paymentCompletedConfirming': 'Makse sooritatud. Kinnitamine…', + 'paymentCancelled': 'Makse tühistatud', + 'paypalOpenedCompleteInBrowser': 'PayPal avatud. Palun vii makse lõpule brauseris.', + 'paypalOpenFailed': 'PayPal makseleht ei ava', + 'paymentTestTitle': 'Makse test', + 'paymentTestOrderInfo': 'Testtellimuse info', + 'paymentTestProductId': 'Toote ID', + 'paymentTestProductDescription': 'Toote kirjeldus', + 'paymentTestWechatDescription': 'WeChat Pay makse test', + 'paymentTestAlipayDescription': 'Alipay makse test', + 'paymentTestAmount': 'Summa', + 'paymentTestSelectAmount': 'Vali testisumma', + 'paying': 'Maksmine...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Makse olek', + 'errorInfoWithMessage': 'Viga: @message', + 'retest': 'Kordustest', + 'paymentTestInstructionsTitle': 'Juhised', + 'paymentTestInstructionsContent': '1. Vali testisumma (soovitatud: ¥0,01)\n2. Klõpsa maksenupul alustamiseks\n3. Vii makse lõpule makserakenduses\n4. Naase tulemuse kontrollimiseks', + 'startingWechatPayment': 'WeChat Pay käivitamine...', + 'startingAlipayPayment': 'Alipay käivitamine...', + 'wechatPaymentSuccess': 'WeChat Pay edukas!', + 'wechatPaymentFailed': 'WeChat Pay ebaõnnestus', + 'wechatPaymentLaunchFailed': 'WeChat Pay käivitamine ebaõnnestus', + 'cannotLaunchWechatPayment': 'WeChat Pay käivitamine ei õnnestu', + 'wechatPaymentException': 'WeChat Pay erand', + 'wechatPaymentTestCompleted': 'WeChat Pay test lõpetatud', + 'alipayPaymentSuccess': 'Alipay edukas!', + 'alipayPaymentFailed': 'Alipay ebaõnnestus', + 'alipayPaymentLaunchFailed': 'Alipay käivitamine ebaõnnestus', + 'cannotLaunchAlipayPayment': 'Alipay käivitamine ei õnnestu', + 'alipayPaymentException': 'Alipay erand', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": + 'Insufficient balance, please go to the corresponding recharge page to recharge.', + "recharge": 'Go to Recharge', + "aiMemberExpiredDesc": + 'AI membership expired, please go to the membership recharge page to renew.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', 'aiHeaderDesc2': @@ -336,7 +328,46 @@ const Map etEE = { 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Real-time Transcription', + 'sceneLexicon': 'Scenario Glossary', + 'subtitleDisplay': 'Subtitles', + 'transHeaderDesc1': + 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', + 'translateZhEn': 'Chinese-English translation', + 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', + 'multiLangTextTranslation': 'Multilingual text translation', + 'termOptimizationContextPreserve': + 'Terminology optimization and context preservation', + 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', + 'personalVocabularyMemory': 'Personal vocabulary memory', + 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', + 'colorHighContrast': 'High color contrast', + 'transDisclaimer': + 'Translation performance depends on microphone, network latency, and ambient noise.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Meeting Recording', + 'transcriptionAndSummary': 'Transcription & Summary', + 'keywordSearch': 'Keyword Search', + 'collaborationSharing': 'Collaboration & Sharing', + 'meetingHeaderDesc1': + 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'meetingHeaderDesc2': + 'Suitable for business meetings, class notes, and interview minutes.', + 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingSpeakerTagging': 'Speaker labeling', + 'meetingLongAudioTranscription': 'Long audio transcription', + 'meetingKeyPointSummary': 'Key point extraction', + 'meetingTopicNameSearch': 'Search by topic/name', + 'meetingTimelineJump': 'Timeline jump', + 'meetingExportSummary': 'Export minutes', + 'meetingMultiPlatformShare': 'Share across platforms', + 'meetingDisclaimer': + 'Use in quiet environments; performance depends on microphone and network.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', 'higherQuota': 'Higher usage quota', 'lowerUnitPrice': 'Lower unit price', @@ -352,7 +383,32 @@ const Map etEE = { 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Translation Basic 100', + 'trans_002_name': 'Translation Basic 500', + 'trans_003_name': 'Translation Basic 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': 'Includes 100 translations (voice/text).', + 'trans_002_desc': 'Includes 500 translations (voice/text).', + 'trans_003_desc': 'Includes 1000 translations (voice/text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "Jäta vahele", 'next': 'Next', 'sayLilyHint': 'Say "Lily Lily" to the mic', @@ -363,7 +419,6 @@ const Map etEE = { 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', 'confirmInput': 'Confirm Input', 'guideClickSendPrefix': 'Tap send, ', - // AI 引导步骤 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', 'guideWeatherInput': 'What’s the weather today?', 'guideWeatherSend': 'Lily will report the weather in real time', @@ -390,7 +445,7 @@ const Map etEE = { 'guideSmsSend': 'Lily will send the message', 'guideSmsEnd': 'Message sent—voice control is convenient', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Alusta koosolekut", 'edit': 'Muuda', 'delete': 'Kustuta', @@ -402,8 +457,6 @@ const Map etEE = { 'recordingDetails': 'Salvestuse üksikasjad', 'aiSummary': 'AI kokkuvõte', 'meetingTranscript': 'Koosoleku transkriptsioon', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -461,7 +514,6 @@ const Map etEE = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -470,6 +522,97 @@ const Map etEE = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': 'Loo', + 'templateDetails': 'Malli üksikasjad', + 'tag': 'Silt', + 'description': 'Kirjeldus', + 'template': 'Mall', + 'deleteTemplate': 'Kustuta mall', + 'deleteTemplateConfirm': 'Kas oled kindel, et soovid selle malli kustutada?', + 'editTemplate': 'Muuda malli', + 'createTemplate': 'Loo mall', + 'name': 'Nimi', + 'templateContentHint': 'Palun sisesta malli sisu! Vihje: Klõpsa ülaloleval AI nupul, et kiiresti genereerida malli sisu sisestatud nime ja kirjelduse põhjal', + 'inputNameHint': 'Palun sisesta nimi', + 'inputDescHint': 'Palun sisesta kirjeldus', + 'custom': 'Kohandatud', + 'pleaseEnter': 'Palun sisestage', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': + 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Salvesta mõttekaart', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'Ekspordi', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Rakenda selle kõneleja kõigile lõikudele', + 'summaryWillBeUpdatedAutomatically': + 'Kokkuvõtet uuendatakse automaatselt malli alusel', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -488,7 +631,7 @@ const Map etEE = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -524,8 +667,6 @@ const Map etEE = { 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -554,105 +695,26 @@ const Map etEE = { 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Rakenda selle kõneleja kõigile lõikudele', - 'summaryWillBeUpdatedAutomatically': - 'Kokkuvõtet uuendatakse automaatselt malli alusel', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': 'Analüüs ebaõnnestus, proovi hiljem uuesti', + 'transcriptionFailed': 'Transkriptsioon ebaõnnestus, proovi hiljem uuesti', + 'summaryFailed': 'Kokkuvõte ebaõnnestus, proovi hiljem uuesti', + 'summaryFailedShort': 'Kokkuvõte ebaõnnestus', + 'transcriptionFailedShort': 'Transkriptsioon ebaõnnestus', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Helipleier pole valmis, palun oota', + 'playFailed': 'Esitamine ebaõnnestus', + 'audioFileNotFound': 'Helifaili ei leitud', + 'fetchingAudio': 'Helifaili tõmbamine pilvest...', + 'playerLoadFailed': 'Helipleieri laadimine ebaõnnestus', // 设置页 "systemSettings": "Süsteemi seaded", @@ -704,26 +766,15 @@ const Map etEE = { "bleHeadsetFirmwareUpgrade": "BLE kõrvaklappide püsivara uuendus", "deviceManagement": "Seadmete haldamine", "manageConnectedDevices": "Halda ühendatud Bluetooth seadmeid", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Praegu viimane versioon {version}', 'checkUpdateFailed': 'Uuenduste kontrollimine ebaõnnestus', 'networkErrorRetry': 'Võrgu viga, proovi hiljem uuesti', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Reaalajas häälvestlus", "realtimeVoiceChatInfo": "Koge nutika häälinteraktsiooni funktsiooni (funktsiooni eelvaade)", "loading": "Laadimine...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -739,8 +790,7 @@ const Map etEE = { "Are you sure you want to unbind device \"{deviceName}\"?", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Tühjenda vestluse ajalugu", "online": "Võrgus", @@ -770,8 +820,9 @@ const Map etEE = { "swipeUpForMore": "Libista üles rohkema jaoks", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': 'Kui lubatud: AI-d ei katkesta sinu hääl rääkimise ajal ja see saab korraga käsitleda ainult ühte vestlusvooru. Uue vooru alustamiseks ütle lihtsalt äratussõna.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -783,7 +834,7 @@ const Map etEE = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Tere! Olen **Lily**, saan sind aidata:\n\n' '• Küsimustele vastamine ja info andmine\n\n' '• Reaalajas häältõlge\n\n' @@ -803,18 +854,17 @@ const Map etEE = { 'startVoiceInput': 'Alusta häälsisestust', 'startPhoneCallMode': 'Alusta telefonikõne režiimi, alusta häälsisestust', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Sisesta oma sõnum siia...', // 全屏编辑器输入提示 'characterCount': '{count} tähemärki', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopeeri', 'copySuccess': 'Edukalt kopeeritud', 'report': 'Teata', 'submitSuccess': 'Edukalt esitatud', 'submitFailed': 'Esitamine ebaõnnestus', 'reportSubmitted': 'Teade esitatud, töötleme selle võimalikult kiiresti', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Kahjulik/ohtlik', 'pornographicVulgar': 'Pornograafiline/vulgaarne', 'misleadingAttack': 'Eksitav rünnak', @@ -824,17 +874,14 @@ const Map etEE = { 'other': 'Muu', 'reportDescriptionHint': 'Tahame teada teate põhjust, võid kirjeldada probleemi, millega kokku puutusid.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'AI poolt genereeritud', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'Siin on mõned soovitatud muusikad:', 'playList': 'Esitusloend', 'moreMusic': 'Rohkem muusikat', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'kilomeetrit', // 公里单位 'meters': 'meetrit', // 米单位 'hours': 'tundi', // 小时单位 @@ -849,7 +896,7 @@ const Map etEE = { "bicycling": "Jalgrattasõit", "tsransit": "Ühistransport", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Ilma päring:', 'highest': 'Kõrgeim', 'lowest': 'Madalaim', @@ -877,18 +924,8 @@ const Map etEE = { "friday": "Reede", "saturday": "Laupäev", "sunday": "Pühapäev", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Päikeseline", "partlyCloudy": "Osaliselt pilves", "partlySunny": "Osaliselt päikeseline", @@ -909,7 +946,130 @@ const Map etEE = { "haze": "Vine", "strongWind": "Tugev tuul", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "Tõlke ajalugu", + "enableRecording": "Luba salvestamine", + "viewAudioFiles": "Vaata helifaile", + "headsetUser": "Kõrvaklappide kasutaja", + "phoneUser": "Telefoni kasutaja", + "selectSourceLanguage": "Vali lähtekeel", + "selectTargetLanguage": "Vali sihtkeel", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": + "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Tõlke ajalugu puudub", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "Tühjenda ajalugu", + "clearHistoryConfirm": + "Kas oled kindel, et tahad kogu tõlke ajaloo tühjendada? Seda toimingut ei saa tagasi võtta.", + "unknownLanguage": "Tundmatu keel", + "deleteSessionRecord": "Kustuta seansi kirje", + "deleteSessionConfirm": + "Kas oled kindel, et tahad kõik selle seansi tõlke kirjed kustutada? Seda toimingut ei saa tagasi võtta.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": + "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": + "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": + "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": + "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Tõlgi helifailid", + "noAudioFiles": "Helifaile pole", + "calculating": "Arvutamine...", + "playing": "Esitamine...", + "paused": "Peatatud", + "clickToPlay": "Klõpsa esitamiseks", + "rename": "Nimeta ümber", + "smartTranscription": "Nutikas transkriptsioon", + "renameAudioFile": "Nimeta helifail ümber", + "enterNewFileName": "Sisesta uus failinimi", + + // 翻译模块 - 翻译详情 + "originalRecord": "Algne kirje", + "recordSummary": "Kirje kokkuvõte", + "clickToGenerateSummary": + "Klõpsa alloleval nupul seansi kokkuvõtte genereerimiseks", + "summaryContent": "Kokkuvõtte sisu", + "copied": "Kopeeritud", + "summaryCopiledToClipboard": "Kokkuvõte kopeeritud lõikelauale", + "extractSummary": "Eralda kokkuvõte", + "summaryGenerated": "Kokkuvõte genereeritud", + "generating": "Genereerimine...", + "regenerate": "Genereeri uuesti", + "summaryTimeoutMessage": + "Kokkuvõtte genereerimise taotlus aegus, võimalik võrguprobleem või serveri ülekoormatus.", + "deleteTranslationRecord": "Kustuta tõlke kirje", + "deleteTranslationConfirm": + "Kas oled kindel, et tahad selle tõlke kirje kustutada? Seda toimingut ei saa tagasi võtta.", + "originalText": "Algne tekst", + "translatedText": "Tõlgitud tekst", + "sessionSummary": "Seansi kokkuvõte", + "cannotShare": "Ei saa jagada", + "generateSummaryFirst": "Genereeri esmalt kokkuvõte", + "translationSessionRecord": "Tõlke seansi kirje", + + // 个人资料模块 "editProfile": "Muuda isikuandmeid", "avatar": "Avatar", "nickname": "Hüüdnimi", @@ -925,8 +1085,6 @@ const Map etEE = { 'Kas oled kindel, et tahad oma konto jäädavalt kustutada? Seda toimingut ei saa tagasi võtta', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'Võrguühendus ebaõnnestus, kontrolli võrgu seadeid ja proovi uuesti', 'serverTemporarilyUnavailable': @@ -943,10 +1101,6 @@ const Map etEE = { 'Võrguühendus ebaõnnestus, kontrolli võrgu seadeid', 'serverInternalErrorRetryLater': 'Serveri sisemine viga, proovi hiljem uuesti', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Pildi tihendamine ebaõnnestus', 'avatarUpdateFailed': 'Avatari uuendamine ebaõnnestus', 'usernameCannotBeEmpty': 'Kasutajanimi ei saa olla tühi', @@ -957,8 +1111,6 @@ const Map etEE = { 'logoutFailedRetry': 'Väljalogimine ebaõnnestus, proovi uuesti', 'accountPermanentlyDeleted': 'Konto jäädavalt kustutatud', 'deleteAccountFailedRetry': 'Konto kustutamine ebaõnnestus, proovi uuesti', - - // 账号服务相关 'clearUserDataFailed': 'Kasutajaandmete tühjendamine ebaõnnestus', // 清理用户数据失败 'deleteUserDataFailed': 'Kasutajaandmete kustutamine ebaõnnestus', // 删除用户数据失败 'thirdPartyLogoutSuccess': @@ -973,7 +1125,12 @@ const Map etEE = { 'accountServiceInitialized': 'AccountService lähtestatud', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': + 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', 'getPermissionStatusFailed': 'Lubade oleku hankimine ebaõnnestus', 'communicationPermissions': 'Suhtluse load', 'bluetoothPermissions': 'Bluetooth Permissions', @@ -986,7 +1143,6 @@ const Map etEE = { 'phone': 'Telefon', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'Kalendri kirjutamine', @@ -1039,8 +1195,6 @@ const Map etEE = { 'permanentDenialText': 'Oled püsivalt keeldunud {permission} loast, mine rakenduse seadetesse selle lubamiseks', 'goToSettings': 'Mine seadetesse', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': @@ -1065,7 +1219,6 @@ const Map etEE = { 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', @@ -1075,8 +1228,6 @@ const Map etEE = { 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', 'storagePermissionPermanentDenial': 'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', - - //permission_util.dart 'permissionUtilNeed': 'Need ', 'permissionUtilPermission': ' Permission', 'permissionUtilRestricted': ' Permission Restricted', @@ -1084,7 +1235,20 @@ const Map etEE = { 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigeerimine käib', + 'native.notification.navigation.keepRunning': 'Navigeerimine, hoia rakendust avatuna', + 'native.notification.bleAgent.running': 'Hääleassistendi agent töötab', + 'native.notification.audioRecording.recording': 'Heli salvestamine, puuduta rakendusse naasmiseks', + 'native.notification.music.waiting': 'Ootab esitamist', + 'native.notification.music.previous': 'Eelmine', + 'native.notification.music.next': 'Järgmine', + 'native.notification.music.play': 'Esita', + 'native.notification.music.pause': 'Paus', + 'native.notification.qqMusic.playing': 'Muusika esitamine', + + // 版本更新 'newVersionFound': 'Leitud uus versioon', // 版本更新对话框标题 'remindLater': 'Tuleta hiljem meelde', // 稍后提醒按钮 'updateNow': 'Uuenda kohe', // 立即更新按钮 @@ -1095,253 +1259,7 @@ const Map etEE = { 'updateErrorRetry': 'Uuendamisel tekkis viga, proovi hiljem uuesti', // 更新错误重试提示 - //国家列表 - "邮箱": "E-mail", - "中国": "Hiina", - "美国": "USA", - "加拿大": "Kanada", - "俄罗斯": "Venemaa", - "英国": "Suurbritannia", - "德国": "Saksamaa", - "意大利": "Itaalia", - "法国": "Prantsusmaa", - "西班牙": "Hispaania", - "南非": "Lõuna-Aafrika", - "沙特阿拉伯": "Saudi Araabia", - "土耳其": "Türgi", - "日本": "Jaapan", - "韩国": "Lõuna-Korea", - "新加坡": "Singapur", - "马来西亚": "Malaisia", - "泰国": "Tai", - "越南": "Vietnam", - "印度": "India", - "巴基斯坦": "Pakistan", - "菲律宾": "Filipiinid", - "印度尼西亚": "Indoneesia", - "阿联酋": "AÜE", - "墨西哥": "Mehhiko", - "巴西": "Brasiilia", - "阿根廷": "Argentina", - "澳大利亚": "Austraalia", - "新西兰": "Uus-Meremaa", - "中国香港": "Hongkong", - "中国澳门": "Macau", - "中国台湾": "Taiwan", - "埃及": "Egiptus", - "希腊": "Kreeka", - "荷兰": "Holland", - "比利时": "Belgia", - "匈牙利": "Ungari", - "罗马尼亚": "Rumeenia", - "瑞士": "Šveits", - "奥地利": "Austria", - "丹麦": "Taani", - "瑞典": "Rootsi", - "挪威": "Norra", - "波兰": "Poola", - "秘鲁": "Peruu", - "智利": "Tšiili", - "哥伦比亚": "Colombia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugal", - "卢森堡": "Luksemburg", - "爱尔兰": "Iirimaa", - "冰岛": "Island", - "阿尔巴尼亚": "Albaania", - "马耳他": "Malta", - "塞浦路斯": "Küpros", - "芬兰": "Soome", - "保加利亚": "Bulgaaria", - "立陶宛": "Leedu", - "拉脱维亚": "Läti", - "爱沙尼亚": "Eesti", - "乌克兰": "Ukraina", - "塞尔维亚": "Serbia", - "克罗地亚": "Horvaatia", - "斯洛文尼亚": "Sloveenia", - "捷克": "Tšehhi", - "斯洛伐克": "Slovakkia", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Boliivia", - "厄瓜多尔": "Ecuador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Maroko", - "阿尔及利亚": "Alžeeria", - "突尼斯": "Tuneesia", - "尼日利亚": "Nigeeria", - "加纳": "Ghana", - "埃塞俄比亚": "Etioopia", - "肯尼亚": "Keenia", - "坦桑尼亚": "Tansaania", - "乌干达": "Uganda", - "孟加拉国": "Bangladesh", - "以色列": "Iisrael", - "黎巴嫩": "Liibanon", - "约旦": "Jordaania", - "伊拉克": "Iraak", - "科威特": "Kuveit", - "巴林": "Bahrein", - "卡塔尔": "Katar", - "阿曼": "Omaan", - "阿富汗": "Afganistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongoolia", - "柬埔寨": "Kambodža", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "Ida-Timor", - "斐济": "Fidži", - "所罗门群岛": "Saalomoni Saared", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Tõlke ajalugu", - "enableRecording": "Luba salvestamine", - "viewAudioFiles": "Vaata helifaile", - "headsetUser": "Kõrvaklappide kasutaja", - "phoneUser": "Telefoni kasutaja", - "selectSourceLanguage": "Vali lähtekeel", - "selectTargetLanguage": "Vali sihtkeel", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Tõlke ajalugu puudub", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Tühjenda ajalugu", - "clearHistoryConfirm": - "Kas oled kindel, et tahad kogu tõlke ajaloo tühjendada? Seda toimingut ei saa tagasi võtta.", - "unknownLanguage": "Tundmatu keel", - "deleteSessionRecord": "Kustuta seansi kirje", - "deleteSessionConfirm": - "Kas oled kindel, et tahad kõik selle seansi tõlke kirjed kustutada? Seda toimingut ei saa tagasi võtta.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Tõlgi helifailid", - "noAudioFiles": "Helifaile pole", - "calculating": "Arvutamine...", - "playing": "Esitamine...", - "paused": "Peatatud", - "clickToPlay": "Klõpsa esitamiseks", - "rename": "Nimeta ümber", - "smartTranscription": "Nutikas transkriptsioon", - "renameAudioFile": "Nimeta helifail ümber", - "enterNewFileName": "Sisesta uus failinimi", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Algne kirje", - "recordSummary": "Kirje kokkuvõte", - "clickToGenerateSummary": - "Klõpsa alloleval nupul seansi kokkuvõtte genereerimiseks", - "summaryContent": "Kokkuvõtte sisu", - "copied": "Kopeeritud", - "summaryCopiledToClipboard": "Kokkuvõte kopeeritud lõikelauale", - "extractSummary": "Eralda kokkuvõte", - "summaryGenerated": "Kokkuvõte genereeritud", - "generating": "Genereerimine...", - "regenerate": "Genereeri uuesti", - "summaryTimeoutMessage": - "Kokkuvõtte genereerimise taotlus aegus, võimalik võrguprobleem või serveri ülekoormatus.", - "deleteTranslationRecord": "Kustuta tõlke kirje", - "deleteTranslationConfirm": - "Kas oled kindel, et tahad selle tõlke kirje kustutada? Seda toimingut ei saa tagasi võtta.", - "originalText": "Algne tekst", - "translatedText": "Tõlgitud tekst", - "sessionSummary": "Seansi kokkuvõte", - "cannotShare": "Ei saa jagada", - "generateSummaryFirst": "Genereeri esmalt kokkuvõte", - "translationSessionRecord": "Tõlke seansi kirje", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Seadme sidumine", "connectYourDeepSoundHeadset": "Ühenda oma Voitrans kõrvaklapid", "bind": "Seo", @@ -1350,14 +1268,11 @@ const Map etEE = { "autoInputCode": "Automaatne koodi sisestus", "skipBinding": "Jäta sidumine vahele", "rescan": "Skaneeri uuesti", - "verifyingDevice": "Seadme kontrollimine...", "confirmBinding": "Kinnita sidumine", "associatingDevice": "Seadme seostamine...", "goToBluetoothSettings": "Mine Bluetooth seadetesse", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Valmis sidumiseks", "preparingPairingEnvironment": "Sidumiskeskkonna ettevalmistamine...", "connectDeepSoundViaSystemBluetooth": @@ -1366,8 +1281,6 @@ const Map etEE = { "establishingDeviceAssociation": "Seadme seose loomine...", "waitingCompletePairing": "Palun oota, sidumise lõpetamine...", "pairingSuccessRedirecting": "Sidumine õnnestus! Suunamine avalehele...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Veendu, et ühendatud seade on Voitrans", "deviceAlreadyBoundToOtherAccount": "See seade on juba seotud teise kontoga", "deviceAssociationFailed": "Seadme seostamine ebaõnnestus, proovi uuesti", @@ -1377,19 +1290,12 @@ const Map etEE = { "authorizationFailedCheckCode": "Autoriseerimine ebaõnnestus, kontrolli, kas autoriseerimiskood on õige", "pairingFailedRetry": "Sidumine ebaõnnestus, proovi uuesti", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Luba Bluetooth', 'deviceDisconnected': 'Seade lahti ühendatud', 'readyToStartPairing': 'Valmis sidumist alustama', 'checkingEnvironment': 'Keskkonna kontrollimine...', 'ensureHeadsetOnAndPairingMode': 'Veendu, et kõrvaklapid on sisse lülitatud ja sidumisrežiimis', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Turvalise ühenduse loomine...', 'needManualBindingAuthCode': 'Vajab käsitsi sidumise autoriseerimiskoodi...', 'pairingSuccessful': 'Sidumine õnnestus!', @@ -1410,8 +1316,6 @@ const Map etEE = { 'bleConnectionFailed': 'BLE ühendus ebaõnnestus', 'deviceAuthorizationFailedCheckCode': 'Seadme autoriseerimine ebaõnnestus, kontrolli autoriseerimiskoodi', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1424,7 +1328,18 @@ const Map etEE = { 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Kasutaja tagasiside", 'feedbackInfo': 'Anna tagasisidet või ettepanekuid', 'feedbackDescription': 'Kirjelda oma probleemi või ettepanekut', @@ -1465,7 +1380,7 @@ const Map etEE = { "removeEarbudsEnsureBattery": "Võta mõlemad kõrvaklapid välja ja veendu, et mõlema aku on üle 20%", - // 音乐列表页面 + // 音乐模块 "noMusic": "Muusikat pole", // 暂无音乐 "noPlayingMusic": "Muusikat ei esitata", // 暂无播放音乐 "unknownSong": "Tundmatu laul", // 未知歌曲 @@ -1513,22 +1428,122 @@ const Map etEE = { "波斯语": "Pärsia", "斯瓦希里语": "Suahiili", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "E-mail", + "中国": "Hiina", + "美国": "USA", + "加拿大": "Kanada", + "俄罗斯": "Venemaa", + "英国": "Suurbritannia", + "德国": "Saksamaa", + "意大利": "Itaalia", + "法国": "Prantsusmaa", + "西班牙": "Hispaania", + "南非": "Lõuna-Aafrika", + "沙特阿拉伯": "Saudi Araabia", + "土耳其": "Türgi", + "日本": "Jaapan", + "韩国": "Lõuna-Korea", + "新加坡": "Singapur", + "马来西亚": "Malaisia", + "泰国": "Tai", + "越南": "Vietnam", + "印度": "India", + "巴基斯坦": "Pakistan", + "菲律宾": "Filipiinid", + "印度尼西亚": "Indoneesia", + "阿联酋": "AÜE", + "墨西哥": "Mehhiko", + "巴西": "Brasiilia", + "阿根廷": "Argentina", + "澳大利亚": "Austraalia", + "新西兰": "Uus-Meremaa", + "中国香港": "Hongkong", + "中国澳门": "Macau", + "中国台湾": "Taiwan", + "埃及": "Egiptus", + "希腊": "Kreeka", + "荷兰": "Holland", + "比利时": "Belgia", + "匈牙利": "Ungari", + "罗马尼亚": "Rumeenia", + "瑞士": "Šveits", + "奥地利": "Austria", + "丹麦": "Taani", + "瑞典": "Rootsi", + "挪威": "Norra", + "波兰": "Poola", + "秘鲁": "Peruu", + "智利": "Tšiili", + "哥伦比亚": "Colombia", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portugal", + "卢森堡": "Luksemburg", + "爱尔兰": "Iirimaa", + "冰岛": "Island", + "阿尔巴尼亚": "Albaania", + "马耳他": "Malta", + "塞浦路斯": "Küpros", + "芬兰": "Soome", + "保加利亚": "Bulgaaria", + "立陶宛": "Leedu", + "拉脱维亚": "Läti", + "爱沙尼亚": "Eesti", + "乌克兰": "Ukraina", + "塞尔维亚": "Serbia", + "克罗地亚": "Horvaatia", + "斯洛文尼亚": "Sloveenia", + "捷克": "Tšehhi", + "斯洛伐克": "Slovakkia", + "危地马拉": "Guatemala", + "萨尔瓦多": "El Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nicaragua", + "哥斯达黎加": "Costa Rica", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Boliivia", + "厄瓜多尔": "Ecuador", + "巴拉圭": "Paraguay", + "乌拉圭": "Uruguay", + "摩洛哥": "Maroko", + "阿尔及利亚": "Alžeeria", + "突尼斯": "Tuneesia", + "尼日利亚": "Nigeeria", + "加纳": "Ghana", + "埃塞俄比亚": "Etioopia", + "肯尼亚": "Keenia", + "坦桑尼亚": "Tansaania", + "乌干达": "Uganda", + "孟加拉国": "Bangladesh", + "以色列": "Iisrael", + "黎巴嫩": "Liibanon", + "约旦": "Jordaania", + "伊拉克": "Iraak", + "科威特": "Kuveit", + "巴林": "Bahrein", + "卡塔尔": "Katar", + "阿曼": "Omaan", + "阿富汗": "Afganistan", + "斯里兰卡": "Sri Lanka", + "缅甸": "Myanmar", + "尼泊尔": "Nepal", + "蒙古": "Mongoolia", + "柬埔寨": "Kambodža", + "老挝": "Laos", + "文莱": "Brunei", + "东帝汶": "Ida-Timor", + "斐济": "Fidži", + "所罗门群岛": "Saalomoni Saared", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/fa_ir.dart b/lib/core/translations/language/fa_ir.dart index 6ecc6f7d0..6b3e318ad 100644 --- a/lib/core/translations/language/fa_ir.dart +++ b/lib/core/translations/language/fa_ir.dart @@ -1,4 +1,5 @@ const Map faIR = { + // 通用 'continue': 'ادامه', 'confirm': 'تأیید', @@ -18,6 +19,11 @@ const Map faIR = { "unknownError": "خطای ناشناخته", "asrConnectionFailed": "اتصال به سرویس تشخیص گفتار ناموفق بود. لطفاً شبکه را بررسی کرده و بعداً دوباره تلاش کنید.", + "justNow": "همین الان", + "minutesAgo": "@minutes دقیقه پیش", + "yesterday": "دیروز", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "دنیا را متصل کن، فراتر از صدا", @@ -28,7 +34,7 @@ const Map faIR = { "explore": "کاوش", "settings": "تنظیمات", - // 语言 + // 语言列表 "followingSystem": "پیروی از سیستم", "chinese": "چینی", "english": "انگلیسی", @@ -72,7 +78,7 @@ const Map faIR = { "arabic": "عربی", "persian": "فارسی", - // 登录页 + // 登录模块 "welcome": "خوش آمدید", "loginTips": "لطفاً با شماره تلفن یا ایمیل خود وارد شوید یا حساب کاربری ایجاد کنید", @@ -101,13 +107,9 @@ const Map faIR = { "resendVerificationCode": "ارسال مجدد کد تأیید", "login": "ورود", "usePasswordLogin": "ورود با رمز عبور", - - // 隐私政策弹窗 "loginDeclaration": "بیانیه Voitrans", // Voitrans 声明 "welcomeToThisApp": "به Voitrans خوش آمدید، لطفاً با دقت بخوانید ", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ". با کلیک بر روی «موافقم و وارد می‌شوم»، شما تأیید می‌کنید که توافق‌نامه‌های فوق را به طور کامل مطالعه کرده و با آن‌ها موافقت نموده‌اید. کلیک بر روی «مخالفم» منجر به خروج از برنامه خواهد شد.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "مخالفم", // 不同意 @@ -164,7 +166,7 @@ const Map faIR = { 'right': 'راست', 'checkConnectionStatusFailed': 'بررسی وضعیت اتصال ناموفق بود', -// 发现页 + // 发现页 "searchAi": "جستجوی ویژگی‌های هوش مصنوعی...", "exploreSlogan": "ایربادهای هوشمند، امکانات بی‌پایان", "exploreSlogan1": "همراه هوشمند، امکانات بی‌پایان", @@ -187,6 +189,7 @@ const Map faIR = { "usageStats": "استفاده از خدمات", "usageStatsInfo": "دیدن آمار مصرف سرویس‌ها", "scene": "سناریوها", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", @@ -207,7 +210,6 @@ const Map faIR = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -224,7 +226,6 @@ const Map faIR = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - // 通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", @@ -233,88 +234,79 @@ const Map faIR = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', 'remaining': 'Remaining', 'featureDescription': 'Feature Description', - // AI 功能卡片 + 'paymentSuccess': 'پرداخت موفق', + 'paymentFailed': 'پرداخت ناموفق', + 'gotIt': 'متوجه شدم', + 'paymentFailedTryAgain': 'پرداخت ناموفق بود. لطفاً دوباره تلاش کنید.', + 'selectPaymentMethod': 'روش پرداخت را انتخاب کنید', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'ایجاد سفارش WeChat Pay ناموفق بود', + 'alipayOrderCreateFailed': 'ایجاد سفارش Alipay ناموفق بود', + 'appleOrderCreateFailed': 'ایجاد سفارش Apple ناموفق بود', + 'googleOrderCreateFailed': 'ایجاد سفارش Google ناموفق بود', + 'paypalOrderCreateFailed': 'ایجاد سفارش PayPal ناموفق بود', + 'paymentException': 'استثنای پرداخت', + 'paymentLaunchFailed': 'راه‌اندازی پرداخت ناموفق بود', + 'paymentExceptionWithError': 'استثنای پرداخت: @error', + 'paymentProcessingCheckLater': 'سفارش شما در حال پردازش است. لطفاً بعداً بررسی کنید.', + 'paymentResultQueryException': 'استعلام نتیجه پرداخت ناموفق بود: @error', + 'orderConfirmedQuotaRefreshed': 'سفارش تأیید شد. سهمیه شما به‌روزرسانی شد.', + 'paymentCompletedConfirming': 'پرداخت انجام شد. در حال تأیید…', + 'paymentCancelled': 'پرداخت لغو شد', + 'paypalOpenedCompleteInBrowser': 'PayPal باز شد. لطفاً پرداخت را در مرورگر خود تکمیل کنید.', + 'paypalOpenFailed': 'امکان باز کردن صفحه پرداخت PayPal وجود ندارد', + 'paymentTestTitle': 'تست پرداخت', + 'paymentTestOrderInfo': 'اطلاعات سفارش آزمایشی', + 'paymentTestProductId': 'شناسه محصول', + 'paymentTestProductDescription': 'توضیحات محصول', + 'paymentTestWechatDescription': 'تست پرداخت WeChat Pay', + 'paymentTestAlipayDescription': 'تست پرداخت Alipay', + 'paymentTestAmount': 'مبلغ', + 'paymentTestSelectAmount': 'مبلغ آزمایشی را انتخاب کنید', + 'paying': 'در حال پرداخت...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'وضعیت پرداخت', + 'errorInfoWithMessage': 'خطا: @message', + 'retest': 'آزمایش مجدد', + 'paymentTestInstructionsTitle': 'راهنما', + 'paymentTestInstructionsContent': '1. یک مبلغ تست انتخاب کنید (پیشنهاد: ¥0.01)\n2. برای شروع روی دکمه پرداخت کلیک کنید\n3. پرداخت را در اپلیکیشن پرداخت تکمیل کنید\n4. برای بررسی نتیجه بازگردید', + 'startingWechatPayment': 'در حال راه‌اندازی WeChat Pay...', + 'startingAlipayPayment': 'در حال راه‌اندازی Alipay...', + 'wechatPaymentSuccess': 'WeChat Pay موفق بود!', + 'wechatPaymentFailed': 'WeChat Pay ناموفق بود', + 'wechatPaymentLaunchFailed': 'راه‌اندازی WeChat Pay ناموفق بود', + 'cannotLaunchWechatPayment': 'امکان راه‌اندازی WeChat Pay وجود ندارد', + 'wechatPaymentException': 'استثنای WeChat Pay', + 'wechatPaymentTestCompleted': 'تست WeChat Pay تکمیل شد', + 'alipayPaymentSuccess': 'Alipay موفق بود!', + 'alipayPaymentFailed': 'Alipay ناموفق بود', + 'alipayPaymentLaunchFailed': 'راه‌اندازی Alipay ناموفق بود', + 'cannotLaunchAlipayPayment': 'امکان راه‌اندازی Alipay وجود ندارد', + 'alipayPaymentException': 'استثنای Alipay', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": + 'Insufficient balance, please go to the corresponding recharge page to recharge.', + "recharge": 'Go to Recharge', + "aiMemberExpiredDesc": + 'AI membership expired, please go to the membership recharge page to renew.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', 'aiHeaderDesc2': @@ -337,7 +329,46 @@ const Map faIR = { 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Real-time Transcription', + 'sceneLexicon': 'Scenario Glossary', + 'subtitleDisplay': 'Subtitles', + 'transHeaderDesc1': + 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', + 'translateZhEn': 'Chinese-English translation', + 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', + 'multiLangTextTranslation': 'Multilingual text translation', + 'termOptimizationContextPreserve': + 'Terminology optimization and context preservation', + 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', + 'personalVocabularyMemory': 'Personal vocabulary memory', + 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', + 'colorHighContrast': 'High color contrast', + 'transDisclaimer': + 'Translation performance depends on microphone, network latency, and ambient noise.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Meeting Recording', + 'transcriptionAndSummary': 'Transcription & Summary', + 'keywordSearch': 'Keyword Search', + 'collaborationSharing': 'Collaboration & Sharing', + 'meetingHeaderDesc1': + 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'meetingHeaderDesc2': + 'Suitable for business meetings, class notes, and interview minutes.', + 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingSpeakerTagging': 'Speaker labeling', + 'meetingLongAudioTranscription': 'Long audio transcription', + 'meetingKeyPointSummary': 'Key point extraction', + 'meetingTopicNameSearch': 'Search by topic/name', + 'meetingTimelineJump': 'Timeline jump', + 'meetingExportSummary': 'Export minutes', + 'meetingMultiPlatformShare': 'Share across platforms', + 'meetingDisclaimer': + 'Use in quiet environments; performance depends on microphone and network.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', 'higherQuota': 'Higher usage quota', 'lowerUnitPrice': 'Lower unit price', @@ -353,7 +384,32 @@ const Map faIR = { 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Translation Basic 100', + 'trans_002_name': 'Translation Basic 500', + 'trans_003_name': 'Translation Basic 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': 'Includes 100 translations (voice/text).', + 'trans_002_desc': 'Includes 500 translations (voice/text).', + 'trans_003_desc': 'Includes 1000 translations (voice/text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "رد کردن", 'next': 'Next', 'sayLilyHint': 'Say "Lily Lily" to the mic', @@ -364,7 +420,6 @@ const Map faIR = { 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', 'confirmInput': 'Confirm Input', 'guideClickSendPrefix': 'Tap send, ', - // AI 引导步骤 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', 'guideWeatherInput': 'What’s the weather today?', 'guideWeatherSend': 'Lily will report the weather in real time', @@ -391,7 +446,7 @@ const Map faIR = { 'guideSmsSend': 'Lily will send the message', 'guideSmsEnd': 'Message sent—voice control is convenient', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "شروع جلسه", 'edit': 'ویرایش', 'delete': 'حذف', @@ -403,8 +458,6 @@ const Map faIR = { 'recordingDetails': 'جزئیات ضبط', 'aiSummary': 'خلاصه هوش مصنوعی', 'meetingTranscript': 'متن جلسه', - - // Meeting模块 - 导航和基础功能 'files': 'فایل‌ها', 'mine': 'مال من', 'connect': 'اتصال', @@ -464,7 +517,6 @@ const Map faIR = { 'summarizing': 'در حال خلاصه‌سازی...', 'analyzing': 'در حال تجزیه و تحلیل...', 'summaryComplete': 'خلاصه‌سازی کامل شد', - //'generating': '正在生成...', 'generate': 'ایجاد', 'overview': 'نمای کلی', 'transcription': 'متن', @@ -473,6 +525,97 @@ const Map faIR = { 'editSpeaker': 'ویرایش', 'nameSpeaker': 'نام‌گذاری گوینده', + // Meeting模块 - 转写与总结 + 'reSummarize': 'خلاصه‌سازی مجدد', + 'dateAndTime': 'تاریخ و زمان', + 'location': 'مکان', + 'attendees': 'شرکت‌کنندگان', + 'inputLocation': 'ورود مکان', + 'inputAttendees': 'ورود شرکت‌کنندگان', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'انتخاب الگوی خلاصه', + 'useThisTemplate': 'استفاده از این الگو', + 'lastUsed': 'آخرین استفاده‌شده', + 'create': 'ایجاد', + 'templateDetails': 'جزئیات قالب', + 'tag': 'برچسب', + 'description': 'توضیحات', + 'template': 'قالب', + 'deleteTemplate': 'حذف قالب', + 'deleteTemplateConfirm': 'آیا مطمئن هستید که می‌خواهید این قالب را حذف کنید؟', + 'editTemplate': 'ویرایش قالب', + 'createTemplate': 'ایجاد قالب', + 'name': 'نام', + 'templateContentHint': 'لطفاً محتوای قالب را وارد کنید! نکته: برای تولید سریع محتوای قالب بر اساس نام و توضیحاتی که وارد کرده‌اید، روی دکمه AI بالا کلیک کنید', + 'inputNameHint': 'لطفاً نام را وارد کنید', + 'inputDescHint': 'لطفاً توضیحات را وارد کنید', + 'custom': 'سفارشی', + 'pleaseEnter': 'لطفا وارد کنید', + 'viewAll': 'مشاهده همه', + 'recordingLanguage': 'زبان ضبط', + 'chineseSimplified': 'چینی ماندارین (ساده‌شده)', + 'meetingGenerateNow': 'اکنون ایجاد کن', + 'keyEventsAnalyzed': '{count} رویداد کلیدی تجزیه و تحلیل شد.', + 'aiAnalysisDesc': + 'تجزیه و تحلیل هوش مصنوعی رویدادهای کلیدی را در ضبط‌ها شناسایی می‌کند، به شما امکان می‌دهد رویدادهای مهم را برای ایجاد توسط هوش مصنوعی انتخاب کنید.', + + // Meeting模块 - 文件操作 + 'importing': 'در حال وارد کردن...', + 'batchImporting': 'در حال وارد کردن دسته‌ای...', + 'importingLocalRecordings': 'در حال وارد کردن ضبط‌های محلی...', + 'importFailed': 'وارد کردن فایل ناموفق بود: {filePath}, خطا: {error}', + 'importSuccess': '{count} ضبط محلی با موفقیت وارد شد', + 'importError': 'وارد کردن ناموفق بود: {error}', + 'pleaseSelectAudioFile': 'لطفاً فایل صوتی را انتخاب کنید', + 'shareAudio': 'اشتراک‌گذاری صدای جلسه', + 'shareComplete': 'اشتراک‌گذاری کامل شد!', + 'shareFailed': 'اشتراک‌گذاری ناموفق بود: {error}', + 'fileProcessingFailed': 'پردازش فایل ناموفق بود: {filePath}, خطا: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'ذخیره نقشه ذهنی', + 'shareMindMap': 'اشتراک‌گذاری نقشه ذهنی', + 'shareSuccess': 'اشتراک‌گذاری موفقیت‌آمیز بود', + + // Meeting模块 - AI问答 + 'askAI': 'از هوش مصنوعی بپرس...', + 'askAIPrompt': 'امروز چه کمکی می‌توانم به شما بکنم؟', + 'continueAsk': 'ادامه پرسش', + 'todoList': 'لیست کارها', + 'extractConclusion': 'استخراج نتیجه', + 'generateKeyIndicators': 'ایجاد شاخص‌های کلیدی', + + // Meeting模块 - 分享与导出 + 'shareLink': 'اشتراک‌گذاری پیوند', + 'copyTranscript': 'کپی متن', + 'copySummary': 'کپی خلاصه', + 'exportAudio': 'خروجی صدا', + 'exportTranscript': 'خروجی متن', + 'shareMeetingAudio': 'اشتراک‌گذاری صدای جلسه', + 'exportSummary': 'خروجی خلاصه', + 'exportAs': 'خروجی به عنوان', + 'exportingPDF': 'در حال خروجی گرفتن PDF...', + 'export': 'صادر کردن', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'اعمال روی همه پاراگراف‌های این گوینده', + 'summaryWillBeUpdatedAutomatically': + 'خلاصه بر اساس قالب به‌صورت خودکار به‌روزرسانی می‌شود', + 'nameCurrentSpeaker': 'نام‌گذاری گوینده فعلی', + 'recentlyUsedNames': 'نام‌های اخیراً استفاده‌شده', + 'applyToCurrentParagraph': 'اعمال به پاراگراف فعلی', + 'totalTime': 'زمان کل', + 'summarySpeakerWillBeUpdatedAutomatically': + 'گویندگان خلاصه به طور خودکار به‌روزرسانی خواهند شد', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'همگام‌سازی با ابر', + 'syncToCloudTip': + 'ضبط‌های خود را به طور خودکار با ابر همگام‌سازی کنید، می‌توانید از طریق هر برنامه VOITRANS یا وب VOITRANS (web.voitrans.com) ضبط‌ها را پخش، مدیریت و به اشتراک بگذارید.', + 'syncToVoitransApp': 'همگام‌سازی برنامه VOITRANS', + 'transcriptionRecord': 'سوابق متن', + // Meeting模块 - 我的页面 'transcriptionRecords': 'سوابق متن', 'templateCommunity': 'انجمن الگوها', @@ -492,7 +635,7 @@ const Map faIR = { 'دستگاه Voitrans را برای فعال‌سازی عضویت Starter متصل کنید', 'unlockNow': 'اکنون باز کنید', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'مقایسه', 'detailedInfo': 'اطلاعات دقیق', 'monthlyTranscriptionTime': 'زمان ماهانه تبدیل متن', @@ -528,8 +671,6 @@ const Map faIR = { 'به راحتی فایل‌های صوتی را از برنامه‌های محلی یا شخص ثالث مانند یادداشت‌های صوتی، Google Drive و غیره وارد کنید.', 'multipleExportFormatsDesc': 'ضبط‌های صوتی، متن تبدیل‌شده و خلاصه‌های خود را در فرمت‌های مختلف (TXT، PDF، JPEG) برای رفع نیازهای خود خروجی بگیرید.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'عضویت خود را ارتقا دهید', 'yearlySubscription': 'اشتراک سالانه', 'monthlySubscription': 'اشتراک ماهانه', @@ -559,105 +700,26 @@ const Map faIR = { 'بلافاصله پس از خرید فعال می‌شود، تا ۲ سال پس از فعال‌سازی معتبر است.', 'purchase': 'خرید', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'انتخاب الگوی خلاصه', - 'useThisTemplate': 'استفاده از این الگو', - 'lastUsed': 'آخرین استفاده‌شده', - 'viewAll': 'مشاهده همه', - 'recordingLanguage': 'زبان ضبط', - 'chineseSimplified': 'چینی ماندارین (ساده‌شده)', - 'meetingGenerateNow': 'اکنون ایجاد کن', - 'keyEventsAnalyzed': '{count} رویداد کلیدی تجزیه و تحلیل شد.', - 'aiAnalysisDesc': - 'تجزیه و تحلیل هوش مصنوعی رویدادهای کلیدی را در ضبط‌ها شناسایی می‌کند، به شما امکان می‌دهد رویدادهای مهم را برای ایجاد توسط هوش مصنوعی انتخاب کنید.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'در حال وارد کردن...', - 'batchImporting': 'در حال وارد کردن دسته‌ای...', - 'importingLocalRecordings': 'در حال وارد کردن ضبط‌های محلی...', - 'importFailed': 'وارد کردن فایل ناموفق بود: {filePath}, خطا: {error}', - 'importSuccess': '{count} ضبط محلی با موفقیت وارد شد', - 'importError': 'وارد کردن ناموفق بود: {error}', - 'pleaseSelectAudioFile': 'لطفاً فایل صوتی را انتخاب کنید', - 'shareAudio': 'اشتراک‌گذاری صدای جلسه', - 'shareComplete': 'اشتراک‌گذاری کامل شد!', - 'shareFailed': 'اشتراک‌گذاری ناموفق بود: {error}', - 'fileProcessingFailed': 'پردازش فایل ناموفق بود: {filePath}, خطا: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'زبان ناشناخته', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'ذخیره‌سازی', - 'meetingStoragePermissionExplanation': - 'ما به مجوزهای ذخیره‌سازی نیاز داریم تا شما بتوانید فایل‌های صوتی را انتخاب و آپلود کنید.', - 'meetingStoragePermissionPermanentDenial': - 'شناسایی شد که شما مجوز ذخیره‌سازی را برای همیشه رد کرده‌اید. برای ادامه استفاده از این ویژگی، لطفاً به تنظیمات برنامه بروید تا مجوز ذخیره‌سازی را به صورت دستی فعال کنید.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'اشتراک‌گذاری نقشه ذهنی', - 'shareSuccess': 'اشتراک‌گذاری موفقیت‌آمیز بود', - - // Meeting模块 - AI相关 - 'askAI': 'از هوش مصنوعی بپرس...', - 'askAIPrompt': 'امروز چه کمکی می‌توانم به شما بکنم؟', - 'continueAsk': 'ادامه پرسش', - 'todoList': 'لیست کارها', - 'extractConclusion': 'استخراج نتیجه', - 'generateKeyIndicators': 'ایجاد شاخص‌های کلیدی', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'خلاصه‌سازی مجدد', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'زبان ضبط', - // 'chinese': '中文普通话(简体)', 'cantonese': 'کانتونی', 'sichuan': 'گویش سیچوان', 'shanghai': 'گویش شانگهایی', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - // Meeting模块 - 分享相关 - 'shareLink': 'اشتراک‌گذاری پیوند', - 'copyTranscript': 'کپی متن', - 'copySummary': 'کپی خلاصه', - 'exportAudio': 'خروجی صدا', - 'exportTranscript': 'خروجی متن', - 'shareMeetingAudio': 'اشتراک‌گذاری صدای جلسه', - 'exportSummary': 'خروجی خلاصه', - 'exportAs': 'خروجی به عنوان', - 'exportingPDF': 'در حال خروجی گرفتن PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'اعمال روی همه پاراگراف‌های این گوینده', - 'summaryWillBeUpdatedAutomatically': - 'خلاصه بر اساس قالب به‌صورت خودکار به‌روزرسانی می‌شود', - 'nameCurrentSpeaker': 'نام‌گذاری گوینده فعلی', - 'recentlyUsedNames': 'نام‌های اخیراً استفاده‌شده', - 'applyToCurrentParagraph': 'اعمال به پاراگراف فعلی', - 'totalTime': 'زمان کل', - 'summarySpeakerWillBeUpdatedAutomatically': - 'گویندگان خلاصه به طور خودکار به‌روزرسانی خواهند شد', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'همگام‌سازی با ابر', - 'syncToCloudTip': - 'ضبط‌های خود را به طور خودکار با ابر همگام‌سازی کنید، می‌توانید از طریق هر برنامه VOITRANS یا وب VOITRANS (web.voitrans.com) ضبط‌ها را پخش، مدیریت و به اشتراک بگذارید.', - 'syncToVoitransApp': 'همگام‌سازی برنامه VOITRANS', - 'transcriptionRecord': 'سوابق متن', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'تاریخ و زمان', - 'location': 'مکان', - 'attendees': 'شرکت‌کنندگان', - 'inputLocation': 'ورود مکان', - 'inputAttendees': 'ورود شرکت‌کنندگان', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'زبان ناشناخته', + 'analysisFailed': 'تحلیل ناموفق بود، لطفاً بعداً دوباره تلاش کنید', + 'transcriptionFailed': 'رونویسی ناموفق بود، لطفاً بعداً دوباره تلاش کنید', + 'summaryFailed': 'خلاصه‌سازی ناموفق بود، لطفاً بعداً دوباره تلاش کنید', + 'summaryFailedShort': 'خلاصه‌سازی ناموفق', + 'transcriptionFailedShort': 'رونویسی ناموفق', + + // Meeting模块 - 播放器 + 'playerNotReady': 'پخش‌کننده صدا آماده نیست، لطفاً صبر کنید', + 'playFailed': 'پخش ناموفق بود', + 'audioFileNotFound': 'فایل صوتی یافت نشد', + 'fetchingAudio': 'در حال دریافت صدا از فضای ابری...', + 'playerLoadFailed': 'بارگذاری پخش‌کننده صدا ناموفق بود', // 设置页 "systemSettings": "تنظیمات سیستم", @@ -708,25 +770,14 @@ const Map faIR = { "bleHeadsetFirmwareUpgrade": "ارتقاء سفت‌افزار هدست BLE", "deviceManagement": "مدیریت دستگاه", "manageConnectedDevices": "مدیریت دستگاه‌های بلوتوث متصل", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'نسخه فعلی در حال حاضر آخرین نسخه {version} است', 'checkUpdateFailed': 'بررسی به‌روزرسانی ناموفق بود', 'networkErrorRetry': 'خطای شبکه، لطفاً بعداً دوباره تلاش کنید', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": 'چت صوتی همزمان', "realtimeVoiceChatInfo": 'تجربه ویژگی‌های تعامل صوتی هوشمند (پیش‌نمایش)', "loading": 'در حال بارگیری...', - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "دستگاه ناشناخته", "deviceTypeClassicBluetoothHeadset": "هدست بلوتوث کلاسیک", "deviceTypeBleBluetoothHeadset": "هدست بلوتوث BLE", @@ -742,8 +793,7 @@ const Map faIR = { "آیا مطمئن هستید که می‌خواهید اتصال دستگاه «{deviceName}» را لغو کنید؟", "confirmUnbindAction": "تأیید لغو اتصال", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "پاک کردن تاریخچه چت", "online": "آنلاین", @@ -773,8 +823,9 @@ const Map faIR = { "swipeUpForMore": "برای مشاهده بیشتر به بالا بکشید", "callingTool": "در حال کمک به شما هستم، لطفاً صبر کنید!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': 'وقتی فعال است: هوش مصنوعی هنگام صحبت کردن توسط صدای شما قطع نمی‌شود و فقط می‌تواند یک دور مکالمه را در هر بار پردازش کند. برای شروع دور جدید، کافی است کلمه بیدارسازی را بگویید.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "پخش موسیقی", // 来点音乐 "presetNavigation": "مسیریابی به", // 导航 "presetWeather": "آب و هوای امروز", // 今日天气 @@ -786,7 +837,7 @@ const Map faIR = { "todayNews": "اخبار امروز چیست؟", // 今日新闻 "nearbyFood": "چه غذاهای خوشمزه‌ای در این نزدیکی هست؟", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'سلام! من **شیائویان** هستم، می‌توانم به شما کمک کنم:\n\n' '• پاسخ به سوالات و ارائه اطلاعات\n\n' '• ترجمه صوتی همزمان\n\n' @@ -805,18 +856,17 @@ const Map faIR = { 'startVoiceInput': 'شروع ورودی صوتی', 'startPhoneCallMode': 'شروع حالت تماس تلفنی، شروع ورودی صوتی', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'پیام خود را اینجا تایپ کنید...', // 全屏编辑器输入提示 'characterCount': '{count} کاراکتر', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'کپی', 'copySuccess': 'کپی موفقیت‌آمیز بود', 'report': 'گزارش', 'submitSuccess': 'ارسال موفقیت‌آمیز بود', 'submitFailed': 'ارسال ناموفق بود', 'reportSubmitted': 'گزارش ارسال شد، در اسرع وقت آن را پردازش خواهیم کرد', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'مضر/ناامن', 'pornographicVulgar': 'مستهجن/ مبتذل', 'misleadingAttack': 'گمراه‌کننده/تهاجمی', @@ -826,17 +876,14 @@ const Map faIR = { 'other': 'دیگر', 'reportDescriptionHint': 'ما می‌خواهیم دلیل گزارش شما را بدانیم، می‌توانید مشکلی را که با آن مواجه شدید توصیف کنید.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'تولید شده توسط هوش مصنوعی', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'در اینجا چند موسیقی توصیه‌شده وجود دارد:', 'playList': 'لیست پخش', 'moreMusic': 'موسیقی بیشتر', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': ' کیلومتر', // 公里单位 'meters': ' متر', // 米单位 'hours': ' ساعت', // 小时单位 @@ -851,7 +898,7 @@ const Map faIR = { "bicycling": "دوچرخه‌سواری", "tsransit": "حمل و نقل عمومی", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'استعلام آب و هوا:', 'highest': 'حداکثر', 'lowest': 'حداقل', @@ -881,18 +928,8 @@ const Map faIR = { "friday": "جمعه", "saturday": "شنبه", "sunday": "یکشنبه", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "آفتابی", "partlyCloudy": "کمی ابری", "partlySunny": "نیمه آفتابی", @@ -913,7 +950,129 @@ const Map faIR = { "haze": "غبار", "strongWind": "باد شدید", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "ترجمه تصویر", + "textTranslation": "ترجمه متن", + + // 翻译模块 - 主页 + "translationHistory": "تاریخچه ترجمه", + "enableRecording": "فعال کردن ضبط", + "viewAudioFiles": "مشاهده فایل‌های صوتی", + "headsetUser": "کاربر هدست", + "phoneUser": "کاربر تلفن", + "selectSourceLanguage": "انتخاب زبان مبدأ", + "selectTargetLanguage": "انتخاب زبان مقصد", + "me": "من", + "counterPart": "طرف مقابل", + "bluetoothCallStateError": + "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "تشخیص خودکار", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "تاریخچه ترجمه وجود ندارد", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "پاک کردن تاریخچه", + "clearHistoryConfirm": + "آیا مطمئن هستید که می‌خواهید تمام تاریخچه ترجمه را پاک کنید؟ این عمل قابل بازگشت نیست.", + "unknownLanguage": "زبان ناشناخته", + "deleteSessionRecord": "حذف سابقه جلسه", + "deleteSessionConfirm": + "آیا مطمئن هستید که می‌خواهید تمام سوابق ترجمه این جلسه را حذف کنید؟ این عمل قابل بازگشت نیست.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": + "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": + "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": + "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": + "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "ترجمه فایل‌های صوتی", + "noAudioFiles": "فایل صوتی وجود ندارد", + "calculating": "در حال محاسبه...", + "playing": "در حال پخش...", + "paused": "متوقف شد", + "clickToPlay": "برای پخش کلیک کنید", + "rename": "تغییر نام", + "smartTranscription": "تبدیل متن هوشمند", + "renameAudioFile": "تغییر نام فایل صوتی", + "enterNewFileName": "لطفاً نام فایل جدید را وارد کنید", + + // 翻译模块 - 翻译详情 + "originalRecord": "سابقه اصلی", + "recordSummary": "خلاصه سابقه", + "clickToGenerateSummary": "برای ایجاد خلاصه جلسه، روی دکمه زیر کلیک کنید", + "summaryContent": "محتوای خلاصه", + "copied": "کپی شد", + "summaryCopiledToClipboard": "خلاصه در کلیپ‌بورد کپی شد", + "extractSummary": "استخراج خلاصه", + "summaryGenerated": "خلاصه ایجاد شد", + "generating": "در حال ایجاد...", + "regenerate": "ایجاد مجدد", + "summaryTimeoutMessage": + "درخواست ایجاد خلاصه به پایان رسید، احتمالاً به دلیل مشکلات شبکه یا مشغولی سرور.", + "deleteTranslationRecord": "حذف سابقه ترجمه", + "deleteTranslationConfirm": + "آیا مطمئن هستید که می‌خواهید این سابقه ترجمه را حذف کنید؟ این عمل قابل بازگشت نیست.", + "originalText": "متن اصلی", + "translatedText": "متن ترجمه‌شده", + "sessionSummary": "خلاصه جلسه", + "cannotShare": "نمی‌توان اشتراک‌گذاری کرد", + "generateSummaryFirst": "لطفاً ابتدا خلاصه را ایجاد کنید", + "translationSessionRecord": "سابقه جلسه ترجمه", + + // 个人资料模块 "editProfile": "ویرایش پروفایل", "avatar": "آواتار", "nickname": "نام مستعار", @@ -929,8 +1088,6 @@ const Map faIR = { 'آیا مطمئن هستید که می‌خواهید حساب خود را برای همیشه حذف کنید؟ این عمل قابل بازگشت نیست.', 'clean': 'پاک کردن حافظه پنهان', 'cleanTips': 'آیا مطمئن هستید که می‌خواهید حافظه پنهان شخصی را پاک کنید؟', - - // Profile 错误信息 'networkConnectionFailed': 'اتصال شبکه ناموفق بود، لطفاً تنظیمات شبکه را بررسی کرده و دوباره تلاش کنید', 'serverTemporarilyUnavailable': @@ -947,10 +1104,6 @@ const Map faIR = { 'اتصال شبکه ناموفق بود، لطفاً تنظیمات شبکه را بررسی کنید', 'serverInternalErrorRetryLater': 'خطای داخلی سرور، لطفاً بعداً دوباره تلاش کنید', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'فشرده‌سازی تصویر ناموفق بود', 'avatarUpdateFailed': 'به‌روزرسانی آواتار ناموفق بود', 'usernameCannotBeEmpty': 'نام کاربری نمی‌تواند خالی باشد', @@ -961,8 +1114,6 @@ const Map faIR = { 'logoutFailedRetry': 'خروج از حساب ناموفق بود، لطفاً دوباره تلاش کنید', 'accountPermanentlyDeleted': 'حساب برای همیشه حذف شد', 'deleteAccountFailedRetry': 'حذف حساب ناموفق بود، لطفاً دوباره تلاش کنید', - - // 账号服务相关 'clearUserDataFailed': 'پاک کردن داده‌های کاربر ناموفق بود', // 清理用户数据失败 'deleteUserDataFailed': 'حذف داده‌های کاربر ناموفق بود', // 删除用户数据失败 'thirdPartyLogoutSuccess': @@ -977,7 +1128,12 @@ const Map faIR = { 'accountServiceInitialized': 'AccountService آماده‌سازی شد', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'ذخیره‌سازی', + 'meetingStoragePermissionExplanation': + 'ما به مجوزهای ذخیره‌سازی نیاز داریم تا شما بتوانید فایل‌های صوتی را انتخاب و آپلود کنید.', + 'meetingStoragePermissionPermanentDenial': + 'شناسایی شد که شما مجوز ذخیره‌سازی را برای همیشه رد کرده‌اید. برای ادامه استفاده از این ویژگی، لطفاً به تنظیمات برنامه بروید تا مجوز ذخیره‌سازی را به صورت دستی فعال کنید.', 'getPermissionStatusFailed': 'دریافت وضعیت مجوز ناموفق بود', 'communicationPermissions': 'مجوزهای ارتباطی', 'bluetoothPermissions': 'مجوزهای بلوتوث', @@ -990,7 +1146,6 @@ const Map faIR = { 'phone': 'تلفن', 'sms': 'پیامک', 'contacts': 'مخاطبین', - //'bluetooth': '蓝牙', 'notification': 'اعلان', 'alarm': 'زنگ هشدار', 'calendarWrite': 'نوشتن در تقویم', @@ -1047,8 +1202,6 @@ const Map faIR = { 'permanentDenialText': 'شما مجوز {permission} را برای همیشه رد کرده‌اید، لطفاً برای فعال کردن آن به تنظیمات برنامه بروید', 'goToSettings': 'رفتن به تنظیمات', - - // 权限申请 'bluetoothScan': 'اسکن بلوتوث', 'bluetoothConnect': 'اتصال بلوتوث', 'bluetoothScanExplanation': @@ -1073,7 +1226,6 @@ const Map faIR = { 'شما مجوز اعلان را برای همیشه رد کرده‌اید، لطفاً برای فعال کردن آن به تنظیمات بروید.', 'locationPermissionPermanentDenial': 'شما مجوز موقعیت مکانی را برای همیشه رد کرده‌اید، لطفاً برای فعال کردن آن به تنظیمات بروید.', -//'microphonePermission': '录音', 'storagePermission': 'ذخیره‌سازی', 'microphonePermissionExplanation': 'ما برای ضبط محتوای صوتی به مجوز میکروفون نیاز داریم.', @@ -1083,8 +1235,6 @@ const Map faIR = { 'مجوز میکروفون برای همیشه رد شده است. برای ادامه استفاده از این ویژگی، لطفاً به تنظیمات برنامه بروید تا مجوز میکروفون را به صورت دستی فعال کنید.', 'storagePermissionPermanentDenial': 'مجوز ذخیره‌سازی برای همیشه رد شده است. برای ادامه استفاده از این ویژگی، لطفاً به تنظیمات برنامه بروید تا مجوز ذخیره‌سازی را به صورت دستی فعال کنید.', - - //permission_util.dart 'permissionUtilNeed': 'نیاز به مجوز ', 'permissionUtilPermission': ' ', 'permissionUtilRestricted': ' مجوز محدود شده است', @@ -1092,7 +1242,20 @@ const Map faIR = { 'این ویژگی در دستگاه فعلی در دسترس نیست یا محدود شده است، لطفاً تنظیمات دستگاه یا محدودیت‌های سیستم را بررسی کنید', 'permissionUtilConfirm': 'تأیید', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'مسیریابی در جریان است', + 'native.notification.navigation.keepRunning': 'در حال مسیریابی، اپلیکیشن را باز نگه دارید', + 'native.notification.bleAgent.running': 'دستیار صوتی در حال اجراست', + 'native.notification.audioRecording.recording': 'در حال ضبط صدا، برای بازگشت به اپلیکیشن ضربه بزنید', + 'native.notification.music.waiting': 'در انتظار پخش', + 'native.notification.music.previous': 'قبلی', + 'native.notification.music.next': 'بعدی', + 'native.notification.music.play': 'پخش', + 'native.notification.music.pause': 'توقف', + 'native.notification.qqMusic.playing': 'در حال پخش موسیقی', + + // 版本更新 'newVersionFound': 'نسخه جدید یافت شد', // 版本更新对话框标题 'remindLater': 'بعداً یادآوری کن', // 稍后提醒按钮 'updateNow': 'اکنون به‌روزرسانی کن', // 立即更新按钮 @@ -1103,252 +1266,7 @@ const Map faIR = { 'updateErrorRetry': 'خطا در طول به‌روزرسانی رخ داد، لطفاً بعداً دوباره تلاش کنید', // 更新错误重试提示 - //国家列表 - "邮箱": "ایمیل", - "中国": "چین", - "美国": "ایالات متحده", - "加拿大": "کانادا", - "俄罗斯": "روسیه", - "英国": "بریتانیا", - "德国": "آلمان", - "意大利": "ایتالیا", - "法国": "فرانسه", - "西班牙": "اسپانیا", - "南非": "آفریقای جنوبی", - "沙特阿拉伯": "عربستان سعودی", - "土耳其": "ترکیه", - "日本": "ژاپن", - "韩国": "کره جنوبی", - "新加坡": "سنگاپور", - "马来西亚": "مالزی", - "泰国": "تایلند", - "越南": "ویتنام", - "印度": "هند", - "巴基斯坦": "پاکستان", - "菲律宾": "فیلیپین", - "印度尼西亚": "اندونزی", - "阿联酋": "امارات متحده عربی", - "墨西哥": "مکزیک", - "巴西": "برزیل", - "阿根廷": "آرژانتین", - "澳大利亚": "استرالیا", - "新西兰": "نیوزیلند", - "中国香港": "هنگ کنگ، چین", - "中国澳门": "ماکائو، چین", - "中国台湾": "تایوان، چین", - "埃及": "مصر", - "希腊": "یونان", - "荷兰": "هلند", - "比利时": "بلژیک", - "匈牙利": "مجارستان", - "罗马尼亚": "رومانی", - "瑞士": "سوئیس", - "奥地利": "اتریش", - "丹麦": "دانمارک", - "瑞典": "سوئد", - "挪威": "نروژ", - "波兰": "لهستان", - "秘鲁": "پرو", - "智利": "شیلی", - "哥伦比亚": "کلمبیا", - "委内瑞拉": "ونزوئلا", - "葡萄牙": "پرتغال", - "卢森堡": "لوکزامبورگ", - "爱尔兰": "ایرلند", - "冰岛": "ایسلند", - "阿尔巴尼亚": "آلبانی", - "马耳他": "مالت", - "塞浦路斯": "قبرس", - "芬兰": "فنلاند", - "保加利亚": "بلغارستان", - "立陶宛": "لیتوانی", - "拉脱维亚": "لتونی", - "爱沙尼亚": "استونی", - "乌克兰": "اوکراین", - "塞尔维亚": "صربستان", - "克罗地亚": "کرواسی", - "斯洛文尼亚": "اسلوونی", - "捷克": "جمهوری چک", - "斯洛伐克": "اسلواکی", - "危地马拉": "گواتمالا", - "萨尔瓦多": "السالوادور", - "洪都拉斯": "هندوراس", - "尼加拉瓜": "نیکاراگوئه", - "哥斯达黎加": "کاستاریکا", - "巴拿马": "پاناما", - "海地": "هائیتی", - "玻利维亚": "بولیوی", - "厄瓜多尔": "اکوادور", - "巴拉圭": "پاراگوئه", - "乌拉圭": "اروگوئه", - "摩洛哥": "مراکش", - "阿尔及利亚": "الجزایر", - "突尼斯": "تونس", - "尼日利亚": "نیجریه", - "加纳": "غنا", - "埃塞俄比亚": "اتیوپی", - "肯尼亚": "کنیا", - "坦桑尼亚": "تانزانیا", - "乌干达": "اوگاندا", - "孟加拉国": "بنگلادش", - "以色列": "اسرائیل", - "黎巴嫩": "لبنان", - "约旦": "اردن", - "伊拉克": "عراق", - "科威特": "کویت", - "巴林": "بحرین", - "卡塔尔": "قطر", - "阿曼": "عمان", - "阿富汗": "افغانستان", - "斯里兰卡": "سریلانکا", - "缅甸": "میانمار", - "尼泊尔": "نپال", - "蒙古": "مغولستان", - "柬埔寨": "کامبوج", - "老挝": "لائوس", - "文莱": "برونئی", - "东帝汶": "تیمور شرقی", - "斐济": "فیجی", - "所罗门群岛": "جزایر سلیمان", - "刚果民主共和国": "جمهوری دموکراتیک کنگو", - "安哥拉": "آنگولا", - "苏丹": "سودان", - "马尔代夫": "مالدیو", - "不丹": "بوتان", - "摩纳哥": "موناکو", - "圣马力诺": "سان مارینو", - "牙买加": "جامائیکا", - "巴哈马": "باهاما", - "巴布亚新几内亚": "پاپوآ گینه نو", - "萨摩亚": "ساموآ", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "ترجمه تصویر", - "textTranslation": "ترجمه متن", - - // 翻译主页 (translation_view.dart) - "translationHistory": "تاریخچه ترجمه", - "enableRecording": "فعال کردن ضبط", - "viewAudioFiles": "مشاهده فایل‌های صوتی", - "headsetUser": "کاربر هدست", - "phoneUser": "کاربر تلفن", - "selectSourceLanguage": "انتخاب زبان مبدأ", - "selectTargetLanguage": "انتخاب زبان مقصد", - "me": "من", - "counterPart": "طرف مقابل", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "تشخیص خودکار", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "تاریخچه ترجمه وجود ندارد", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "پاک کردن تاریخچه", - "clearHistoryConfirm": - "آیا مطمئن هستید که می‌خواهید تمام تاریخچه ترجمه را پاک کنید؟ این عمل قابل بازگشت نیست.", - "unknownLanguage": "زبان ناشناخته", - "deleteSessionRecord": "حذف سابقه جلسه", - "deleteSessionConfirm": - "آیا مطمئن هستید که می‌خواهید تمام سوابق ترجمه این جلسه را حذف کنید؟ این عمل قابل بازگشت نیست.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "ترجمه فایل‌های صوتی", - "noAudioFiles": "فایل صوتی وجود ندارد", - "calculating": "در حال محاسبه...", - "playing": "در حال پخش...", - "paused": "متوقف شد", - "clickToPlay": "برای پخش کلیک کنید", - "rename": "تغییر نام", - "smartTranscription": "تبدیل متن هوشمند", - "renameAudioFile": "تغییر نام فایل صوتی", - "enterNewFileName": "لطفاً نام فایل جدید را وارد کنید", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "سابقه اصلی", - "recordSummary": "خلاصه سابقه", - "clickToGenerateSummary": "برای ایجاد خلاصه جلسه، روی دکمه زیر کلیک کنید", - "summaryContent": "محتوای خلاصه", - "copied": "کپی شد", - "summaryCopiledToClipboard": "خلاصه در کلیپ‌بورد کپی شد", - "extractSummary": "استخراج خلاصه", - "summaryGenerated": "خلاصه ایجاد شد", - "generating": "در حال ایجاد...", - "regenerate": "ایجاد مجدد", - "summaryTimeoutMessage": - "درخواست ایجاد خلاصه به پایان رسید، احتمالاً به دلیل مشکلات شبکه یا مشغولی سرور.", - "deleteTranslationRecord": "حذف سابقه ترجمه", - "deleteTranslationConfirm": - "آیا مطمئن هستید که می‌خواهید این سابقه ترجمه را حذف کنید؟ این عمل قابل بازگشت نیست.", - "originalText": "متن اصلی", - "translatedText": "متن ترجمه‌شده", - "sessionSummary": "خلاصه جلسه", - "cannotShare": "نمی‌توان اشتراک‌گذاری کرد", - "generateSummaryFirst": "لطفاً ابتدا خلاصه را ایجاد کنید", - "translationSessionRecord": "سابقه جلسه ترجمه", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "جفت‌سازی دستگاه", "connectYourDeepSoundHeadset": "هدست Voitrans خود را متصل کنید", "bind": "اتصال", @@ -1357,14 +1275,11 @@ const Map faIR = { "autoInputCode": "ورود خودکار کد", "skipBinding": "رد کردن اتصال", "rescan": "اسکن مجدد", - "verifyingDevice": "در حال تأیید دستگاه...", "confirmBinding": "تأیید اتصال", "associatingDevice": "در حال مرتبط‌سازی دستگاه...", "goToBluetoothSettings": "رفتن به تنظیمات بلوتوث", 'bluetooth': 'بلوتوث', - - // 配对状态文本 "readyToPair": "آماده برای جفت‌سازی", "preparingPairingEnvironment": "در حال آماده‌سازی محیط جفت‌سازی...", "connectDeepSoundViaSystemBluetooth": @@ -1374,8 +1289,6 @@ const Map faIR = { "waitingCompletePairing": "لطفاً صبر کنید، در حال تکمیل جفت‌سازی...", "pairingSuccessRedirecting": "جفت‌سازی موفقیت‌آمیز بود! در حال هدایت به صفحه اصلی...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "لطفاً اطمینان حاصل کنید که دستگاه متصل Voitrans است", "deviceAlreadyBoundToOtherAccount": @@ -1387,19 +1300,12 @@ const Map faIR = { "authorizationFailedCheckCode": "مجوز ناموفق بود، لطفاً کد مجوز را بررسی کنید", "pairingFailedRetry": "جفت‌سازی ناموفق بود، لطفاً دوباره تلاش کنید", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'لطفاً بلوتوث را فعال کنید', 'deviceDisconnected': 'دستگاه قطع شد', 'readyToStartPairing': 'آماده برای شروع جفت‌سازی', 'checkingEnvironment': 'در حال بررسی محیط...', 'ensureHeadsetOnAndPairingMode': 'لطفاً اطمینان حاصل کنید که هدست روشن و در حالت جفت‌سازی است', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'در حال برقراری اتصال امن...', 'needManualBindingAuthCode': 'کد مجوز اتصال دستی مورد نیاز است...', 'pairingSuccessful': 'جفت‌سازی موفقیت‌آمیز بود!', @@ -1421,8 +1327,6 @@ const Map faIR = { 'bleConnectionFailed': 'اتصال BLE ناموفق بود', 'deviceAuthorizationFailedCheckCode': 'مجوز دستگاه ناموفق بود، لطفاً کد مجوز را بررسی کنید', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'فعال‌سازی دستی بلوتوث مورد نیاز است', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'لطفاً این مراحل را دنبال کنید:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1435,7 +1339,18 @@ const Map faIR = { 'نکته: می‌توانید آیکون بلوتوث را در مرکز کنترل به مدت طولانی فشار دهید تا به سرعت به تنظیمات بلوتوث دسترسی پیدا کنید', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'متوجه شدم', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "بازخورد", 'feedbackInfo': 'ارائه بازخورد یا پیشنهادات', 'feedbackDescription': 'لطفاً مشکل یا پیشنهاد خود را توصیف کنید', @@ -1476,7 +1391,7 @@ const Map faIR = { "removeEarbudsEnsureBattery": "هر دو ایرباد را بردارید و اطمینان حاصل کنید که سطح باتری بالای ۲۰٪ است", - // 音乐列表页面 + // 音乐模块 "noMusic": "بدون موسیقی", // 暂无音乐 "noPlayingMusic": "موسیقی در حال پخش نیست", // 暂无播放音乐 "unknownSong": "آهنگ ناشناخته", // 未知歌曲 @@ -1524,22 +1439,122 @@ const Map faIR = { "波斯语": "فارسی", "斯瓦希里语": "سواحیلی", - // 时间相关 - "justNow": "همین الان", - "minutesAgo": "@minutes دقیقه پیش", - "yesterday": "دیروز", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "ایمیل", + "中国": "چین", + "美国": "ایالات متحده", + "加拿大": "کانادا", + "俄罗斯": "روسیه", + "英国": "بریتانیا", + "德国": "آلمان", + "意大利": "ایتالیا", + "法国": "فرانسه", + "西班牙": "اسپانیا", + "南非": "آفریقای جنوبی", + "沙特阿拉伯": "عربستان سعودی", + "土耳其": "ترکیه", + "日本": "ژاپن", + "韩国": "کره جنوبی", + "新加坡": "سنگاپور", + "马来西亚": "مالزی", + "泰国": "تایلند", + "越南": "ویتنام", + "印度": "هند", + "巴基斯坦": "پاکستان", + "菲律宾": "فیلیپین", + "印度尼西亚": "اندونزی", + "阿联酋": "امارات متحده عربی", + "墨西哥": "مکزیک", + "巴西": "برزیل", + "阿根廷": "آرژانتین", + "澳大利亚": "استرالیا", + "新西兰": "نیوزیلند", + "中国香港": "هنگ کنگ، چین", + "中国澳门": "ماکائو، چین", + "中国台湾": "تایوان، چین", + "埃及": "مصر", + "希腊": "یونان", + "荷兰": "هلند", + "比利时": "بلژیک", + "匈牙利": "مجارستان", + "罗马尼亚": "رومانی", + "瑞士": "سوئیس", + "奥地利": "اتریش", + "丹麦": "دانمارک", + "瑞典": "سوئد", + "挪威": "نروژ", + "波兰": "لهستان", + "秘鲁": "پرو", + "智利": "شیلی", + "哥伦比亚": "کلمبیا", + "委内瑞拉": "ونزوئلا", + "葡萄牙": "پرتغال", + "卢森堡": "لوکزامبورگ", + "爱尔兰": "ایرلند", + "冰岛": "ایسلند", + "阿尔巴尼亚": "آلبانی", + "马耳他": "مالت", + "塞浦路斯": "قبرس", + "芬兰": "فنلاند", + "保加利亚": "بلغارستان", + "立陶宛": "لیتوانی", + "拉脱维亚": "لتونی", + "爱沙尼亚": "استونی", + "乌克兰": "اوکراین", + "塞尔维亚": "صربستان", + "克罗地亚": "کرواسی", + "斯洛文尼亚": "اسلوونی", + "捷克": "جمهوری چک", + "斯洛伐克": "اسلواکی", + "危地马拉": "گواتمالا", + "萨尔瓦多": "السالوادور", + "洪都拉斯": "هندوراس", + "尼加拉瓜": "نیکاراگوئه", + "哥斯达黎加": "کاستاریکا", + "巴拿马": "پاناما", + "海地": "هائیتی", + "玻利维亚": "بولیوی", + "厄瓜多尔": "اکوادور", + "巴拉圭": "پاراگوئه", + "乌拉圭": "اروگوئه", + "摩洛哥": "مراکش", + "阿尔及利亚": "الجزایر", + "突尼斯": "تونس", + "尼日利亚": "نیجریه", + "加纳": "غنا", + "埃塞俄比亚": "اتیوپی", + "肯尼亚": "کنیا", + "坦桑尼亚": "تانزانیا", + "乌干达": "اوگاندا", + "孟加拉国": "بنگلادش", + "以色列": "اسرائیل", + "黎巴嫩": "لبنان", + "约旦": "اردن", + "伊拉克": "عراق", + "科威特": "کویت", + "巴林": "بحرین", + "卡塔尔": "قطر", + "阿曼": "عمان", + "阿富汗": "افغانستان", + "斯里兰卡": "سریلانکا", + "缅甸": "میانمار", + "尼泊尔": "نپال", + "蒙古": "مغولستان", + "柬埔寨": "کامبوج", + "老挝": "لائوس", + "文莱": "برونئی", + "东帝汶": "تیمور شرقی", + "斐济": "فیجی", + "所罗门群岛": "جزایر سلیمان", + "刚果民主共和国": "جمهوری دموکراتیک کنگو", + "安哥拉": "آنگولا", + "苏丹": "سودان", + "马尔代夫": "مالدیو", + "不丹": "بوتان", + "摩纳哥": "موناکو", + "圣马力诺": "سان مارینو", + "牙买加": "جامائیکا", + "巴哈马": "باهاما", + "巴布亚新几内亚": "پاپوآ گینه نو", + "萨摩亚": "ساموآ", }; diff --git a/lib/core/translations/language/fi_fi.dart b/lib/core/translations/language/fi_fi.dart index 5d2d5ea72..22d5e90a9 100644 --- a/lib/core/translations/language/fi_fi.dart +++ b/lib/core/translations/language/fi_fi.dart @@ -1,4 +1,5 @@ const Map fiFI = { + // 通用 'continue': 'Jatka', 'confirm': 'Vahvista', @@ -18,6 +19,11 @@ const Map fiFI = { "unknownError": "Tuntematon virhe", "asrConnectionFailed": "Yhteys puheentunnistuspalveluun epäonnistui. Tarkista verkkoyhteys tai yritä myöhemmin uudelleen.", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "Maailman yhdistäminen, äänen tuolla puolen", @@ -28,7 +34,7 @@ const Map fiFI = { "explore": "Tutustu", "settings": "Asetukset", - // 语言 + // 语言列表 "followingSystem": "Seuraa järjestelmää", "chinese": "Kiina", "english": "Englanti", @@ -72,7 +78,7 @@ const Map fiFI = { "arabic": "Arabia", "persian": "Farsi", - // 登录页 + // 登录模块 "welcome": "Tervetuloa", "loginTips": "Kirjaudu sisään tai rekisteröidy puhelinnumerollasi tai sähköpostillasi", @@ -101,13 +107,9 @@ const Map fiFI = { "resendVerificationCode": "Lähetä vahvistuskoodi uudelleen", "login": "Kirjaudu sisään", "usePasswordLogin": "Kirjaudu sisään salasanalla", - - // 隐私政策弹窗 "loginDeclaration": "Voitransin ilmoitus", // Voitrans 声明 "welcomeToThisApp": "Tervetuloa Voitransiin, lue huolellisesti", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", klikkaamalla 'Hyväksy ja siirry' vahvistat, että olet lukenut ja hyväksynyt yllä olevat sopimukset. Klikkaamalla 'Hylkää' poistut sovelluksesta.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Hylkää", // 不同意 @@ -167,7 +169,7 @@ const Map fiFI = { 'right': 'Oikea', 'checkConnectionStatusFailed': 'Yhteyden tilan tarkistus epäonnistui', -// 发现页 + // 发现页 "searchAi": "Etsi AI-toimintoja...", "exploreSlogan": "Älykkäät kuulokkeet, loputtomat mahdollisuudet", "exploreSlogan1": "Älykäs seuralainen, loputtomat mahdollisuudet", @@ -191,6 +193,7 @@ const Map fiFI = { "usageStats": "Käyttöstatistiikka", "usageStatsInfo": "Näytä sovelluksen käytön statistiikka", "scene": "Skenaario", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", @@ -211,7 +214,6 @@ const Map fiFI = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -228,7 +230,6 @@ const Map fiFI = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - // 通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", @@ -237,88 +238,79 @@ const Map fiFI = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', 'remaining': 'Remaining', 'featureDescription': 'Feature Description', - // AI 功能卡片 + 'paymentSuccess': 'Maksu onnistui', + 'paymentFailed': 'Maksu epäonnistui', + 'gotIt': 'Selvä', + 'paymentFailedTryAgain': 'Maksu epäonnistui. Yritä uudelleen.', + 'selectPaymentMethod': 'Valitse maksutapa', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'WeChat-tilauksen luonti epäonnistui', + 'alipayOrderCreateFailed': 'Alipay-tilauksen luonti epäonnistui', + 'appleOrderCreateFailed': 'Apple-tilauksen luonti epäonnistui', + 'googleOrderCreateFailed': 'Google-tilauksen luonti epäonnistui', + 'paypalOrderCreateFailed': 'PayPal-tilauksen luonti epäonnistui', + 'paymentException': 'Maksupoikkeus', + 'paymentLaunchFailed': 'Maksun käynnistys epäonnistui', + 'paymentExceptionWithError': 'Maksupoikkeus: @error', + 'paymentProcessingCheckLater': 'Tilaustasi käsitellään. Tarkista myöhemmin.', + 'paymentResultQueryException': 'Maksutuloksen haku epäonnistui: @error', + 'orderConfirmedQuotaRefreshed': 'Tilaus vahvistettu. Kiintiösi on päivitetty.', + 'paymentCompletedConfirming': 'Maksu suoritettu. Vahvistetaan…', + 'paymentCancelled': 'Maksu peruutettu', + 'paypalOpenedCompleteInBrowser': 'PayPal on avattu. Suorita maksu selaimessasi.', + 'paypalOpenFailed': 'PayPal-maksusivua ei voi avata', + 'paymentTestTitle': 'Maksutesti', + 'paymentTestOrderInfo': 'Testitilaustiedot', + 'paymentTestProductId': 'Tuotetunnus', + 'paymentTestProductDescription': 'Tuotekuvaus', + 'paymentTestWechatDescription': 'WeChat Pay -maksutesti', + 'paymentTestAlipayDescription': 'Alipay-maksutesti', + 'paymentTestAmount': 'Summa', + 'paymentTestSelectAmount': 'Valitse testisumma', + 'paying': 'Maksetaan...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Maksun tila', + 'errorInfoWithMessage': 'Virhe: @message', + 'retest': 'Testaa uudelleen', + 'paymentTestInstructionsTitle': 'Ohjeet', + 'paymentTestInstructionsContent': '1. Valitse testisumma (suositus: ¥0,01)\n2. Napsauta maksupainiketta aloittaaksesi\n3. Suorita maksu maksusovelluksessa\n4. Palaa tarkistamaan tulos', + 'startingWechatPayment': 'Käynnistetään WeChat Pay...', + 'startingAlipayPayment': 'Käynnistetään Alipay...', + 'wechatPaymentSuccess': 'WeChat Pay onnistui!', + 'wechatPaymentFailed': 'WeChat Pay epäonnistui', + 'wechatPaymentLaunchFailed': 'WeChat Pay -käynnistys epäonnistui', + 'cannotLaunchWechatPayment': 'WeChat Pay -maksua ei voi käynnistää', + 'wechatPaymentException': 'WeChat Pay -poikkeus', + 'wechatPaymentTestCompleted': 'WeChat Pay -testi suoritettu', + 'alipayPaymentSuccess': 'Alipay onnistui!', + 'alipayPaymentFailed': 'Alipay epäonnistui', + 'alipayPaymentLaunchFailed': 'Alipay-käynnistys epäonnistui', + 'cannotLaunchAlipayPayment': 'Alipay-maksua ei voi käynnistää', + 'alipayPaymentException': 'Alipay-poikkeus', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": + 'Insufficient balance, please go to the corresponding recharge page to recharge.', + "recharge": 'Go to Recharge', + "aiMemberExpiredDesc": + 'AI membership expired, please go to the membership recharge page to renew.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', 'aiHeaderDesc2': @@ -341,7 +333,46 @@ const Map fiFI = { 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Real-time Transcription', + 'sceneLexicon': 'Scenario Glossary', + 'subtitleDisplay': 'Subtitles', + 'transHeaderDesc1': + 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', + 'translateZhEn': 'Chinese-English translation', + 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', + 'multiLangTextTranslation': 'Multilingual text translation', + 'termOptimizationContextPreserve': + 'Terminology optimization and context preservation', + 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', + 'personalVocabularyMemory': 'Personal vocabulary memory', + 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', + 'colorHighContrast': 'High color contrast', + 'transDisclaimer': + 'Translation performance depends on microphone, network latency, and ambient noise.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Meeting Recording', + 'transcriptionAndSummary': 'Transcription & Summary', + 'keywordSearch': 'Keyword Search', + 'collaborationSharing': 'Collaboration & Sharing', + 'meetingHeaderDesc1': + 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'meetingHeaderDesc2': + 'Suitable for business meetings, class notes, and interview minutes.', + 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingSpeakerTagging': 'Speaker labeling', + 'meetingLongAudioTranscription': 'Long audio transcription', + 'meetingKeyPointSummary': 'Key point extraction', + 'meetingTopicNameSearch': 'Search by topic/name', + 'meetingTimelineJump': 'Timeline jump', + 'meetingExportSummary': 'Export minutes', + 'meetingMultiPlatformShare': 'Share across platforms', + 'meetingDisclaimer': + 'Use in quiet environments; performance depends on microphone and network.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', 'higherQuota': 'Higher usage quota', 'lowerUnitPrice': 'Lower unit price', @@ -357,7 +388,32 @@ const Map fiFI = { 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Translation Basic 100', + 'trans_002_name': 'Translation Basic 500', + 'trans_003_name': 'Translation Basic 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': 'Includes 100 translations (voice/text).', + 'trans_002_desc': 'Includes 500 translations (voice/text).', + 'trans_003_desc': 'Includes 1000 translations (voice/text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "Ohita", 'next': 'Next', 'sayLilyHint': 'Say "Lily Lily" to the mic', @@ -368,7 +424,6 @@ const Map fiFI = { 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', 'confirmInput': 'Confirm Input', 'guideClickSendPrefix': 'Tap send, ', - // AI 引导步骤 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', 'guideWeatherInput': 'What’s the weather today?', 'guideWeatherSend': 'Lily will report the weather in real time', @@ -395,7 +450,7 @@ const Map fiFI = { 'guideSmsSend': 'Lily will send the message', 'guideSmsEnd': 'Message sent—voice control is convenient', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Aloita kokous", 'edit': 'Muokkaa', 'delete': 'Poista', @@ -407,8 +462,6 @@ const Map fiFI = { 'recordingDetails': 'Tallenteen tiedot', 'aiSummary': 'AI-yhteenveto', 'meetingTranscript': 'Kokouksen transkriptio', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -459,7 +512,6 @@ const Map fiFI = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -468,6 +520,97 @@ const Map fiFI = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': 'Luo', + 'templateDetails': 'Mallin tiedot', + 'tag': 'Tunniste', + 'description': 'Kuvaus', + 'template': 'Malli', + 'deleteTemplate': 'Poista malli', + 'deleteTemplateConfirm': 'Haluatko varmasti poistaa tämän mallin?', + 'editTemplate': 'Muokkaa mallia', + 'createTemplate': 'Luo malli', + 'name': 'Nimi', + 'templateContentHint': 'Syötä mallin sisältö! Vinkki: Napsauta yllä olevaa AI-painiketta luodaksesi nopeasti mallin sisällön antamasi nimen ja kuvauksen perusteella', + 'inputNameHint': 'Syötä nimi', + 'inputDescHint': 'Syötä kuvaus', + 'custom': 'Mukautettu', + 'pleaseEnter': 'Ole hyvä ja syötä', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': + 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Tallenna miellekartta', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'Vie', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Käytä kaikkiin tämän puhujan kappaleisiin', + 'summaryWillBeUpdatedAutomatically': + 'Yhteenveto päivittyy automaattisesti mallin perusteella', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -486,7 +629,7 @@ const Map fiFI = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -522,8 +665,6 @@ const Map fiFI = { 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -552,105 +693,26 @@ const Map fiFI = { 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Käytä kaikkiin tämän puhujan kappaleisiin', - 'summaryWillBeUpdatedAutomatically': - 'Yhteenveto päivittyy automaattisesti mallin perusteella', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': 'Analyysi epäonnistui, yritä myöhemmin uudelleen', + 'transcriptionFailed': 'Litterointi epäonnistui, yritä myöhemmin uudelleen', + 'summaryFailed': 'Yhteenveto epäonnistui, yritä myöhemmin uudelleen', + 'summaryFailedShort': 'Yhteenveto epäonnistui', + 'transcriptionFailedShort': 'Litterointi epäonnistui', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Äänisoitin ei ole valmis, odota hetki', + 'playFailed': 'Toisto epäonnistui', + 'audioFileNotFound': 'Äänitiedostoa ei löytynyt', + 'fetchingAudio': 'Haetaan ääntä pilvestä...', + 'playerLoadFailed': 'Äänisoittimen lataus epäonnistui', // 设置页 "systemSettings": "Järjestelmäasetukset", @@ -704,26 +766,15 @@ const Map fiFI = { "BLE-kuulokkeiden laiteohjelmiston version päivitys", "deviceManagement": "Laitehallinta", "manageConnectedDevices": "Hallitse yhdistettyjä Bluetooth-laitteita", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Sinulla on jo uusin versio {version}', 'checkUpdateFailed': 'Päivitysten tarkistus epäonnistui', 'networkErrorRetry': 'Verkkovirhe, yritä myöhemmin uudelleen', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Reaaliaikainen puhekeskustelu", "realtimeVoiceChatInfo": "Koe älykäs puhevuorovaikutustoiminto (toiminnon esikatselu)", "loading": "Ladataan...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -739,8 +790,7 @@ const Map fiFI = { "Are you sure you want to unbind device \"{deviceName}\"?", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Tyhjennä keskusteluhistoria", "online": "Online", @@ -770,8 +820,9 @@ const Map fiFI = { "swipeUpForMore": "Pyyhkäise ylös nähdäksesi lisää", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': 'Kun käytössä: tekoäly ei keskeydy äänestäsi puhuessaan ja voi käsitellä vain yhden keskustelukierroksen kerrallaan. Aloita uusi kierros sanomalla herätyssana.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -783,7 +834,7 @@ const Map fiFI = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Hei! Olen **Lily**, voin auttaa sinua:\n\n' '• Vastaamaan kysymyksiin ja antamaan tietoa\n\n' '• Reaaliaikaisessa puhekäännöksessä\n\n' @@ -803,18 +854,17 @@ const Map fiFI = { 'startVoiceInput': 'Aloita puhesyöttö', 'startPhoneCallMode': 'Aloita puhelutila, aloita puhesyöttö', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Kirjoita viestisi tähän...', // 全屏编辑器输入提示 'characterCount': '{count} merkkiä', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopioi', 'copySuccess': 'Kopioitu onnistuneesti', 'report': 'Ilmoita', 'submitSuccess': 'Lähetetty onnistuneesti', 'submitFailed': 'Lähetys epäonnistui', 'reportSubmitted': 'Ilmoitus lähetetty, käsittelemme sen mahdollisimman pian', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Haitallinen/Turvaton', 'pornographicVulgar': 'Pornografinen/Mauton', 'misleadingAttack': 'Harhaanjohtava/Hyökkäys', @@ -824,17 +874,14 @@ const Map fiFI = { 'other': 'Muu', 'reportDescriptionHint': 'Haluamme tietää, miksi ilmoitat, voit kuvailla kohtaamaasi ongelmaa.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'AI:n luoma', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'Tässä on joitain suositeltuja kappaleita:', 'playList': 'Soittolista', 'moreMusic': 'Lisää musiikkia', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'tuntia', // 小时单位 @@ -849,7 +896,7 @@ const Map fiFI = { "bicycling": 'Pyörällä', "tsransit": 'Julkinen liikenne', - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Säätietojen kysely:', 'highest': 'Korkein', 'lowest': 'Matalin', @@ -877,18 +924,8 @@ const Map fiFI = { "friday": "Pe", "saturday": "La", "sunday": "Su", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Aurinkoinen", "partlyCloudy": "Puolipilvinen", "partlySunny": "Puoliaurinkoinen", @@ -909,7 +946,130 @@ const Map fiFI = { "haze": "Usva", "strongWind": "Voimakas tuuli", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "Käännöshistoria", + "enableRecording": "Ota tallennus käyttöön", + "viewAudioFiles": "Näytä äänitiedostot", + "headsetUser": "Kuulokkeiden käyttäjä", + "phoneUser": "Puhelimen käyttäjä", + "selectSourceLanguage": "Valitse lähdekieli", + "selectTargetLanguage": "Valitse kohdekieli", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": + "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Ei historiaa vielä", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "Tyhjennä historia", + "clearHistoryConfirm": + "Oletko varma, että haluat tyhjentää kaiken käännöshistorian? Tätä toimintoa ei voi kumota.", + "unknownLanguage": "Tuntematon kieli", + "deleteSessionRecord": "Poista istunnon tallenne", + "deleteSessionConfirm": + "Oletko varma, että haluat poistaa kaikki tämän istunnon käännöstallenteet? Tätä toimintoa ei voi kumota.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": + "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": + "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": + "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": + "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Käännä äänitiedostot", + "noAudioFiles": "Ei äänitiedostoja vielä", + "calculating": "Lasketaan...", + "playing": "Toistetaan...", + "paused": "Pysäytetty", + "clickToPlay": "Napsauta toistaaksesi", + "rename": "Nimeä uudelleen", + "smartTranscription": "Älykäs transkriptio", + "renameAudioFile": "Nimeä äänitiedosto uudelleen", + "enterNewFileName": "Anna uusi tiedostonimi", + + // 翻译模块 - 翻译详情 + "originalRecord": "Alkuperäinen tallenne", + "recordSummary": "Tallenteen yhteenveto", + "clickToGenerateSummary": + "Napsauta alla olevaa painiketta luodaksesi istunnon yhteenvedon", + "summaryContent": "Yhteenvedon sisältö", + "copied": "Kopioitu", + "summaryCopiledToClipboard": "Yhteenveto kopioitu leikepöydälle", + "extractSummary": "Pura yhteenveto", + "summaryGenerated": "Yhteenveto luotu", + "generating": "Luodaan...", + "regenerate": "Luo uudelleen", + "summaryTimeoutMessage": + "Yhteenvedon luontipyyntö aikakatkaistiin, syynä saattaa olla verkko-ongelma tai palvelimen ruuhkaisuus.", + "deleteTranslationRecord": "Poista käännöstallenne", + "deleteTranslationConfirm": + "Oletko varma, että haluat poistaa tämän käännöstallenteen? Tätä toimintoa ei voi kumota.", + "originalText": "Alkuperäinen teksti", + "translatedText": "Käännetty teksti", + "sessionSummary": "Istunnon yhteenveto", + "cannotShare": "Ei voi jakaa", + "generateSummaryFirst": "Luo ensin yhteenveto", + "translationSessionRecord": "Käännösistunnon tallenne", + + // 个人资料模块 "editProfile": "Muokkaa henkilötietoja", "avatar": "Avatar", "nickname": "Lempinimi", @@ -925,8 +1085,6 @@ const Map fiFI = { 'Oletko varma, että haluat poistaa tilisi pysyvästi? Tätä toimintoa ei voi kumota.', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'Verkkoyhteys epäonnistui, tarkista verkkoyhteyden asetukset ja yritä uudelleen', 'serverTemporarilyUnavailable': @@ -945,10 +1103,6 @@ const Map fiFI = { 'Verkkoyhteys epäonnistui, tarkista verkkoyhteyden asetukset', 'serverInternalErrorRetryLater': 'Sisäinen palvelinvirhe, yritä myöhemmin uudelleen', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Kuvan pakkaus epäonnistui', 'avatarUpdateFailed': 'Avatarin päivitys epäonnistui', 'usernameCannotBeEmpty': 'Käyttäjätunnus ei voi olla tyhjä', @@ -959,8 +1113,6 @@ const Map fiFI = { 'logoutFailedRetry': 'Uloskirjautuminen epäonnistui, yritä uudelleen', 'accountPermanentlyDeleted': 'Tili on poistettu pysyvästi', 'deleteAccountFailedRetry': 'Tilin poistaminen epäonnistui, yritä uudelleen', - - // 账号服务相关 'clearUserDataFailed': 'Käyttäjätietojen tyhjennys epäonnistui', // 清理用户数据失败 'deleteUserDataFailed': 'Käyttäjätietojen poisto epäonnistui', // 删除用户数据失败 'thirdPartyLogoutSuccess': @@ -978,7 +1130,12 @@ const Map fiFI = { 'accountServiceInitialized': 'Tili-palvelu on alustettu', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': + 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', 'getPermissionStatusFailed': 'Käyttöoikeuden tilan haku epäonnistui', 'communicationPermissions': 'Viestintäoikeudet', 'bluetoothPermissions': 'Bluetooth Permissions', @@ -991,7 +1148,6 @@ const Map fiFI = { 'phone': 'Puhelin', 'sms': 'Tekstiviesti', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'Kalenterin kirjoitus', @@ -1045,8 +1201,6 @@ const Map fiFI = { 'permanentDenialText': 'Olet pysyvästi kieltänyt {permission}-luvan, ota se käyttöön sovelluksen asetuksista', 'goToSettings': 'Siirry asetuksiin', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': @@ -1071,7 +1225,6 @@ const Map fiFI = { 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', @@ -1081,8 +1234,6 @@ const Map fiFI = { 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', 'storagePermissionPermanentDenial': 'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', - - //permission_util.dart 'permissionUtilNeed': 'Need ', 'permissionUtilPermission': ' Permission', 'permissionUtilRestricted': ' Permission Restricted', @@ -1090,7 +1241,20 @@ const Map fiFI = { 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigointi käynnissä', + 'native.notification.navigation.keepRunning': 'Navigoidaan, pidä sovellus käynnissä', + 'native.notification.bleAgent.running': 'Ääniavustaja on käynnissä', + 'native.notification.audioRecording.recording': 'Ääntä nauhoitetaan, napauta palataksesi sovellukseen', + 'native.notification.music.waiting': 'Odotetaan toistoa', + 'native.notification.music.previous': 'Edellinen', + 'native.notification.music.next': 'Seuraava', + 'native.notification.music.play': 'Toista', + 'native.notification.music.pause': 'Tauko', + 'native.notification.qqMusic.playing': 'Toistetaan musiikkia', + + // 版本更新 'newVersionFound': 'Uusi versio löytyi', // 版本更新对话框标题 'remindLater': 'Muistuta myöhemmin', // 稍后提醒按钮 'updateNow': 'Päivitä nyt', // 立即更新按钮 @@ -1101,253 +1265,7 @@ const Map fiFI = { 'updateErrorRetry': 'Päivityksen aikana tapahtui virhe, yritä myöhemmin uudelleen', // 更新错误重试提示 - //国家列表 - "邮箱": "Sähköposti", - "中国": "Kiina", - "美国": "Yhdysvallat", - "加拿大": "Kanada", - "俄罗斯": "Venäjä", - "英国": "Yhdistynyt kuningaskunta", - "德国": "Saksa", - "意大利": "Italia", - "法国": "Ranska", - "西班牙": "Espanja", - "南非": "Etelä-Afrikka", - "沙特阿拉伯": "Saudi-Arabia", - "土耳其": "Turkki", - "日本": "Japani", - "韩国": "Etelä-Korea", - "新加坡": "Singapore", - "马来西亚": "Malesia", - "泰国": "Thaimaa", - "越南": "Vietnam", - "印度": "Intia", - "巴基斯坦": "Pakistan", - "菲律宾": "Filippiinit", - "印度尼西亚": "Indonesia", - "阿联酋": "Yhdistyneet arabiemiirikunnat", - "墨西哥": "Meksiko", - "巴西": "Brasilia", - "阿根廷": "Argentiina", - "澳大利亚": "Australia", - "新西兰": "Uusi-Seelanti", - "中国香港": "Hongkong (Kiina)", - "中国澳门": "Macao (Kiina)", - "中国台湾": "Taiwan (Kiina)", - "埃及": "Egypti", - "希腊": "Kreikka", - "荷兰": "Alankomaat", - "比利时": "Belgia", - "匈牙利": "Unkari", - "罗马尼亚": "Romania", - "瑞士": "Sveitsi", - "奥地利": "Itävalta", - "丹麦": "Tanska", - "瑞典": "Ruotsi", - "挪威": "Norja", - "波兰": "Puola", - "秘鲁": "Peru", - "智利": "Chile", - "哥伦比亚": "Kolumbia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugali", - "卢森堡": "Luxemburg", - "爱尔兰": "Irlanti", - "冰岛": "Islanti", - "阿尔巴尼亚": "Albania", - "马耳他": "Malta", - "塞浦路斯": "Kypros", - "芬兰": "Suomi", - "保加利亚": "Bulgaria", - "立陶宛": "Liettua", - "拉脱维亚": "Latvia", - "爱沙尼亚": "Viro", - "乌克兰": "Ukraina", - "塞尔维亚": "Serbia", - "克罗地亚": "Kroatia", - "斯洛文尼亚": "Slovenia", - "捷克": "Tšekki", - "斯洛伐克": "Slovakia", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolivia", - "厄瓜多尔": "Ecuador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Marokko", - "阿尔及利亚": "Algeria", - "突尼斯": "Tunisia", - "尼日利亚": "Nigeria", - "加纳": "Ghana", - "埃塞俄比亚": "Etiopia", - "肯尼亚": "Kenia", - "坦桑尼亚": "Tansania", - "乌干达": "Uganda", - "孟加拉国": "Bangladesh", - "以色列": "Israel", - "黎巴嫩": "Libanon", - "约旦": "Jordania", - "伊拉克": "Irak", - "科威特": "Kuwait", - "巴林": "Bahrain", - "卡塔尔": "Qatar", - "阿曼": "Oman", - "阿富汗": "Afganistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongolia", - "柬埔寨": "Kambodža", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "Itä-Timor", - "斐济": "Fidži", - "所罗门群岛": "Salomonsaaret", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Käännöshistoria", - "enableRecording": "Ota tallennus käyttöön", - "viewAudioFiles": "Näytä äänitiedostot", - "headsetUser": "Kuulokkeiden käyttäjä", - "phoneUser": "Puhelimen käyttäjä", - "selectSourceLanguage": "Valitse lähdekieli", - "selectTargetLanguage": "Valitse kohdekieli", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Ei historiaa vielä", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Tyhjennä historia", - "clearHistoryConfirm": - "Oletko varma, että haluat tyhjentää kaiken käännöshistorian? Tätä toimintoa ei voi kumota.", - "unknownLanguage": "Tuntematon kieli", - "deleteSessionRecord": "Poista istunnon tallenne", - "deleteSessionConfirm": - "Oletko varma, että haluat poistaa kaikki tämän istunnon käännöstallenteet? Tätä toimintoa ei voi kumota.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Käännä äänitiedostot", - "noAudioFiles": "Ei äänitiedostoja vielä", - "calculating": "Lasketaan...", - "playing": "Toistetaan...", - "paused": "Pysäytetty", - "clickToPlay": "Napsauta toistaaksesi", - "rename": "Nimeä uudelleen", - "smartTranscription": "Älykäs transkriptio", - "renameAudioFile": "Nimeä äänitiedosto uudelleen", - "enterNewFileName": "Anna uusi tiedostonimi", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Alkuperäinen tallenne", - "recordSummary": "Tallenteen yhteenveto", - "clickToGenerateSummary": - "Napsauta alla olevaa painiketta luodaksesi istunnon yhteenvedon", - "summaryContent": "Yhteenvedon sisältö", - "copied": "Kopioitu", - "summaryCopiledToClipboard": "Yhteenveto kopioitu leikepöydälle", - "extractSummary": "Pura yhteenveto", - "summaryGenerated": "Yhteenveto luotu", - "generating": "Luodaan...", - "regenerate": "Luo uudelleen", - "summaryTimeoutMessage": - "Yhteenvedon luontipyyntö aikakatkaistiin, syynä saattaa olla verkko-ongelma tai palvelimen ruuhkaisuus.", - "deleteTranslationRecord": "Poista käännöstallenne", - "deleteTranslationConfirm": - "Oletko varma, että haluat poistaa tämän käännöstallenteen? Tätä toimintoa ei voi kumota.", - "originalText": "Alkuperäinen teksti", - "translatedText": "Käännetty teksti", - "sessionSummary": "Istunnon yhteenveto", - "cannotShare": "Ei voi jakaa", - "generateSummaryFirst": "Luo ensin yhteenveto", - "translationSessionRecord": "Käännösistunnon tallenne", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Laitteen paritus", "connectYourDeepSoundHeadset": "Yhdistä Voitrans-kuulokkeesi", "bind": "Sido", @@ -1356,14 +1274,11 @@ const Map fiFI = { "autoInputCode": "Syötä koodi automaattisesti", "skipBinding": "Ohita sidonta", "rescan": "Skannaa uudelleen", - "verifyingDevice": "Vahvistetaan laitetta...", "confirmBinding": "Vahvista sidonta", "associatingDevice": "Yhdistetään laitetta...", "goToBluetoothSettings": "Siirry Bluetooth-asetuksiin", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Valmis paritukseen", "preparingPairingEnvironment": "Valmistellaan paritusympäristöä...", "connectDeepSoundViaSystemBluetooth": @@ -1372,8 +1287,6 @@ const Map fiFI = { "establishingDeviceAssociation": "Luodaan laiteyhteyttä...", "waitingCompletePairing": "Odota, paritus on valmis...", "pairingSuccessRedirecting": "Paritus onnistui! Siirrytään etusivulle...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Varmista, että olet yhteydessä Voitrans-laitteeseen", "deviceAlreadyBoundToOtherAccount": "Tämä laite on jo sidottu toiseen tiliin", @@ -1385,19 +1298,12 @@ const Map fiFI = { "authorizationFailedCheckCode": "Valtuutus epäonnistui, tarkista, onko valtuutuskoodi oikein", "pairingFailedRetry": "Paritus epäonnistui, yritä uudelleen", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Ota Bluetooth käyttöön', 'deviceDisconnected': 'Laite irrotettu', 'readyToStartPairing': 'Valmis aloittamaan parituksen', 'checkingEnvironment': 'Tarkistetaan ympäristöä...', 'ensureHeadsetOnAndPairingMode': 'Varmista, että kuulokkeet ovat päällä ja paritustilassa', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Luodaan turvallista yhteyttä...', 'needManualBindingAuthCode': 'Manuaalinen sidontavaltuutuskoodi vaaditaan...', 'pairingSuccessful': 'Paritus onnistui!', @@ -1418,8 +1324,6 @@ const Map fiFI = { 'bleConnectionFailed': 'BLE-yhteys epäonnistui', 'deviceAuthorizationFailedCheckCode': 'Laitteen valtuutus epäonnistui, tarkista valtuutuskoodi', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1432,7 +1336,18 @@ const Map fiFI = { 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Käyttäjäpalaute", 'feedbackInfo': 'Anna palautetta tai ehdotuksia', 'feedbackDescription': 'Kuvaile kohtaamasi ongelma tai ehdotuksesi', @@ -1474,7 +1389,7 @@ const Map fiFI = { "removeEarbudsEnsureBattery": "Poista molemmat kuulokkeet ja varmista, että molempien akun varaus on yli 20%", - // 音乐列表页面 + // 音乐模块 "noMusic": "Ei musiikkia", // 暂无音乐 "noPlayingMusic": "Ei soitettavaa musiikkia", // 暂无播放音乐 "unknownSong": "Tuntematon kappale", // 未知歌曲 @@ -1522,22 +1437,122 @@ const Map fiFI = { "波斯语": "Persia", "斯瓦希里语": "Swahili", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "Sähköposti", + "中国": "Kiina", + "美国": "Yhdysvallat", + "加拿大": "Kanada", + "俄罗斯": "Venäjä", + "英国": "Yhdistynyt kuningaskunta", + "德国": "Saksa", + "意大利": "Italia", + "法国": "Ranska", + "西班牙": "Espanja", + "南非": "Etelä-Afrikka", + "沙特阿拉伯": "Saudi-Arabia", + "土耳其": "Turkki", + "日本": "Japani", + "韩国": "Etelä-Korea", + "新加坡": "Singapore", + "马来西亚": "Malesia", + "泰国": "Thaimaa", + "越南": "Vietnam", + "印度": "Intia", + "巴基斯坦": "Pakistan", + "菲律宾": "Filippiinit", + "印度尼西亚": "Indonesia", + "阿联酋": "Yhdistyneet arabiemiirikunnat", + "墨西哥": "Meksiko", + "巴西": "Brasilia", + "阿根廷": "Argentiina", + "澳大利亚": "Australia", + "新西兰": "Uusi-Seelanti", + "中国香港": "Hongkong (Kiina)", + "中国澳门": "Macao (Kiina)", + "中国台湾": "Taiwan (Kiina)", + "埃及": "Egypti", + "希腊": "Kreikka", + "荷兰": "Alankomaat", + "比利时": "Belgia", + "匈牙利": "Unkari", + "罗马尼亚": "Romania", + "瑞士": "Sveitsi", + "奥地利": "Itävalta", + "丹麦": "Tanska", + "瑞典": "Ruotsi", + "挪威": "Norja", + "波兰": "Puola", + "秘鲁": "Peru", + "智利": "Chile", + "哥伦比亚": "Kolumbia", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portugali", + "卢森堡": "Luxemburg", + "爱尔兰": "Irlanti", + "冰岛": "Islanti", + "阿尔巴尼亚": "Albania", + "马耳他": "Malta", + "塞浦路斯": "Kypros", + "芬兰": "Suomi", + "保加利亚": "Bulgaria", + "立陶宛": "Liettua", + "拉脱维亚": "Latvia", + "爱沙尼亚": "Viro", + "乌克兰": "Ukraina", + "塞尔维亚": "Serbia", + "克罗地亚": "Kroatia", + "斯洛文尼亚": "Slovenia", + "捷克": "Tšekki", + "斯洛伐克": "Slovakia", + "危地马拉": "Guatemala", + "萨尔瓦多": "El Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nicaragua", + "哥斯达黎加": "Costa Rica", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Bolivia", + "厄瓜多尔": "Ecuador", + "巴拉圭": "Paraguay", + "乌拉圭": "Uruguay", + "摩洛哥": "Marokko", + "阿尔及利亚": "Algeria", + "突尼斯": "Tunisia", + "尼日利亚": "Nigeria", + "加纳": "Ghana", + "埃塞俄比亚": "Etiopia", + "肯尼亚": "Kenia", + "坦桑尼亚": "Tansania", + "乌干达": "Uganda", + "孟加拉国": "Bangladesh", + "以色列": "Israel", + "黎巴嫩": "Libanon", + "约旦": "Jordania", + "伊拉克": "Irak", + "科威特": "Kuwait", + "巴林": "Bahrain", + "卡塔尔": "Qatar", + "阿曼": "Oman", + "阿富汗": "Afganistan", + "斯里兰卡": "Sri Lanka", + "缅甸": "Myanmar", + "尼泊尔": "Nepal", + "蒙古": "Mongolia", + "柬埔寨": "Kambodža", + "老挝": "Laos", + "文莱": "Brunei", + "东帝汶": "Itä-Timor", + "斐济": "Fidži", + "所罗门群岛": "Salomonsaaret", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/fr_fr.dart b/lib/core/translations/language/fr_fr.dart index dc7f680b2..66abdf03f 100644 --- a/lib/core/translations/language/fr_fr.dart +++ b/lib/core/translations/language/fr_fr.dart @@ -1,4 +1,5 @@ const Map frFR = { + // 通用 'continue': 'Continuer', 'confirm': 'Confirmer', @@ -18,6 +19,11 @@ const Map frFR = { "unknownError": "Erreur inconnue", "asrConnectionFailed": "La connexion au service de reconnaissance vocale a échoué. Vérifiez votre connexion réseau ou réessayez plus tard.", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "Connecter le monde, au-delà de la voix", @@ -28,7 +34,7 @@ const Map frFR = { "explore": "Explorer", "settings": "Paramètres", - // 语言 + // 语言列表 "followingSystem": "Suivre le système", "chinese": "Chinois", "english": "Anglais", @@ -72,7 +78,7 @@ const Map frFR = { "arabic": "Arabe", "persian": "Persan", - // 登录页 + // 登录模块 "welcome": "Bienvenue", "loginTips": "Veuillez vous connecter ou vous inscrire avec votre numéro de téléphone ou votre e-mail", @@ -102,13 +108,9 @@ const Map frFR = { "resendVerificationCode": "Renvoyer le code de vérification", "login": "Se connecter", "usePasswordLogin": "Utiliser la connexion par mot de passe", - - // 隐私政策弹窗 "loginDeclaration": "Déclaration Voitrans", // Voitrans 声明 "welcomeToThisApp": "Bienvenue sur Voitrans, veuillez lire attentivement", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ". En cliquant sur 'Accepter et entrer', vous indiquez que vous avez entièrement lu et accepté les accords ci-dessus. Cliquer sur 'Refuser' fermera l'application.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Refuser", // 不同意 @@ -170,7 +172,7 @@ const Map frFR = { 'checkConnectionStatusFailed': 'Échec de la vérification de l\'état de la connexion', -// 发现页 + // 发现页 "searchAi": "Rechercher des fonctions IA...", "exploreSlogan": "Écouteurs intelligents, possibilités infinies", "exploreSlogan1": "Compagnon intelligent, possibilités infinies", @@ -194,6 +196,7 @@ const Map frFR = { "usageStats": "Statistiques d'utilisation", "usageStatsInfo": "Consultez les statistiques d'utilisation de l'application", "scene": "Scénarios", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", @@ -214,7 +217,6 @@ const Map frFR = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -231,7 +233,6 @@ const Map frFR = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - // 通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", @@ -240,88 +241,79 @@ const Map frFR = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', 'remaining': 'Remaining', 'featureDescription': 'Feature Description', - // AI 功能卡片 + 'paymentSuccess': 'Paiement réussi', + 'paymentFailed': 'Échec du paiement', + 'gotIt': 'Compris', + 'paymentFailedTryAgain': 'Échec du paiement. Veuillez réessayer.', + 'selectPaymentMethod': 'Sélectionnez le mode de paiement', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Échec de la création de la commande WeChat', + 'alipayOrderCreateFailed': 'Échec de la création de la commande Alipay', + 'appleOrderCreateFailed': 'Échec de la création de la commande Apple', + 'googleOrderCreateFailed': 'Échec de la création de la commande Google', + 'paypalOrderCreateFailed': 'Échec de la création de la commande PayPal', + 'paymentException': 'Exception de paiement', + 'paymentLaunchFailed': 'Échec du lancement du paiement', + 'paymentExceptionWithError': 'Exception de paiement : @error', + 'paymentProcessingCheckLater': 'Votre commande est en cours de traitement. Veuillez vérifier plus tard.', + 'paymentResultQueryException': 'Échec de la requête du résultat de paiement : @error', + 'orderConfirmedQuotaRefreshed': 'Commande confirmée. Votre quota a été actualisé.', + 'paymentCompletedConfirming': 'Paiement effectué. Confirmation en cours…', + 'paymentCancelled': 'Paiement annulé', + 'paypalOpenedCompleteInBrowser': 'PayPal ouvert. Veuillez effectuer le paiement dans votre navigateur.', + 'paypalOpenFailed': "Impossible d'ouvrir la page de paiement PayPal", + 'paymentTestTitle': 'Test de paiement', + 'paymentTestOrderInfo': 'Informations de la commande de test', + 'paymentTestProductId': 'ID du produit', + 'paymentTestProductDescription': 'Description du produit', + 'paymentTestWechatDescription': 'Test de paiement WeChat Pay', + 'paymentTestAlipayDescription': 'Test de paiement Alipay', + 'paymentTestAmount': 'Montant', + 'paymentTestSelectAmount': 'Sélectionnez le montant du test', + 'paying': 'Paiement en cours...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Statut du paiement', + 'errorInfoWithMessage': 'Erreur : @message', + 'retest': 'Retester', + 'paymentTestInstructionsTitle': 'Instructions', + 'paymentTestInstructionsContent': "1. Sélectionnez un montant de test (recommandé : ¥0.01)\n2. Cliquez sur le bouton de paiement pour commencer\n3. Effectuez le paiement dans l'application de paiement\n4. Revenez vérifier le résultat", + 'startingWechatPayment': 'Lancement de WeChat Pay...', + 'startingAlipayPayment': "Lancement d'Alipay...", + 'wechatPaymentSuccess': 'Paiement WeChat Pay réussi !', + 'wechatPaymentFailed': 'Échec du paiement WeChat Pay', + 'wechatPaymentLaunchFailed': 'Échec du lancement de WeChat Pay', + 'cannotLaunchWechatPayment': 'Impossible de lancer WeChat Pay', + 'wechatPaymentException': 'Exception WeChat Pay', + 'wechatPaymentTestCompleted': 'Test de paiement WeChat Pay terminé', + 'alipayPaymentSuccess': 'Paiement Alipay réussi !', + 'alipayPaymentFailed': 'Échec du paiement Alipay', + 'alipayPaymentLaunchFailed': "Échec du lancement d'Alipay", + 'cannotLaunchAlipayPayment': 'Impossible de lancer Alipay', + 'alipayPaymentException': 'Exception Alipay', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": + 'Insufficient balance, please go to the corresponding recharge page to recharge.', + "recharge": 'Go to Recharge', + "aiMemberExpiredDesc": + 'AI membership expired, please go to the membership recharge page to renew.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', 'aiHeaderDesc2': @@ -344,7 +336,46 @@ const Map frFR = { 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Real-time Transcription', + 'sceneLexicon': 'Scenario Glossary', + 'subtitleDisplay': 'Subtitles', + 'transHeaderDesc1': + 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', + 'translateZhEn': 'Chinese-English translation', + 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', + 'multiLangTextTranslation': 'Multilingual text translation', + 'termOptimizationContextPreserve': + 'Terminology optimization and context preservation', + 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', + 'personalVocabularyMemory': 'Personal vocabulary memory', + 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', + 'colorHighContrast': 'High color contrast', + 'transDisclaimer': + 'Translation performance depends on microphone, network latency, and ambient noise.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Meeting Recording', + 'transcriptionAndSummary': 'Transcription & Summary', + 'keywordSearch': 'Keyword Search', + 'collaborationSharing': 'Collaboration & Sharing', + 'meetingHeaderDesc1': + 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'meetingHeaderDesc2': + 'Suitable for business meetings, class notes, and interview minutes.', + 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingSpeakerTagging': 'Speaker labeling', + 'meetingLongAudioTranscription': 'Long audio transcription', + 'meetingKeyPointSummary': 'Key point extraction', + 'meetingTopicNameSearch': 'Search by topic/name', + 'meetingTimelineJump': 'Timeline jump', + 'meetingExportSummary': 'Export minutes', + 'meetingMultiPlatformShare': 'Share across platforms', + 'meetingDisclaimer': + 'Use in quiet environments; performance depends on microphone and network.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', 'higherQuota': 'Higher usage quota', 'lowerUnitPrice': 'Lower unit price', @@ -360,7 +391,32 @@ const Map frFR = { 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Translation Basic 100', + 'trans_002_name': 'Translation Basic 500', + 'trans_003_name': 'Translation Basic 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': 'Includes 100 translations (voice/text).', + 'trans_002_desc': 'Includes 500 translations (voice/text).', + 'trans_003_desc': 'Includes 1000 translations (voice/text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "Ignorer", 'next': 'Next', 'sayLilyHint': "Say \"Lily Lily\" to the mic", @@ -371,7 +427,6 @@ const Map frFR = { 'guideAwakenSuccess': "Great! Lily is awake—ask it to help.", 'confirmInput': "Confirm Input", 'guideClickSendPrefix': "Tap send, ", - // AI 引导步骤 'guideWeatherStart': "Tell Lily: “What’s the weather today?”", 'guideWeatherInput': "What’s the weather today?", 'guideWeatherSend': "Lily will report the weather in real time", @@ -398,7 +453,7 @@ const Map frFR = { 'guideSmsSend': "Lily will send the message", 'guideSmsEnd': "Message sent—voice control is convenient", - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Démarrer la réunion", 'edit': 'Modifier', 'delete': 'Supprimer', @@ -410,8 +465,6 @@ const Map frFR = { 'recordingDetails': 'Détails de l\'enregistrement', 'aiSummary': 'Résumé IA', 'meetingTranscript': 'Transcription de la réunion', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -471,7 +524,6 @@ const Map frFR = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -480,6 +532,97 @@ const Map frFR = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': 'Créer', + 'templateDetails': 'Détails du modèle', + 'tag': 'Étiquette', + 'description': 'Description', + 'template': 'Modèle', + 'deleteTemplate': 'Supprimer le modèle', + 'deleteTemplateConfirm': 'Êtes-vous sûr de vouloir supprimer ce modèle ?', + 'editTemplate': 'Modifier le modèle', + 'createTemplate': 'Créer un modèle', + 'name': 'Nom', + 'templateContentHint': 'Veuillez saisir le contenu du modèle ! Astuce : Cliquez sur le bouton IA ci-dessus pour générer rapidement le contenu du modèle à partir du nom et de la description saisis', + 'inputNameHint': 'Veuillez saisir un nom', + 'inputDescHint': 'Veuillez saisir une description', + 'custom': 'Personnalisé', + 'pleaseEnter': 'Veuillez saisir', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': + 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Enregistrer la carte mentale', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'Exporter', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Appliquer à tous les paragraphes de cet intervenant', + 'summaryWillBeUpdatedAutomatically': + 'Le résumé sera mis à jour automatiquement selon le modèle', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -498,7 +641,7 @@ const Map frFR = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -534,8 +677,6 @@ const Map frFR = { 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -564,105 +705,26 @@ const Map frFR = { 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Appliquer à tous les paragraphes de cet intervenant', - 'summaryWillBeUpdatedAutomatically': - 'Le résumé sera mis à jour automatiquement selon le modèle', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': "Échec de l'analyse, veuillez réessayer plus tard", + 'transcriptionFailed': 'Échec de la transcription, veuillez réessayer plus tard', + 'summaryFailed': 'Échec du résumé, veuillez réessayer plus tard', + 'summaryFailedShort': 'Échec du résumé', + 'transcriptionFailedShort': 'Échec de la transcription', + + // Meeting模块 - 播放器 + 'playerNotReady': "Le lecteur audio n'est pas prêt, veuillez patienter", + 'playFailed': 'Échec de la lecture', + 'audioFileNotFound': 'Fichier audio introuvable', + 'fetchingAudio': "Récupération de l'audio depuis le cloud...", + 'playerLoadFailed': 'Échec du chargement du lecteur audio', // 设置页 "systemSettings": "Paramètres système", @@ -716,26 +778,15 @@ const Map frFR = { "bleHeadsetFirmwareUpgrade": "Mise à niveau du firmware des écouteurs BLE", "deviceManagement": "Gestion des appareils", "manageConnectedDevices": "Gérer les appareils Bluetooth connectés", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'La version actuelle est déjà la dernière {version}', 'checkUpdateFailed': 'Échec de la vérification de mise à jour', 'networkErrorRetry': 'Erreur réseau, veuillez réessayer plus tard', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": 'Conversation vocale en temps réel', "realtimeVoiceChatInfo": 'Découvrez les fonctions d\'interaction vocale intelligente (Aperçu)', "loading": 'Chargement...', - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -751,8 +802,7 @@ const Map frFR = { "Are you sure you want to unbind device \"{deviceName}\"?", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Effacer l'historique de chat", "online": "En ligne", @@ -783,8 +833,9 @@ const Map frFR = { "swipeUpForMore": "Glisser vers le haut pour plus", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': "Lorsque cette option est activée : l'IA ne sera pas interrompue par votre voix lorsqu'elle parle et ne pourra traiter qu'un seul tour de conversation à la fois. Pour commencer un nouveau tour, il suffit de prononcer le mot de réveil.", - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -796,7 +847,7 @@ const Map frFR = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Bonjour ! Je suis **Lily**, je peux vous aider avec :\n\n' '• Répondre aux questions et fournir des informations\n\n' '• Traduction vocale en temps réel\n\n' @@ -816,18 +867,17 @@ const Map frFR = { 'startVoiceInput': 'Démarrer la saisie vocale', 'startPhoneCallMode': 'Démarrer le mode appel, commencer la saisie vocale', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Saisissez votre message ici...', // 全屏编辑器输入提示 'characterCount': '{count} caractères', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Copier', 'copySuccess': 'Copié avec succès', 'report': 'Signaler', 'submitSuccess': 'Soumis avec succès', 'submitFailed': 'Échec de la soumission', 'reportSubmitted': 'Signalement soumis, nous le traiterons dès que possible', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Nuisible/Dangereux', 'pornographicVulgar': 'Pornographique/Vulgaire', 'misleadingAttack': 'Trompeur/Attaque', @@ -838,17 +888,14 @@ const Map frFR = { 'other': 'Autre', 'reportDescriptionHint': 'Nous aimerions connaître la raison de votre signalement, vous pouvez décrire le problème que vous avez rencontré.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Généré par IA', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'Voici quelques musiques recommandées :', 'playList': 'Liste de lecture', 'moreMusic': 'Plus de musique', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'heures', // 小时单位 @@ -863,7 +910,7 @@ const Map frFR = { "bicycling": "Vélo", "tsransit": "Transit", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Requête météo :', 'highest': 'Maximum', 'lowest': 'Minimum', @@ -893,18 +940,8 @@ const Map frFR = { "friday": "Ven", "saturday": "Sam", "sunday": "Dim", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Ensoleillé", "partlyCloudy": "Partiellement nuageux", "partlySunny": "Partiellement ensoleillé", @@ -925,7 +962,130 @@ const Map frFR = { "haze": "Brume", "strongWind": "Vent fort", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "Historique de traduction", + "enableRecording": "Activer l'enregistrement", + "viewAudioFiles": "Voir les fichiers audio", + "headsetUser": "Utilisateur d'écouteurs", + "phoneUser": "Utilisateur de téléphone", + "selectSourceLanguage": "Sélectionner la langue source", + "selectTargetLanguage": "Sélectionner la langue cible", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": + "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Aucun historique de traduction", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "Effacer l'historique", + "clearHistoryConfirm": + "Êtes-vous sûr de vouloir effacer tout l'historique de traduction ? Cette action ne peut pas être annulée.", + "unknownLanguage": "Langue inconnue", + "deleteSessionRecord": "Supprimer l'enregistrement de session", + "deleteSessionConfirm": + "Êtes-vous sûr de vouloir supprimer tous les enregistrements de traduction pour cette session ? Cette action ne peut pas être annulée.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": + "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": + "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": + "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": + "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Traduire les fichiers audio", + "noAudioFiles": "Aucun fichier audio", + "calculating": "Calcul en cours...", + "playing": "Lecture en cours...", + "paused": "En pause", + "clickToPlay": "Cliquer pour lire", + "rename": "Renommer", + "smartTranscription": "Transcription intelligente", + "renameAudioFile": "Renommer le fichier audio", + "enterNewFileName": "Veuillez saisir le nouveau nom de fichier", + + // 翻译模块 - 翻译详情 + "originalRecord": "Enregistrement original", + "recordSummary": "Résumé de l'enregistrement", + "clickToGenerateSummary": + "Cliquez sur le bouton ci-dessous pour générer un résumé de session", + "summaryContent": "Contenu du résumé", + "copied": "Copié", + "summaryCopiledToClipboard": "Résumé copié dans le presse-papiers", + "extractSummary": "Extraire le résumé", + "summaryGenerated": "Résumé généré", + "generating": "Génération en cours...", + "regenerate": "Régénérer", + "summaryTimeoutMessage": + "La demande de génération de résumé a expiré, possiblement due à des problèmes de réseau ou à une surcharge du serveur.", + "deleteTranslationRecord": "Supprimer l'enregistrement de traduction", + "deleteTranslationConfirm": + "Êtes-vous sûr de vouloir supprimer cet enregistrement de traduction ? Cette action ne peut pas être annulée.", + "originalText": "Texte original", + "translatedText": "Texte traduit", + "sessionSummary": "Résumé de session", + "cannotShare": "Impossible de partager", + "generateSummaryFirst": "Veuillez d'abord générer un résumé", + "translationSessionRecord": "Enregistrement de session de traduction", + + // 个人资料模块 "editProfile": "Modifier le profil", "avatar": "Avatar", "nickname": "Pseudo", @@ -941,8 +1101,6 @@ const Map frFR = { 'Êtes-vous sûr de vouloir supprimer définitivement votre compte ? Cette action ne peut pas être annulée.', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'Échec de la connexion réseau, veuillez vérifier les paramètres réseau et réessayer', 'serverTemporarilyUnavailable': @@ -959,10 +1117,6 @@ const Map frFR = { 'Échec de la connexion réseau, veuillez vérifier les paramètres réseau', 'serverInternalErrorRetryLater': 'Erreur interne du serveur, veuillez réessayer plus tard', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Échec de la compression de l\'image', 'avatarUpdateFailed': 'Échec de la mise à jour de l\'avatar', 'usernameCannotBeEmpty': 'Le nom d\'utilisateur ne peut pas être vide', @@ -974,8 +1128,6 @@ const Map frFR = { 'accountPermanentlyDeleted': 'Compte supprimé définitivement', 'deleteAccountFailedRetry': 'Échec de la suppression du compte, veuillez réessayer', - - // 账号服务相关 'clearUserDataFailed': 'Échec de l\'effacement des données utilisateur', // 清理用户数据失败 'deleteUserDataFailed': @@ -993,7 +1145,12 @@ const Map frFR = { 'accountServiceInitialized': 'AccountService initialisé', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': + 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', 'getPermissionStatusFailed': 'Échec de l\'obtention du statut d\'autorisation', 'communicationPermissions': 'Autorisations de communication', @@ -1007,7 +1164,6 @@ const Map frFR = { 'phone': 'Téléphone', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'Écriture calendrier', @@ -1063,8 +1219,6 @@ const Map frFR = { 'permanentDenialText': 'Vous avez refusé définitivement l\'autorisation {permission}, veuillez aller dans les paramètres de l\'application pour l\'activer', 'goToSettings': 'Aller aux paramètres', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': @@ -1089,7 +1243,6 @@ const Map frFR = { 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', @@ -1099,6 +1252,12 @@ const Map frFR = { 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', 'storagePermissionPermanentDenial': 'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', + 'permissionUtilNeed': 'Need ', + 'permissionUtilPermission': ' Permission', + 'permissionUtilRestricted': ' Permission Restricted', + 'permissionUtilRestrictedMessage': + 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'permissionUtilConfirm': 'OK', // 原生前台服务通知(Android) 'native.notification.appName': 'VOITRANS', // VOITRANS @@ -1117,15 +1276,7 @@ const Map frFR = { 'native.notification.qqMusic.playing': 'Musique en cours de lecture', // 正在播放音乐 - //permission_util.dart - 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', - 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', - 'permissionUtilConfirm': 'OK', - - // 版本更新对话框 + // 版本更新 'newVersionFound': 'Nouvelle version trouvée', // 版本更新对话框标题 'remindLater': 'Rappeler plus tard', // 稍后提醒按钮 'updateNow': 'Mettre à jour maintenant', // 立即更新按钮 @@ -1136,253 +1287,7 @@ const Map frFR = { 'updateErrorRetry': 'Erreur survenue lors du processus de mise à jour, veuillez réessayer plus tard', // 更新错误重试提示 - //国家列表 - "邮箱": "E-mail", - "中国": "Chine", - "美国": "États-Unis", - "加拿大": "Canada", - "俄罗斯": "Russie", - "英国": "Royaume-Uni", - "德国": "Allemagne", - "意大利": "Italie", - "法国": "France", - "西班牙": "Espagne", - "南非": "Afrique du Sud", - "沙特阿拉伯": "Arabie Saoudite", - "土耳其": "Turquie", - "日本": "Japon", - "韩国": "Corée du Sud", - "新加坡": "Singapour", - "马来西亚": "Malaisie", - "泰国": "Thaïlande", - "越南": "Vietnam", - "印度": "Inde", - "巴基斯坦": "Pakistan", - "菲律宾": "Philippines", - "印度尼西亚": "Indonésie", - "阿联酋": "Émirats Arabes Unis", - "墨西哥": "Mexique", - "巴西": "Brésil", - "阿根廷": "Argentine", - "澳大利亚": "Australie", - "新西兰": "Nouvelle-Zélande", - "中国香港": "Hong Kong, Chine", - "中国澳门": "Macao, Chine", - "中国台湾": "Taïwan, Chine", - "埃及": "Égypte", - "希腊": "Grèce", - "荷兰": "Pays-Bas", - "比利时": "Belgique", - "匈牙利": "Hongrie", - "罗马尼亚": "Roumanie", - "瑞士": "Suisse", - "奥地利": "Autriche", - "丹麦": "Danemark", - "瑞典": "Suède", - "挪威": "Norvège", - "波兰": "Pologne", - "秘鲁": "Pérou", - "智利": "Chili", - "哥伦比亚": "Colombie", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugal", - "卢森堡": "Luxembourg", - "爱尔兰": "Irlande", - "冰岛": "Islande", - "阿尔巴尼亚": "Albanie", - "马耳他": "Malte", - "塞浦路斯": "Chypre", - "芬兰": "Finlande", - "保加利亚": "Bulgarie", - "立陶宛": "Lituanie", - "拉脱维亚": "Lettonie", - "爱沙尼亚": "Estonie", - "乌克兰": "Ukraine", - "塞尔维亚": "Serbie", - "克罗地亚": "Croatie", - "斯洛文尼亚": "Slovénie", - "捷克": "République Tchèque", - "斯洛伐克": "Slovaquie", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panama", - "海地": "Haïti", - "玻利维亚": "Bolivie", - "厄瓜多尔": "Équateur", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Maroc", - "阿尔及利亚": "Algérie", - "突尼斯": "Tunisie", - "尼日利亚": "Nigeria", - "加纳": "Ghana", - "埃塞俄比亚": "Éthiopie", - "肯尼亚": "Kenya", - "坦桑尼亚": "Tanzanie", - "乌干达": "Ouganda", - "孟加拉国": "Bangladesh", - "以色列": "Israël", - "黎巴嫩": "Liban", - "约旦": "Jordanie", - "伊拉克": "Irak", - "科威特": "Koweït", - "巴林": "Bahreïn", - "卡塔尔": "Qatar", - "阿曼": "Oman", - "阿富汗": "Afghanistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Népal", - "蒙古": "Mongolie", - "柬埔寨": "Cambodge", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "Timor Oriental", - "斐济": "Fidji", - "所罗门群岛": "Îles Salomon", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Historique de traduction", - "enableRecording": "Activer l'enregistrement", - "viewAudioFiles": "Voir les fichiers audio", - "headsetUser": "Utilisateur d'écouteurs", - "phoneUser": "Utilisateur de téléphone", - "selectSourceLanguage": "Sélectionner la langue source", - "selectTargetLanguage": "Sélectionner la langue cible", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Aucun historique de traduction", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Effacer l'historique", - "clearHistoryConfirm": - "Êtes-vous sûr de vouloir effacer tout l'historique de traduction ? Cette action ne peut pas être annulée.", - "unknownLanguage": "Langue inconnue", - "deleteSessionRecord": "Supprimer l'enregistrement de session", - "deleteSessionConfirm": - "Êtes-vous sûr de vouloir supprimer tous les enregistrements de traduction pour cette session ? Cette action ne peut pas être annulée.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Traduire les fichiers audio", - "noAudioFiles": "Aucun fichier audio", - "calculating": "Calcul en cours...", - "playing": "Lecture en cours...", - "paused": "En pause", - "clickToPlay": "Cliquer pour lire", - "rename": "Renommer", - "smartTranscription": "Transcription intelligente", - "renameAudioFile": "Renommer le fichier audio", - "enterNewFileName": "Veuillez saisir le nouveau nom de fichier", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Enregistrement original", - "recordSummary": "Résumé de l'enregistrement", - "clickToGenerateSummary": - "Cliquez sur le bouton ci-dessous pour générer un résumé de session", - "summaryContent": "Contenu du résumé", - "copied": "Copié", - "summaryCopiledToClipboard": "Résumé copié dans le presse-papiers", - "extractSummary": "Extraire le résumé", - "summaryGenerated": "Résumé généré", - "generating": "Génération en cours...", - "regenerate": "Régénérer", - "summaryTimeoutMessage": - "La demande de génération de résumé a expiré, possiblement due à des problèmes de réseau ou à une surcharge du serveur.", - "deleteTranslationRecord": "Supprimer l'enregistrement de traduction", - "deleteTranslationConfirm": - "Êtes-vous sûr de vouloir supprimer cet enregistrement de traduction ? Cette action ne peut pas être annulée.", - "originalText": "Texte original", - "translatedText": "Texte traduit", - "sessionSummary": "Résumé de session", - "cannotShare": "Impossible de partager", - "generateSummaryFirst": "Veuillez d'abord générer un résumé", - "translationSessionRecord": "Enregistrement de session de traduction", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Appairage d'appareil", "connectYourDeepSoundHeadset": "Connectez votre casque Voitrans", "bind": "Lier", @@ -1391,14 +1296,11 @@ const Map frFR = { "autoInputCode": "Saisie automatique du code", "skipBinding": "Ignorer la liaison", "rescan": "Rescanner", - "verifyingDevice": "Vérification de l'appareil...", "confirmBinding": "Confirmer la liaison", "associatingDevice": "Association de l'appareil...", "goToBluetoothSettings": "Aller aux paramètres Bluetooth", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Prêt à appairer", "preparingPairingEnvironment": "Préparation de l'environnement d'appairage...", @@ -1410,8 +1312,6 @@ const Map frFR = { "waitingCompletePairing": "Veuillez patienter, appairage en cours...", "pairingSuccessRedirecting": "Appairage réussi ! Redirection vers la page d'accueil...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Veuillez vous assurer que l'appareil connecté est Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1424,19 +1324,12 @@ const Map frFR = { "authorizationFailedCheckCode": "Échec de l'autorisation, veuillez vérifier le code d'autorisation", "pairingFailedRetry": "Échec de l'appairage, veuillez réessayer", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Veuillez activer le Bluetooth', 'deviceDisconnected': 'Appareil déconnecté', 'readyToStartPairing': 'Prêt à démarrer l\'appairage', 'checkingEnvironment': 'Vérification de l\'environnement...', 'ensureHeadsetOnAndPairingMode': 'Veuillez vous assurer que le casque est allumé et en mode appairage', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Établissement d\'une connexion sécurisée...', 'needManualBindingAuthCode': 'Liaison manuelle du code d\'autorisation nécessaire...', @@ -1460,8 +1353,6 @@ const Map frFR = { 'bleConnectionFailed': 'Échec de la connexion BLE', 'deviceAuthorizationFailedCheckCode': 'Échec de l\'autorisation d\'appareil, veuillez vérifier le code d\'autorisation', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1474,7 +1365,18 @@ const Map frFR = { 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Commentaires", 'feedbackInfo': 'Donner des commentaires ou suggestions', 'feedbackDescription': 'Veuillez décrire votre problème ou suggestion', @@ -1516,7 +1418,7 @@ const Map frFR = { "removeEarbudsEnsureBattery": "Retirez les deux écouteurs et assurez-vous que le niveau de batterie est supérieur à 20%", - // 音乐列表页面 + // 音乐模块 "noMusic": "Aucune musique", // 暂无音乐 "noPlayingMusic": "Aucune musique en cours de lecture", // 暂无播放音乐 "unknownSong": "Chanson inconnue", // 未知歌曲 @@ -1564,22 +1466,122 @@ const Map frFR = { "波斯语": "Persan", "斯瓦希里语": "Swahili", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "E-mail", + "中国": "Chine", + "美国": "États-Unis", + "加拿大": "Canada", + "俄罗斯": "Russie", + "英国": "Royaume-Uni", + "德国": "Allemagne", + "意大利": "Italie", + "法国": "France", + "西班牙": "Espagne", + "南非": "Afrique du Sud", + "沙特阿拉伯": "Arabie Saoudite", + "土耳其": "Turquie", + "日本": "Japon", + "韩国": "Corée du Sud", + "新加坡": "Singapour", + "马来西亚": "Malaisie", + "泰国": "Thaïlande", + "越南": "Vietnam", + "印度": "Inde", + "巴基斯坦": "Pakistan", + "菲律宾": "Philippines", + "印度尼西亚": "Indonésie", + "阿联酋": "Émirats Arabes Unis", + "墨西哥": "Mexique", + "巴西": "Brésil", + "阿根廷": "Argentine", + "澳大利亚": "Australie", + "新西兰": "Nouvelle-Zélande", + "中国香港": "Hong Kong, Chine", + "中国澳门": "Macao, Chine", + "中国台湾": "Taïwan, Chine", + "埃及": "Égypte", + "希腊": "Grèce", + "荷兰": "Pays-Bas", + "比利时": "Belgique", + "匈牙利": "Hongrie", + "罗马尼亚": "Roumanie", + "瑞士": "Suisse", + "奥地利": "Autriche", + "丹麦": "Danemark", + "瑞典": "Suède", + "挪威": "Norvège", + "波兰": "Pologne", + "秘鲁": "Pérou", + "智利": "Chili", + "哥伦比亚": "Colombie", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portugal", + "卢森堡": "Luxembourg", + "爱尔兰": "Irlande", + "冰岛": "Islande", + "阿尔巴尼亚": "Albanie", + "马耳他": "Malte", + "塞浦路斯": "Chypre", + "芬兰": "Finlande", + "保加利亚": "Bulgarie", + "立陶宛": "Lituanie", + "拉脱维亚": "Lettonie", + "爱沙尼亚": "Estonie", + "乌克兰": "Ukraine", + "塞尔维亚": "Serbie", + "克罗地亚": "Croatie", + "斯洛文尼亚": "Slovénie", + "捷克": "République Tchèque", + "斯洛伐克": "Slovaquie", + "危地马拉": "Guatemala", + "萨尔瓦多": "El Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nicaragua", + "哥斯达黎加": "Costa Rica", + "巴拿马": "Panama", + "海地": "Haïti", + "玻利维亚": "Bolivie", + "厄瓜多尔": "Équateur", + "巴拉圭": "Paraguay", + "乌拉圭": "Uruguay", + "摩洛哥": "Maroc", + "阿尔及利亚": "Algérie", + "突尼斯": "Tunisie", + "尼日利亚": "Nigeria", + "加纳": "Ghana", + "埃塞俄比亚": "Éthiopie", + "肯尼亚": "Kenya", + "坦桑尼亚": "Tanzanie", + "乌干达": "Ouganda", + "孟加拉国": "Bangladesh", + "以色列": "Israël", + "黎巴嫩": "Liban", + "约旦": "Jordanie", + "伊拉克": "Irak", + "科威特": "Koweït", + "巴林": "Bahreïn", + "卡塔尔": "Qatar", + "阿曼": "Oman", + "阿富汗": "Afghanistan", + "斯里兰卡": "Sri Lanka", + "缅甸": "Myanmar", + "尼泊尔": "Népal", + "蒙古": "Mongolie", + "柬埔寨": "Cambodge", + "老挝": "Laos", + "文莱": "Brunei", + "东帝汶": "Timor Oriental", + "斐济": "Fidji", + "所罗门群岛": "Îles Salomon", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/hi_in.dart b/lib/core/translations/language/hi_in.dart index 6252ac1a5..fd36e19d9 100644 --- a/lib/core/translations/language/hi_in.dart +++ b/lib/core/translations/language/hi_in.dart @@ -1,4 +1,5 @@ const Map hiIN = { + // 通用 'continue': 'जारी रखें', 'confirm': 'पुष्टि करें', @@ -18,6 +19,11 @@ const Map hiIN = { "unknownError": "अज्ञात त्रुटि", "asrConnectionFailed": "वॉइस रिकग्निशन सेवा से कनेक्शन विफल रहा। कृपया नेटवर्क जांचें और बाद में फिर से प्रयास करें।", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "दुनिया को जोड़ना, ध्वनि से परे", @@ -28,7 +34,7 @@ const Map hiIN = { "explore": "अन्वेषण करें", "settings": "सेटिंग्स", - // 语言 + // 语言列表 "followingSystem": "सिस्टम का पालन करें", "chinese": "चीनी", "english": "अंग्रेजी", @@ -72,7 +78,7 @@ const Map hiIN = { "arabic": "अरबिक", "persian": "पेरिसी", - // 登录页 + // 登录模块 "welcome": "स्वागत है", "loginTips": "कृपया अपने फ़ोन नंबर या ईमेल से लॉगिन/साइन अप करें", "accountNumber": "फ़ोन नंबर या ईमेल", @@ -100,13 +106,9 @@ const Map hiIN = { "resendVerificationCode": "सत्यापन कोड पुनः भेजें", "login": "लॉग इन करें", "usePasswordLogin": "पासवर्ड से लॉगिन करें", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans घोषणा", // Voitrans 声明 "welcomeToThisApp": "Voitrans में आपका स्वागत है, कृपया ध्यान से पढ़ें", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", 'सहमत हों और दर्ज करें' पर क्लिक करने का मतलब है कि आपने उपरोक्त समझौतों को पूरी तरह से पढ़ लिया है और उनसे सहमत हैं। 'असहमत' पर क्लिक करने से एप्लिकेशन से बाहर निकल जाएगा।", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "असहमत", // 不同意 @@ -165,7 +167,7 @@ const Map hiIN = { 'right': 'दायां', 'checkConnectionStatusFailed': 'कनेक्शन स्थिति की जाँच करने में विफल', -// 发现页 + // 发现页 "searchAi": "एआई फ़ंक्शन खोजें...", "exploreSlogan": "स्मार्ट ईयरफोन, अनंत संभावनाएं", "exploreSlogan1": "स्मार्ट साथी, अनंत संभावनाएं", @@ -189,6 +191,7 @@ const Map hiIN = { "usageStats": "उपयोग सtatistik", "usageStatsInfo": "अप्लिकेशन का उपयोग सtatistik देखें", "scene": "दृश्य", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", @@ -209,7 +212,6 @@ const Map hiIN = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -226,7 +228,6 @@ const Map hiIN = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - // 通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", @@ -235,88 +236,79 @@ const Map hiIN = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', 'remaining': 'Remaining', 'featureDescription': 'Feature Description', - // AI 功能卡片 + 'paymentSuccess': 'भुगतान सफल', + 'paymentFailed': 'भुगतान विफल', + 'gotIt': 'समझ गया', + 'paymentFailedTryAgain': 'भुगतान विफल। कृपया पुनः प्रयास करें।', + 'selectPaymentMethod': 'भुगतान विधि चुनें', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'WeChat ऑर्डर बनाने में विफल', + 'alipayOrderCreateFailed': 'Alipay ऑर्डर बनाने में विफल', + 'appleOrderCreateFailed': 'Apple ऑर्डर बनाने में विफल', + 'googleOrderCreateFailed': 'Google ऑर्डर बनाने में विफल', + 'paypalOrderCreateFailed': 'PayPal ऑर्डर बनाने में विफल', + 'paymentException': 'भुगतान में समस्या', + 'paymentLaunchFailed': 'भुगतान शुरू करने में विफल', + 'paymentExceptionWithError': 'भुगतान में समस्या: @error', + 'paymentProcessingCheckLater': 'आपका ऑर्डर प्रोसेस हो रहा है। कृपया बाद में जाँचें।', + 'paymentResultQueryException': 'भुगतान परिणाम की जाँच विफल: @error', + 'orderConfirmedQuotaRefreshed': 'ऑर्डर की पुष्टि हो गई। आपका कोटा रीफ़्रेश हो गया है।', + 'paymentCompletedConfirming': 'भुगतान पूरा हुआ। पुष्टि हो रही है…', + 'paymentCancelled': 'भुगतान रद्द किया गया', + 'paypalOpenedCompleteInBrowser': 'PayPal खुल गया है। कृपया ब्राउज़र में भुगतान पूरा करें।', + 'paypalOpenFailed': 'PayPal भुगतान पृष्ठ नहीं खोल सकते', + 'paymentTestTitle': 'भुगतान परीक्षण', + 'paymentTestOrderInfo': 'परीक्षण ऑर्डर जानकारी', + 'paymentTestProductId': 'उत्पाद ID', + 'paymentTestProductDescription': 'उत्पाद विवरण', + 'paymentTestWechatDescription': 'WeChat भुगतान परीक्षण', + 'paymentTestAlipayDescription': 'Alipay भुगतान परीक्षण', + 'paymentTestAmount': 'राशि', + 'paymentTestSelectAmount': 'परीक्षण राशि चुनें', + 'paying': 'भुगतान हो रहा है...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'भुगतान स्थिति', + 'errorInfoWithMessage': 'त्रुटि: @message', + 'retest': 'पुनः परीक्षण', + 'paymentTestInstructionsTitle': 'निर्देश', + 'paymentTestInstructionsContent': '1. परीक्षण राशि चुनें (अनुशंसित: ¥0.01)\n2. शुरू करने के लिए भुगतान बटन दबाएँ\n3. भुगतान ऐप में भुगतान पूरा करें\n4. परिणाम जाँचने के लिए वापस आएँ', + 'startingWechatPayment': 'WeChat Pay खोल रहे हैं...', + 'startingAlipayPayment': 'Alipay खोल रहे हैं...', + 'wechatPaymentSuccess': 'WeChat Pay भुगतान सफल!', + 'wechatPaymentFailed': 'WeChat Pay भुगतान विफल', + 'wechatPaymentLaunchFailed': 'WeChat Pay खोलने में विफल', + 'cannotLaunchWechatPayment': 'WeChat Pay नहीं खोल सकते', + 'wechatPaymentException': 'WeChat Pay में समस्या', + 'wechatPaymentTestCompleted': 'WeChat Pay भुगतान परीक्षण पूरा', + 'alipayPaymentSuccess': 'Alipay भुगतान सफल!', + 'alipayPaymentFailed': 'Alipay भुगतान विफल', + 'alipayPaymentLaunchFailed': 'Alipay खोलने में विफल', + 'cannotLaunchAlipayPayment': 'Alipay नहीं खोल सकते', + 'alipayPaymentException': 'Alipay में समस्या', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": + 'Insufficient balance, please go to the corresponding recharge page to recharge.', + "recharge": 'Go to Recharge', + "aiMemberExpiredDesc": + 'AI membership expired, please go to the membership recharge page to renew.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'एआई बेसिक 100', - 'ai_002_name': 'एआई बेसिक 500', - 'ai_003_name': 'एआई बेसिक 1000', - 'meet_001_name': 'मीटिंग बेसिक 100', - 'meet_002_name': 'मीटिंग बेसिक 500', - 'meet_003_name': 'मीटिंग बेसिक 1000', - 'trans_001_name': 'अनुवाद बेसिक 100', - 'trans_002_name': 'अनुवाद बेसिक 500', - 'trans_003_name': 'अनुवाद बेसिक 1000', - - // 商品描述(按ID) - 'ai_001_desc': '100 उपयोग शामिल। मुख्य AI सुविधाओं की पहुँच।', - 'ai_002_desc': '500 उपयोग शामिल। मुख्य AI सुविधाओं की पहुँच।', - 'ai_003_desc': '1000 उपयोग शामिल। मुख्य AI सुविधाओं की पहुँच।', - 'meet_001_desc': '100 बैठक रिकॉर्डिंग/ट्रांसक्रिप्शन शामिल।', - 'meet_002_desc': '500 बैठक रिकॉर्डिंग/ट्रांसक्रिप्शन शामिल।', - 'meet_003_desc': '1000 बैठक रिकॉर्डिंग/ट्रांसक्रिप्शन शामिल।', - 'trans_001_desc': '100 अनुवाद (वॉयस/टेक्स्ट) शामिल।', - 'trans_002_desc': '500 अनुवाद (वॉयस/टेक्स्ट) शामिल।', - 'trans_003_desc': '1000 अनुवाद (वॉयस/टेक्स्ट) शामिल।', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'रीयल-टाइम समकालीन व्याख्या और पाठ अनुवाद, कम विलंबता वॉइस प्रसारण के साथ।', - 'transHeaderDesc2': 'यात्रा, व्यवसाय, भाषण और शिक्षण के लिए उपयुक्त।', - 'translateZhEn': 'चीनी-अंग्रेज़ी अनुवाद', - 'lowLatencyVoiceBroadcast': 'कम विलंबता वॉइस प्रसारण', - 'multiLangTextTranslation': 'बहुभाषी पाठ अनुवाद', - 'termOptimizationContextPreserve': - 'पारिभाषिक शब्दों का अनुकूलन और संदर्भ बनाए रखना', - 'lexiconTourBusinessLife': 'यात्रा/व्यवसाय/जीवन शब्दकोश', - 'personalVocabularyMemory': 'व्यक्तिगत शब्दावली स्मृति', - 'conversationSubtitleLargeText': 'वार्तालाप उपशीर्षक / बड़े-टेक्स्ट मोड', - 'colorHighContrast': 'उच्च रंग-विपरीत', - 'transDisclaimer': - 'अनुवाद की गुणवत्ता माइक्रोफोन, नेटवर्क विलंबता और परिवेशी शोर पर निर्भर करती है।', - - // AI 商品页描述 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', 'aiHeaderDesc2': @@ -339,7 +331,46 @@ const Map hiIN = { 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Real-time Transcription', + 'sceneLexicon': 'Scenario Glossary', + 'subtitleDisplay': 'Subtitles', + 'transHeaderDesc1': + 'रीयल-टाइम समकालीन व्याख्या और पाठ अनुवाद, कम विलंबता वॉइस प्रसारण के साथ।', + 'transHeaderDesc2': 'यात्रा, व्यवसाय, भाषण और शिक्षण के लिए उपयुक्त।', + 'translateZhEn': 'चीनी-अंग्रेज़ी अनुवाद', + 'lowLatencyVoiceBroadcast': 'कम विलंबता वॉइस प्रसारण', + 'multiLangTextTranslation': 'बहुभाषी पाठ अनुवाद', + 'termOptimizationContextPreserve': + 'पारिभाषिक शब्दों का अनुकूलन और संदर्भ बनाए रखना', + 'lexiconTourBusinessLife': 'यात्रा/व्यवसाय/जीवन शब्दकोश', + 'personalVocabularyMemory': 'व्यक्तिगत शब्दावली स्मृति', + 'conversationSubtitleLargeText': 'वार्तालाप उपशीर्षक / बड़े-टेक्स्ट मोड', + 'colorHighContrast': 'उच्च रंग-विपरीत', + 'transDisclaimer': + 'अनुवाद की गुणवत्ता माइक्रोफोन, नेटवर्क विलंबता और परिवेशी शोर पर निर्भर करती है।', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Meeting Recording', + 'transcriptionAndSummary': 'Transcription & Summary', + 'keywordSearch': 'Keyword Search', + 'collaborationSharing': 'Collaboration & Sharing', + 'meetingHeaderDesc1': + 'Audio recording, transcription, keyword search, and auto summary.', + 'meetingHeaderDesc2': + 'Suitable for business meetings, class notes, and interview minutes.', + 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingSpeakerTagging': 'Speaker labeling', + 'meetingLongAudioTranscription': 'Long audio transcription', + 'meetingKeyPointSummary': 'Key point extraction', + 'meetingTopicNameSearch': 'Search by topic/name', + 'meetingTimelineJump': 'Timeline jump', + 'meetingExportSummary': 'Export minutes', + 'meetingMultiPlatformShare': 'Share across platforms', + 'meetingDisclaimer': + 'Use in quiet environments; performance depends on microphone and network.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'लाभों का अवलोकन', 'higherQuota': 'उच्च उपयोग कोटा', 'lowerUnitPrice': 'कम इकाई मूल्य', @@ -355,7 +386,32 @@ const Map hiIN = { 'vipDisclaimer': 'वास्तविक लाभ पैकेज विवरण पर निर्भर करते हैं और संस्करणों के साथ बदल सकते हैं।', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'एआई बेसिक 100', + 'ai_002_name': 'एआई बेसिक 500', + 'ai_003_name': 'एआई बेसिक 1000', + 'meet_001_name': 'मीटिंग बेसिक 100', + 'meet_002_name': 'मीटिंग बेसिक 500', + 'meet_003_name': 'मीटिंग बेसिक 1000', + 'trans_001_name': 'अनुवाद बेसिक 100', + 'trans_002_name': 'अनुवाद बेसिक 500', + 'trans_003_name': 'अनुवाद बेसिक 1000', + 'ai_001_desc': '100 उपयोग शामिल। मुख्य AI सुविधाओं की पहुँच।', + 'ai_002_desc': '500 उपयोग शामिल। मुख्य AI सुविधाओं की पहुँच।', + 'ai_003_desc': '1000 उपयोग शामिल। मुख्य AI सुविधाओं की पहुँच।', + 'meet_001_desc': '100 बैठक रिकॉर्डिंग/ट्रांसक्रिप्शन शामिल।', + 'meet_002_desc': '500 बैठक रिकॉर्डिंग/ट्रांसक्रिप्शन शामिल।', + 'meet_003_desc': '1000 बैठक रिकॉर्डिंग/ट्रांसक्रिप्शन शामिल।', + 'trans_001_desc': '100 अनुवाद (वॉयस/टेक्स्ट) शामिल।', + 'trans_002_desc': '500 अनुवाद (वॉयस/टेक्स्ट) शामिल।', + 'trans_003_desc': '1000 अनुवाद (वॉयस/टेक्स्ट) शामिल।', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "छोड़ें", 'next': 'Next', 'sayLilyHint': "Say \"Lily Lily\" to the mic", @@ -366,7 +422,6 @@ const Map hiIN = { 'guideAwakenSuccess': "Great! Lily is awake—ask it to help.", 'confirmInput': "Confirm Input", 'guideClickSendPrefix': "Tap send, ", - // AI 引导步骤 'guideWeatherStart': "Tell Lily: “What’s the weather today?”", 'guideWeatherInput': "What’s the weather today?", 'guideWeatherSend': "Lily will report the weather in real time", @@ -393,7 +448,7 @@ const Map hiIN = { 'guideSmsSend': "Lily will send the message", 'guideSmsEnd': "Message sent—voice control is convenient", - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "बैठक शुरू करें", 'edit': 'संपादित करें', 'delete': 'हटाएं', @@ -405,8 +460,6 @@ const Map hiIN = { 'recordingDetails': 'रिकॉर्डिंग विवरण', 'aiSummary': 'एआई सारांश', 'meetingTranscript': 'बैठक का प्रतिलेख', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -457,7 +510,6 @@ const Map hiIN = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -466,6 +518,97 @@ const Map hiIN = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': 'बनाएँ', + 'templateDetails': 'टेम्पलेट विवरण', + 'tag': 'टैग', + 'description': 'विवरण', + 'template': 'टेम्पलेट', + 'deleteTemplate': 'टेम्पलेट हटाएँ', + 'deleteTemplateConfirm': 'क्या आप वाकई इस टेम्पलेट को हटाना चाहते हैं?', + 'editTemplate': 'टेम्पलेट संपादित करें', + 'createTemplate': 'टेम्पलेट बनाएँ', + 'name': 'नाम', + 'templateContentHint': 'कृपया टेम्पलेट सामग्री दर्ज करें! सुझाव: आपने जो नाम और विवरण दर्ज किया है उसके आधार पर टेम्पलेट सामग्री तेज़ी से बनाने के लिए ऊपर AI बटन दबाएँ', + 'inputNameHint': 'कृपया नाम दर्ज करें', + 'inputDescHint': 'कृपया विवरण दर्ज करें', + 'custom': 'कस्टम', + 'pleaseEnter': 'कृपया दर्ज करें', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': + 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'माइंड मैप सहेजें', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'निर्यात', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'इस वक्ता के सभी अनुच्छेदों पर लागू करें', + 'summaryWillBeUpdatedAutomatically': + 'टेम्पलेट के आधार पर सारांश स्वतः अपडेट होगा', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -484,7 +627,7 @@ const Map hiIN = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -520,8 +663,6 @@ const Map hiIN = { 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -550,105 +691,26 @@ const Map hiIN = { 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'इस वक्ता के सभी अनुच्छेदों पर लागू करें', - 'summaryWillBeUpdatedAutomatically': - 'टेम्पलेट के आधार पर सारांश स्वतः अपडेट होगा', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': 'विश्लेषण विफल, कृपया बाद में पुनः प्रयास करें', + 'transcriptionFailed': 'ट्रांसक्रिप्शन विफल, कृपया बाद में पुनः प्रयास करें', + 'summaryFailed': 'सारांश विफल, कृपया बाद में पुनः प्रयास करें', + 'summaryFailedShort': 'सारांश विफल', + 'transcriptionFailedShort': 'ट्रांसक्रिप्शन विफल', + + // Meeting模块 - 播放器 + 'playerNotReady': 'ऑडियो प्लेयर तैयार नहीं है, कृपया प्रतीक्षा करें', + 'playFailed': 'चलाने में विफल', + 'audioFileNotFound': 'ऑडियो फ़ाइल नहीं मिली', + 'fetchingAudio': 'क्लाउड से ऑडियो प्राप्त कर रहे हैं...', + 'playerLoadFailed': 'ऑडियो प्लेयर लोड होने में विफल', // 设置页 "systemSettings": "सिस्टम सेटिंग्स", @@ -700,26 +762,15 @@ const Map hiIN = { "bleHeadsetFirmwareUpgrade": "BLE हेडसेट फर्मवेयर संस्करण अपग्रेड", "deviceManagement": "डिवाइस प्रबंधन", "manageConnectedDevices": "पेयर किए गए ब्लूटूथ डिवाइस प्रबंधित करें", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'आप पहले से ही नवीनतम संस्करण {version} पर हैं', 'checkUpdateFailed': 'अपडेट की जाँच करने में विफल', 'networkErrorRetry': 'नेटवर्क त्रुटि, कृपया बाद में पुनः प्रयास करें', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "रीयल-टाइम वॉयस चैट", "realtimeVoiceChatInfo": "बुद्धिमान वॉयस इंटरैक्शन फ़ंक्शन का अनुभव करें (फ़ंक्शन पूर्वावलोकन)", "loading": "लोड हो रहा है...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -735,8 +786,7 @@ const Map hiIN = { "Are you sure you want to unbind device \"{deviceName}\"?", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "चैट इतिहास साफ़ करें", "online": "ऑनलाइन", @@ -767,8 +817,9 @@ const Map hiIN = { "swipeUpForMore": "अधिक के लिए ऊपर स्वाइप करें", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': 'सक्षम होने पर: बोलते समय AI आपकी आवाज़ से बाधित नहीं होगा और एक समय में केवल एक वार्तालाप चरण संभाल सकता है। नया चरण शुरू करने के लिए, बस वेक-अप शब्द बोलें।', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -780,7 +831,7 @@ const Map hiIN = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'नमस्ते! मैं **Lily** हूँ, मैं आपकी मदद कर सकता हूँ:\n\n' '• सवालों के जवाब देना और जानकारी प्रदान करना\n\n' '• रीयल-टाइम वॉयस अनुवाद\n\n' @@ -800,18 +851,17 @@ const Map hiIN = { 'startVoiceInput': 'वॉयस इनपुट शुरू करें', 'startPhoneCallMode': 'कॉल मोड शुरू करें, वॉयस इनपुट शुरू करें', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'अपना संदेश यहां दर्ज करें...', // 全屏编辑器输入提示 'characterCount': '{count} अक्षर', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'कॉपी करें', 'copySuccess': 'सफलतापूर्वक कॉपी किया गया', 'report': 'रिपोर्ट करें', 'submitSuccess': 'सफलतापूर्वक सबमिट किया गया', 'submitFailed': 'सबमिट करने में विफल', 'reportSubmitted': 'रिपोर्ट सबमिट कर दी गई है, हम इसे जल्द ही संसाधित करेंगे', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'हानिकारक/असुरक्षित', 'pornographicVulgar': 'अश्लील/अशिष्ट', 'misleadingAttack': 'भ्रामक/हमला', @@ -821,17 +871,14 @@ const Map hiIN = { 'other': 'अन्य', 'reportDescriptionHint': 'हम जानना चाहते हैं कि आप क्यों रिपोर्ट कर रहे हैं, आप जिस समस्या का सामना कर रहे हैं उसका वर्णन कर सकते हैं।', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'एआई द्वारा उत्पन्न', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'यहां कुछ अनुशंसित संगीत हैं:', 'playList': 'प्लेलिस्ट', 'moreMusic': 'और संगीत', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'किमी', // 公里单位 'meters': 'मी', // 米单位 'hours': 'घंटे', // 小时单位 @@ -846,7 +893,7 @@ const Map hiIN = { "bicycling": "साइकिल चलाना", "tsransit": "पारगमन", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'मौसम की स्थिति की पूछताछ:', 'highest': 'उच्चतम', 'lowest': 'न्यूनतम', @@ -875,18 +922,8 @@ const Map hiIN = { "friday": "शुक्र", "saturday": "शनि", "sunday": "रवि", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "धूप", "partlyCloudy": "आंशिक रूप से बादल छाए हुए", "partlySunny": "आंशिक रूप से धूप", @@ -907,7 +944,130 @@ const Map hiIN = { "haze": "धुंध", "strongWind": "तेज हवा", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "अनुवाद इतिहास", + "enableRecording": "रिकॉर्डिंग सक्षम करें", + "viewAudioFiles": "ऑडियो फ़ाइलें देखें", + "headsetUser": "हेडसेट उपयोगकर्ता", + "phoneUser": "फ़ोन उपयोगकर्ता", + "selectSourceLanguage": "स्रोत भाषा चुनें", + "selectTargetLanguage": "लक्ष्य भाषा चुनें", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": + "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "अभी तक कोई इतिहास नहीं", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "इतिहास साफ़ करें", + "clearHistoryConfirm": + "क्या आप वाकई सभी अनुवाद इतिहास साफ़ करना चाहते हैं? यह क्रिया पूर्ववत नहीं की जा सकती है।", + "unknownLanguage": "अज्ञात भाषा", + "deleteSessionRecord": "सत्र रिकॉर्ड हटाएं", + "deleteSessionConfirm": + "क्या आप वाकई इस सत्र के सभी अनुवाद रिकॉर्ड हटाना चाहते हैं? यह क्रिया पूर्ववत नहीं की जा सकती है।", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": + "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": + "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": + "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": + "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "ऑडियो फ़ाइलों का अनुवाद करें", + "noAudioFiles": "अभी तक कोई ऑडियो फ़ाइल नहीं", + "calculating": "गणना हो रही है...", + "playing": "चल रहा है...", + "paused": "रोका गया", + "clickToPlay": "चलाने के लिए क्लिक करें", + "rename": "नाम बदलें", + "smartTranscription": "स्मार्ट ट्रांसक्रिप्शन", + "renameAudioFile": "ऑडियो फ़ाइल का नाम बदलें", + "enterNewFileName": "कृपया एक नया फ़ाइल नाम दर्ज करें", + + // 翻译模块 - 翻译详情 + "originalRecord": "मूल रिकॉर्ड", + "recordSummary": "रिकॉर्ड सारांश", + "clickToGenerateSummary": + "सत्र सारांश बनाने के लिए नीचे दिए गए बटन पर क्लिक करें", + "summaryContent": "सारांश सामग्री", + "copied": "कॉपी किया गया", + "summaryCopiledToClipboard": "सारांश क्लिपबोर्ड पर कॉपी किया गया", + "extractSummary": "सारांश निकालें", + "summaryGenerated": "सारांश बनाया गया", + "generating": "बनाया जा रहा है...", + "regenerate": "पुनः बनाएं", + "summaryTimeoutMessage": + "सारांश बनाने का अनुरोध समय समाप्त हो गया, शायद नेटवर्क समस्याओं या व्यस्त सर्वर के कारण।", + "deleteTranslationRecord": "अनुवाद रिकॉर्ड हटाएं", + "deleteTranslationConfirm": + "क्या आप वाकई इस अनुवाद रिकॉर्ड को हटाना चाहते हैं? यह क्रिया पूर्ववत नहीं की जा सकती है।", + "originalText": "मूल पाठ", + "translatedText": "अनुवादित पाठ", + "sessionSummary": "सत्र सारांश", + "cannotShare": "साझा नहीं किया जा सकता", + "generateSummaryFirst": "कृपया पहले एक सारांश बनाएं", + "translationSessionRecord": "अनुवाद सत्र रिकॉर्ड", + + // 个人资料模块 "editProfile": "व्यक्तिगत जानकारी संपादित करें", "avatar": "अवतार", "nickname": "उपनाम", @@ -923,8 +1083,6 @@ const Map hiIN = { 'क्या आप वाकई अपना खाता स्थायी रूप से हटाना चाहते हैं? यह क्रिया पूर्ववत नहीं की जा सकती है।', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'नेटवर्क कनेक्शन विफल, कृपया अपनी नेटवर्क सेटिंग्स जांचें और पुनः प्रयास करें', 'serverTemporarilyUnavailable': @@ -943,10 +1101,6 @@ const Map hiIN = { 'नेटवर्क कनेक्शन विफल, कृपया अपनी नेटवर्क सेटिंग्स जांचें', 'serverInternalErrorRetryLater': 'सर्वर आंतरिक त्रुटि, कृपया बाद में पुनः प्रयास करें', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'छवि संपीड़न विफल', 'avatarUpdateFailed': 'अवतार अपडेट विफल', 'usernameCannotBeEmpty': 'उपयोगकर्ता नाम खाली नहीं हो सकता', @@ -957,8 +1111,6 @@ const Map hiIN = { 'logoutFailedRetry': 'लॉग आउट करने में विफल, कृपया पुनः प्रयास करें', 'accountPermanentlyDeleted': 'खाता स्थायी रूप से हटा दिया गया है', 'deleteAccountFailedRetry': 'खाता हटाने में विफल, कृपया पुनः प्रयास करें', - - // 账号服务相关 'clearUserDataFailed': 'उपयोगकर्ता डेटा साफ़ करने में विफल', // 清理用户数据失败 'deleteUserDataFailed': 'उपयोगकर्ता डेटा हटाने में विफल', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'तीसरे पक्ष का लॉगआउट सफल', // 第三方登录退出成功 @@ -974,7 +1126,12 @@ const Map hiIN = { 'accountServiceInitialized': 'खाता सेवा प्रारंभ की गई है', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': + 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', 'getPermissionStatusFailed': 'अनुमति की स्थिति प्राप्त करने में विफल', 'communicationPermissions': 'संचार अनुमतियाँ', 'bluetoothPermissions': 'Bluetooth Permissions', @@ -987,7 +1144,6 @@ const Map hiIN = { 'phone': 'फ़ोन', 'sms': 'एसएमएस', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'कैलेंडर में लिखें', @@ -1044,8 +1200,6 @@ const Map hiIN = { 'permanentDenialText': 'आपने {permission} अनुमति को स्थायी रूप से अस्वीकार कर दिया है, कृपया इसे सक्षम करने کے لیے ऐप सेटिंग्स पर जाएं', 'goToSettings': 'सेटिंग्स पर जाएं', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': @@ -1070,7 +1224,6 @@ const Map hiIN = { 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', @@ -1080,8 +1233,6 @@ const Map hiIN = { 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', 'storagePermissionPermanentDenial': 'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', - - //permission_util.dart 'permissionUtilNeed': 'Need ', 'permissionUtilPermission': ' Permission', 'permissionUtilRestricted': ' Permission Restricted', @@ -1089,7 +1240,20 @@ const Map hiIN = { 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'नेविगेशन जारी है', + 'native.notification.navigation.keepRunning': 'नेविगेट कर रहे हैं, ऐप चालू रखें', + 'native.notification.bleAgent.running': 'वॉयस असिस्टेंट एजेंट चल रहा है', + 'native.notification.audioRecording.recording': 'ऑडियो रिकॉर्ड हो रहा है, ऐप पर वापस जाने के लिए टैप करें', + 'native.notification.music.waiting': 'चलाने की प्रतीक्षा में', + 'native.notification.music.previous': 'पिछला', + 'native.notification.music.next': 'अगला', + 'native.notification.music.play': 'चलाएँ', + 'native.notification.music.pause': 'रोकें', + 'native.notification.qqMusic.playing': 'संगीत चल रहा है', + + // 版本更新 'newVersionFound': 'नया संस्करण मिला', // 版本更新对话框标题 'remindLater': 'बाद में याद दिलाएं', // 稍后提醒按钮 'updateNow': 'अभी अपडेट करें', // 立即更新按钮 @@ -1100,253 +1264,7 @@ const Map hiIN = { 'updateErrorRetry': 'अपडेट के दौरान एक त्रुटि हुई, कृपया बाद में पुनः प्रयास करें', // 更新错误重试提示 - //国家列表 - "邮箱": "ईमेल", - "中国": "चीन", - "美国": "संयुक्त राज्य अमेरिका", - "加拿大": "कनाडा", - "俄罗斯": "रूस", - "英国": "यूनाइटेड किंगडम", - "德国": "जर्मनी", - "意大利": "इटली", - "法国": "फ्रांस", - "西班牙": "स्पेन", - "南非": "दक्षिण अफ्रीका", - "沙特阿拉伯": "सऊदी अरब", - "土耳其": "तुर्की", - "日本": "जापान", - "韩国": "दक्षिण कोरिया", - "新加坡": "सिंगापुर", - "马来西亚": "मलेशिया", - "泰国": "थाईलैंड", - "越南": "वियतनाम", - "印度": "भारत", - "巴基斯坦": "पाकिस्तान", - "菲律宾": "फिलीपींस", - "印度尼西亚": "इंडोनेशिया", - "阿联酋": "संयुक्त अरब अमीरात", - "墨西哥": "मेक्सिको", - "巴西": "ब्राजील", - "阿根廷": "अर्जेंटीना", - "澳大利亚": "ऑस्ट्रेलिया", - "新西兰": "न्यूजीलैंड", - "中国香港": "हांगकांग (चीन)", - "中国澳门": "मकाऊ (चीन)", - "中国台湾": "ताइवान (चीन)", - "埃及": "मिस्र", - "希腊": "ग्रीस", - "荷兰": "नीदरलैंड", - "比利时": "बेल्जियम", - "匈牙利": "हंगरी", - "罗马尼亚": "रोमानिया", - "瑞士": "स्विट्जरलैंड", - "奥地利": "ऑस्ट्रिया", - "丹麦": "डेनमार्क", - "瑞典": "स्वीडन", - "挪威": "नॉर्वे", - "波兰": "पोलैंड", - "秘鲁": "पेरू", - "智利": "चिली", - "哥伦比亚": "कोलंबिया", - "委内瑞拉": "वेनेजुएला", - "葡萄牙": "पुर्तगाल", - "卢森堡": "लक्ज़मबर्ग", - "爱尔兰": "आयरलैंड", - "冰岛": "आइसलैंड", - "阿尔巴尼亚": "अल्बानिया", - "马耳他": "माल्टा", - "塞浦路斯": "साइप्रस", - "芬兰": "फिनलैंड", - "保加利亚": "बुल्गारिया", - "立陶宛": "लिथुआनिया", - "拉脱维亚": "लातविया", - "爱沙尼亚": "एस्टोनिया", - "乌克兰": "यूक्रेन", - "塞尔维亚": "सर्बिया", - "克罗地亚": "क्रोएशिया", - "斯洛文尼亚": "स्लोवेनिया", - "捷克": "चेक गणराज्य", - "斯洛伐克": "स्लोवाकिया", - "危地马拉": "ग्वाटेमाला", - "萨尔瓦多": "अल सल्वाडोर", - "洪都拉斯": "होंडुरास", - "尼加拉瓜": "निकारागुआ", - "哥斯达黎加": "कोस्टा रिका", - "巴拿马": "पनामा", - "海地": "हैती", - "玻利维亚": "बोलीविया", - "厄瓜多尔": "इक्वाडोर", - "巴拉圭": "पैराग्वे", - "乌拉圭": "उरुग्वे", - "摩洛哥": "मोरक्को", - "阿尔及利亚": "अल्जीरिया", - "突尼斯": "ट्यूनीशिया", - "尼日利亚": "नाइजीरिया", - "加纳": "घाना", - "埃塞俄比亚": "इथियोपिया", - "肯尼亚": "केन्या", - "坦桑尼亚": "तंजानिया", - "乌干达": "युगांडा", - "孟加拉国": "बांग्लादेश", - "以色列": "इज़राइल", - "黎巴嫩": "लेबनान", - "约旦": "जॉर्डन", - "伊拉克": "इराक", - "科威特": "कुवैत", - "巴林": "बहरीन", - "卡塔尔": "कतर", - "阿曼": "ओमान", - "阿富汗": "अफगानिस्तान", - "斯里兰卡": "श्रीलंका", - "缅甸": "म्यांमार", - "尼泊尔": "नेपाल", - "蒙古": "मंगोलिया", - "柬埔寨": "कंबोडिया", - "老挝": "लाओस", - "文莱": "ब्रुनेई", - "东帝汶": "पूर्वी तिमोर", - "斐济": "फिजी", - "所罗门群岛": "सोलोमन द्वीप समूह", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "अनुवाद इतिहास", - "enableRecording": "रिकॉर्डिंग सक्षम करें", - "viewAudioFiles": "ऑडियो फ़ाइलें देखें", - "headsetUser": "हेडसेट उपयोगकर्ता", - "phoneUser": "फ़ोन उपयोगकर्ता", - "selectSourceLanguage": "स्रोत भाषा चुनें", - "selectTargetLanguage": "लक्ष्य भाषा चुनें", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "अभी तक कोई इतिहास नहीं", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "इतिहास साफ़ करें", - "clearHistoryConfirm": - "क्या आप वाकई सभी अनुवाद इतिहास साफ़ करना चाहते हैं? यह क्रिया पूर्ववत नहीं की जा सकती है।", - "unknownLanguage": "अज्ञात भाषा", - "deleteSessionRecord": "सत्र रिकॉर्ड हटाएं", - "deleteSessionConfirm": - "क्या आप वाकई इस सत्र के सभी अनुवाद रिकॉर्ड हटाना चाहते हैं? यह क्रिया पूर्ववत नहीं की जा सकती है।", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "ऑडियो फ़ाइलों का अनुवाद करें", - "noAudioFiles": "अभी तक कोई ऑडियो फ़ाइल नहीं", - "calculating": "गणना हो रही है...", - "playing": "चल रहा है...", - "paused": "रोका गया", - "clickToPlay": "चलाने के लिए क्लिक करें", - "rename": "नाम बदलें", - "smartTranscription": "स्मार्ट ट्रांसक्रिप्शन", - "renameAudioFile": "ऑडियो फ़ाइल का नाम बदलें", - "enterNewFileName": "कृपया एक नया फ़ाइल नाम दर्ज करें", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "मूल रिकॉर्ड", - "recordSummary": "रिकॉर्ड सारांश", - "clickToGenerateSummary": - "सत्र सारांश बनाने के लिए नीचे दिए गए बटन पर क्लिक करें", - "summaryContent": "सारांश सामग्री", - "copied": "कॉपी किया गया", - "summaryCopiledToClipboard": "सारांश क्लिपबोर्ड पर कॉपी किया गया", - "extractSummary": "सारांश निकालें", - "summaryGenerated": "सारांश बनाया गया", - "generating": "बनाया जा रहा है...", - "regenerate": "पुनः बनाएं", - "summaryTimeoutMessage": - "सारांश बनाने का अनुरोध समय समाप्त हो गया, शायद नेटवर्क समस्याओं या व्यस्त सर्वर के कारण।", - "deleteTranslationRecord": "अनुवाद रिकॉर्ड हटाएं", - "deleteTranslationConfirm": - "क्या आप वाकई इस अनुवाद रिकॉर्ड को हटाना चाहते हैं? यह क्रिया पूर्ववत नहीं की जा सकती है।", - "originalText": "मूल पाठ", - "translatedText": "अनुवादित पाठ", - "sessionSummary": "सत्र सारांश", - "cannotShare": "साझा नहीं किया जा सकता", - "generateSummaryFirst": "कृपया पहले एक सारांश बनाएं", - "translationSessionRecord": "अनुवाद सत्र रिकॉर्ड", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "डिवाइस पेयरिंग", "connectYourDeepSoundHeadset": "अपना Voitrans हेडसेट कनेक्ट करें", "bind": "बाँधें", @@ -1355,14 +1273,11 @@ const Map hiIN = { "autoInputCode": "कोड स्वतः दर्ज करें", "skipBinding": "बाँधना छोड़ें", "rescan": "पुनः स्कैन करें", - "verifyingDevice": "डिवाइस सत्यापित हो रहा है...", "confirmBinding": "बाँधने की पुष्टि करें", "associatingDevice": "डिवाइस को संबद्ध किया जा रहा है...", "goToBluetoothSettings": "ब्लूटूथ सेटिंग्स पर जाएं", 'bluetooth': 'ब्लूटूथ', - - // 配对状态文本 "readyToPair": "पेयर करने के लिए तैयार", "preparingPairingEnvironment": "पेयरिंग वातावरण तैयार हो रहा है...", "connectDeepSoundViaSystemBluetooth": @@ -1372,8 +1287,6 @@ const Map hiIN = { "waitingCompletePairing": "कृपया प्रतीक्षा करें, पेयरिंग पूरी हो रही है...", "pairingSuccessRedirecting": "पेयरिंग सफल! होमपेज पर रीडायरेक्ट किया जा रहा है...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "कृपया सुनिश्चित करें कि आप Voitrans डिवाइस से जुड़े हैं", "deviceAlreadyBoundToOtherAccount": @@ -1385,19 +1298,12 @@ const Map hiIN = { "authorizationFailedCheckCode": "प्राधिकरण विफल, कृपया जांचें कि प्राधिकरण कोड सही है या नहीं", "pairingFailedRetry": "पेयरिंग विफल, कृपया पुनः प्रयास करें", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'कृपया ब्लूटूथ सक्षम करें', 'deviceDisconnected': 'डिवाइस डिस्कनेक्ट हो गया', 'readyToStartPairing': 'पेयरिंग शुरू करने के लिए तैयार', 'checkingEnvironment': 'वातावरण की जाँच हो रही है...', 'ensureHeadsetOnAndPairingMode': 'कृपया सुनिश्चित करें कि हेडसेट चालू है और पेयरिंग मोड में है', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'सुरक्षित कनेक्शन स्थापित हो रहा है...', 'needManualBindingAuthCode': 'मैनुअल बाइंडिंग प्राधिकरण कोड की आवश्यकता है...', @@ -1419,8 +1325,6 @@ const Map hiIN = { 'bleConnectionFailed': 'BLE कनेक्शन विफल', 'deviceAuthorizationFailedCheckCode': 'डिवाइस प्राधिकरण विफल, कृपया प्राधिकरण कोड जांचें', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1433,7 +1337,18 @@ const Map hiIN = { 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "उपयोगकर्ता प्रतिक्रिया", 'feedbackInfo': 'प्रतिक्रिया या सुझाव दें', 'feedbackDescription': @@ -1476,7 +1391,7 @@ const Map hiIN = { "removeEarbudsEnsureBattery": "दोनों ईयरबड निकालें, और सुनिश्चित करें कि दोनों की बैटरी 20% से ऊपर है", - // 音乐列表页面 + // 音乐模块 "noMusic": "कोई संगीत नहीं", // 暂无音乐 "noPlayingMusic": "कोई संगीत नहीं चल रहा है", // 暂无播放音乐 "unknownSong": "अज्ञात गीत", // 未知歌曲 @@ -1524,22 +1439,122 @@ const Map hiIN = { "波斯语": "फारसी", "斯瓦希里语": "स्वाहिली", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "ईमेल", + "中国": "चीन", + "美国": "संयुक्त राज्य अमेरिका", + "加拿大": "कनाडा", + "俄罗斯": "रूस", + "英国": "यूनाइटेड किंगडम", + "德国": "जर्मनी", + "意大利": "इटली", + "法国": "फ्रांस", + "西班牙": "स्पेन", + "南非": "दक्षिण अफ्रीका", + "沙特阿拉伯": "सऊदी अरब", + "土耳其": "तुर्की", + "日本": "जापान", + "韩国": "दक्षिण कोरिया", + "新加坡": "सिंगापुर", + "马来西亚": "मलेशिया", + "泰国": "थाईलैंड", + "越南": "वियतनाम", + "印度": "भारत", + "巴基斯坦": "पाकिस्तान", + "菲律宾": "फिलीपींस", + "印度尼西亚": "इंडोनेशिया", + "阿联酋": "संयुक्त अरब अमीरात", + "墨西哥": "मेक्सिको", + "巴西": "ब्राजील", + "阿根廷": "अर्जेंटीना", + "澳大利亚": "ऑस्ट्रेलिया", + "新西兰": "न्यूजीलैंड", + "中国香港": "हांगकांग (चीन)", + "中国澳门": "मकाऊ (चीन)", + "中国台湾": "ताइवान (चीन)", + "埃及": "मिस्र", + "希腊": "ग्रीस", + "荷兰": "नीदरलैंड", + "比利时": "बेल्जियम", + "匈牙利": "हंगरी", + "罗马尼亚": "रोमानिया", + "瑞士": "स्विट्जरलैंड", + "奥地利": "ऑस्ट्रिया", + "丹麦": "डेनमार्क", + "瑞典": "स्वीडन", + "挪威": "नॉर्वे", + "波兰": "पोलैंड", + "秘鲁": "पेरू", + "智利": "चिली", + "哥伦比亚": "कोलंबिया", + "委内瑞拉": "वेनेजुएला", + "葡萄牙": "पुर्तगाल", + "卢森堡": "लक्ज़मबर्ग", + "爱尔兰": "आयरलैंड", + "冰岛": "आइसलैंड", + "阿尔巴尼亚": "अल्बानिया", + "马耳他": "माल्टा", + "塞浦路斯": "साइप्रस", + "芬兰": "फिनलैंड", + "保加利亚": "बुल्गारिया", + "立陶宛": "लिथुआनिया", + "拉脱维亚": "लातविया", + "爱沙尼亚": "एस्टोनिया", + "乌克兰": "यूक्रेन", + "塞尔维亚": "सर्बिया", + "克罗地亚": "क्रोएशिया", + "斯洛文尼亚": "स्लोवेनिया", + "捷克": "चेक गणराज्य", + "斯洛伐克": "स्लोवाकिया", + "危地马拉": "ग्वाटेमाला", + "萨尔瓦多": "अल सल्वाडोर", + "洪都拉斯": "होंडुरास", + "尼加拉瓜": "निकारागुआ", + "哥斯达黎加": "कोस्टा रिका", + "巴拿马": "पनामा", + "海地": "हैती", + "玻利维亚": "बोलीविया", + "厄瓜多尔": "इक्वाडोर", + "巴拉圭": "पैराग्वे", + "乌拉圭": "उरुग्वे", + "摩洛哥": "मोरक्को", + "阿尔及利亚": "अल्जीरिया", + "突尼斯": "ट्यूनीशिया", + "尼日利亚": "नाइजीरिया", + "加纳": "घाना", + "埃塞俄比亚": "इथियोपिया", + "肯尼亚": "केन्या", + "坦桑尼亚": "तंजानिया", + "乌干达": "युगांडा", + "孟加拉国": "बांग्लादेश", + "以色列": "इज़राइल", + "黎巴嫩": "लेबनान", + "约旦": "जॉर्डन", + "伊拉克": "इराक", + "科威特": "कुवैत", + "巴林": "बहरीन", + "卡塔尔": "कतर", + "阿曼": "ओमान", + "阿富汗": "अफगानिस्तान", + "斯里兰卡": "श्रीलंका", + "缅甸": "म्यांमार", + "尼泊尔": "नेपाल", + "蒙古": "मंगोलिया", + "柬埔寨": "कंबोडिया", + "老挝": "लाओस", + "文莱": "ब्रुनेई", + "东帝汶": "पूर्वी तिमोर", + "斐济": "फिजी", + "所罗门群岛": "सोलोमन द्वीप समूह", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/hr_hr.dart b/lib/core/translations/language/hr_hr.dart index 40177044d..cf1deb6d2 100644 --- a/lib/core/translations/language/hr_hr.dart +++ b/lib/core/translations/language/hr_hr.dart @@ -1,4 +1,5 @@ const Map hrHR = { + // 通用 'continue': 'Nastavi', 'confirm': 'Potvrdi', @@ -18,6 +19,11 @@ const Map hrHR = { "unknownError": "Nepoznata greška", "asrConnectionFailed": "Povezivanje s uslugom za prepoznavanje govora nije uspjelo. Provjerite mrežu i pokušajte ponovno kasnije.", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "Povezivanje svijeta, izvan zvuka", @@ -28,7 +34,7 @@ const Map hrHR = { "explore": "Istraži", "settings": "Postavke", - // 语言 + // 语言列表 "followingSystem": "Prati sustav", "chinese": "Kineski", "english": "Engleski", @@ -72,7 +78,7 @@ const Map hrHR = { "arabic": "Arabski", "persian": "Persanski", - // 登录页 + // 登录模块 "welcome": "Dobrodošli", "loginTips": "Prijavite se ili registrirajte pomoću svog telefonskog broja ili e-pošte", @@ -101,13 +107,9 @@ const Map hrHR = { "resendVerificationCode": "Ponovno pošalji verifikacijski kod", "login": "Prijava", "usePasswordLogin": "Prijava lozinkom", - - // 隐私政策弹窗 "loginDeclaration": "Izjava tvrtke Voitrans", // Voitrans 声明 "welcomeToThisApp": "Dobrodošli u Voitrans, molimo pročitajte pažljivo", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", klikom na 'Slažem se i ulazim' potvrđujete da ste u potpunosti pročitali i da se slažete s gore navedenim ugovorima. Klikom na 'Ne slažem se' izaći ćete iz aplikacije.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Ne slažem se", // 不同意 @@ -168,7 +170,7 @@ const Map hrHR = { 'right': 'Desno', 'checkConnectionStatusFailed': 'Provjera statusa veze nije uspjela', -// 发现页 + // 发现页 "searchAi": "Traži AI funkcije...", "exploreSlogan": "Pametne slušalice, beskonačne mogućnosti", "exploreSlogan1": "Pametni pratilac, beskonačne mogućnosti", @@ -193,6 +195,7 @@ const Map hrHR = { "usageStats": "Statistika upotrebe", "usageStatsInfo": "Pregledajte statistiku upotrebe aplikacije", "scene": "Scenarij", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", @@ -213,7 +216,6 @@ const Map hrHR = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -230,7 +232,6 @@ const Map hrHR = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - // 通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", @@ -239,88 +240,79 @@ const Map hrHR = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', 'remaining': 'Remaining', 'featureDescription': 'Feature Description', - // AI 功能卡片 + 'paymentSuccess': 'Plaćanje uspješno', + 'paymentFailed': 'Plaćanje nije uspjelo', + 'gotIt': 'Razumijem', + 'paymentFailedTryAgain': 'Plaćanje nije uspjelo. Pokušajte ponovno.', + 'selectPaymentMethod': 'Odaberite način plaćanja', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Stvaranje WeChat narudžbe nije uspjelo', + 'alipayOrderCreateFailed': 'Stvaranje Alipay narudžbe nije uspjelo', + 'appleOrderCreateFailed': 'Stvaranje Apple narudžbe nije uspjelo', + 'googleOrderCreateFailed': 'Stvaranje Google narudžbe nije uspjelo', + 'paypalOrderCreateFailed': 'Stvaranje PayPal narudžbe nije uspjelo', + 'paymentException': 'Iznimka pri plaćanju', + 'paymentLaunchFailed': 'Pokretanje plaćanja nije uspjelo', + 'paymentExceptionWithError': 'Iznimka pri plaćanju: @error', + 'paymentProcessingCheckLater': 'Vaša narudžba se obrađuje. Provjerite kasnije.', + 'paymentResultQueryException': 'Neuspješno dohvaćanje rezultata plaćanja: @error', + 'orderConfirmedQuotaRefreshed': 'Narudžba je potvrđena. Vaša kvota je osvježena.', + 'paymentCompletedConfirming': 'Plaćanje je završeno. Potvrđivanje…', + 'paymentCancelled': 'Plaćanje je otkazano', + 'paypalOpenedCompleteInBrowser': 'PayPal je otvoren. Molimo dovršite plaćanje u pregledniku.', + 'paypalOpenFailed': 'Nije moguće otvoriti PayPal stranicu za plaćanje', + 'paymentTestTitle': 'Test plaćanja', + 'paymentTestOrderInfo': 'Informacije o testnoj narudžbi', + 'paymentTestProductId': 'ID proizvoda', + 'paymentTestProductDescription': 'Opis proizvoda', + 'paymentTestWechatDescription': 'Test WeChat plaćanja', + 'paymentTestAlipayDescription': 'Test Alipay plaćanja', + 'paymentTestAmount': 'Iznos', + 'paymentTestSelectAmount': 'Odaberite testni iznos', + 'paying': 'Plaćanje...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Status plaćanja', + 'errorInfoWithMessage': 'Greška: @message', + 'retest': 'Ponovo testiraj', + 'paymentTestInstructionsTitle': 'Upute', + 'paymentTestInstructionsContent': '1. Odaberite testni iznos (preporučeno: ¥0.01)\n2. Kliknite gumb za plaćanje za početak\n3. Dovršite plaćanje u aplikaciji za plaćanje\n4. Vratite se da provjerite rezultat', + 'startingWechatPayment': 'Pokretanje WeChat Pay-a...', + 'startingAlipayPayment': 'Pokretanje Alipay-a...', + 'wechatPaymentSuccess': 'WeChat Pay plaćanje uspješno!', + 'wechatPaymentFailed': 'WeChat Pay plaćanje nije uspjelo', + 'wechatPaymentLaunchFailed': 'Pokretanje WeChat Pay-a nije uspjelo', + 'cannotLaunchWechatPayment': 'Nije moguće pokrenuti WeChat Pay', + 'wechatPaymentException': 'WeChat Pay iznimka', + 'wechatPaymentTestCompleted': 'Test WeChat Pay plaćanja je završen', + 'alipayPaymentSuccess': 'Alipay plaćanje uspješno!', + 'alipayPaymentFailed': 'Alipay plaćanje nije uspjelo', + 'alipayPaymentLaunchFailed': 'Pokretanje Alipay-a nije uspjelo', + 'cannotLaunchAlipayPayment': 'Nije moguće pokrenuti Alipay', + 'alipayPaymentException': 'Alipay iznimka', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": + 'Insufficient balance, please go to the corresponding recharge page to recharge.', + "recharge": 'Go to Recharge', + "aiMemberExpiredDesc": + 'AI membership expired, please go to the membership recharge page to renew.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', 'aiHeaderDesc2': @@ -343,7 +335,46 @@ const Map hrHR = { 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Real-time Transcription', + 'sceneLexicon': 'Scenario Glossary', + 'subtitleDisplay': 'Subtitles', + 'transHeaderDesc1': + 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', + 'translateZhEn': 'Chinese-English translation', + 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', + 'multiLangTextTranslation': 'Multilingual text translation', + 'termOptimizationContextPreserve': + 'Terminology optimization and context preservation', + 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', + 'personalVocabularyMemory': 'Personal vocabulary memory', + 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', + 'colorHighContrast': 'High color contrast', + 'transDisclaimer': + 'Translation performance depends on microphone, network latency, and ambient noise.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Meeting Recording', + 'transcriptionAndSummary': 'Transcription & Summary', + 'keywordSearch': 'Keyword Search', + 'collaborationSharing': 'Collaboration & Sharing', + 'meetingHeaderDesc1': + 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'meetingHeaderDesc2': + 'Suitable for business meetings, class notes, and interview minutes.', + 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingSpeakerTagging': 'Speaker labeling', + 'meetingLongAudioTranscription': 'Long audio transcription', + 'meetingKeyPointSummary': 'Key point extraction', + 'meetingTopicNameSearch': 'Search by topic/name', + 'meetingTimelineJump': 'Timeline jump', + 'meetingExportSummary': 'Export minutes', + 'meetingMultiPlatformShare': 'Share across platforms', + 'meetingDisclaimer': + 'Use in quiet environments; performance depends on microphone and network.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', 'higherQuota': 'Higher usage quota', 'lowerUnitPrice': 'Lower unit price', @@ -359,7 +390,32 @@ const Map hrHR = { 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Translation Basic 100', + 'trans_002_name': 'Translation Basic 500', + 'trans_003_name': 'Translation Basic 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': 'Includes 100 translations (voice/text).', + 'trans_002_desc': 'Includes 500 translations (voice/text).', + 'trans_003_desc': 'Includes 1000 translations (voice/text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "Preskoči", 'next': 'Next', 'sayLilyHint': 'Say "Lily Lily" to the mic', @@ -370,7 +426,6 @@ const Map hrHR = { 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', 'confirmInput': 'Confirm Input', 'guideClickSendPrefix': 'Tap send, ', - // AI 引导步骤 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', 'guideWeatherInput': 'What’s the weather today?', 'guideWeatherSend': 'Lily will report the weather in real time', @@ -397,7 +452,7 @@ const Map hrHR = { 'guideSmsSend': 'Lily will send the message', 'guideSmsEnd': 'Message sent—voice control is convenient', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Započni sastanak", 'edit': 'Uredi', 'delete': 'Izbriši', @@ -409,8 +464,6 @@ const Map hrHR = { 'recordingDetails': 'Detalji snimke', 'aiSummary': 'AI sažetak', 'meetingTranscript': 'Transkript sastanka', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -461,7 +514,6 @@ const Map hrHR = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -470,6 +522,97 @@ const Map hrHR = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': 'Stvori', + 'templateDetails': 'Pojedinosti predloška', + 'tag': 'Oznaka', + 'description': 'Opis', + 'template': 'Predložak', + 'deleteTemplate': 'Obriši predložak', + 'deleteTemplateConfirm': 'Jeste li sigurni da želite obrisati ovaj predložak?', + 'editTemplate': 'Uredi predložak', + 'createTemplate': 'Stvori predložak', + 'name': 'Naziv', + 'templateContentHint': 'Molimo unesite sadržaj predloška! Savjet: Kliknite na AI gumb iznad za brzo generiranje sadržaja predloška na temelju naziva i opisa koje ste unijeli', + 'inputNameHint': 'Molimo unesite naziv', + 'inputDescHint': 'Molimo unesite opis', + 'custom': 'Prilagođeno', + 'pleaseEnter': 'Molimo unesite', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': + 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Spremi mentalnu mapu', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'Izvoz', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Primijeni na sve odlomke ovog govornika', + 'summaryWillBeUpdatedAutomatically': + 'Sažetak će se automatski ažurirati prema predlošku', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -488,7 +631,7 @@ const Map hrHR = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -524,8 +667,6 @@ const Map hrHR = { 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -554,105 +695,26 @@ const Map hrHR = { 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Primijeni na sve odlomke ovog govornika', - 'summaryWillBeUpdatedAutomatically': - 'Sažetak će se automatski ažurirati prema predlošku', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': 'Analiza nije uspjela, pokušajte ponovno kasnije', + 'transcriptionFailed': 'Transkripcija nije uspjela, pokušajte ponovno kasnije', + 'summaryFailed': 'Sažetak nije uspio, pokušajte ponovno kasnije', + 'summaryFailedShort': 'Sažetak nije uspio', + 'transcriptionFailedShort': 'Transkripcija nije uspjela', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Audio reproduktor nije spreman, molimo pričekajte', + 'playFailed': 'Reprodukcija nije uspjela', + 'audioFileNotFound': 'Audio datoteka nije pronađena', + 'fetchingAudio': 'Dohvaćanje audio zapisa iz oblaka...', + 'playerLoadFailed': 'Audio reproduktor se nije uspio učitati', // 设置页 "systemSettings": "Postavke sustava", @@ -705,26 +767,15 @@ const Map hrHR = { "bleHeadsetFirmwareUpgrade": "Nadogradnja verzije firmvera BLE slušalica", "deviceManagement": "Upravljanje uređajima", "manageConnectedDevices": "Upravljanje povezanim Bluetooth uređajima", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Trenutno imate najnoviju verziju {version}', 'checkUpdateFailed': 'Provjera ažuriranja nije uspjela', 'networkErrorRetry': 'Mrežna greška, pokušajte ponovno kasnije', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Glasovni chat u stvarnom vremenu", "realtimeVoiceChatInfo": "Iskusite funkciju inteligentne glasovne interakcije (pregled funkcije)", "loading": "Učitavanje...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -740,8 +791,7 @@ const Map hrHR = { "Are you sure you want to unbind device \"{deviceName}\"?", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Obriši povijest razgovora", "online": "Na mreži", @@ -771,8 +821,9 @@ const Map hrHR = { "swipeUpForMore": "Prijeđite prstom prema gore za više", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': 'Kada je uključeno: AI neće biti prekinut vašim glasom dok govori i može obraditi samo jedan krug razgovora odjednom. Za početak novog kruga, samo izgovorite riječ za buđenje.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -784,7 +835,7 @@ const Map hrHR = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Zdravo! Ja sam **Lily**, mogu vam pomoći:\n\n' '• Odgovarati na pitanja i pružati informacije\n\n' '• Glasovno prevođenje u stvarnom vremenu\n\n' @@ -804,18 +855,17 @@ const Map hrHR = { 'startVoiceInput': 'Započni unos glasom', 'startPhoneCallMode': 'Započni način poziva, započni unos glasom', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Unesite svoju poruku ovdje...', // 全屏编辑器输入提示 'characterCount': '{count} znakova', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopiraj', 'copySuccess': 'Uspješno kopirano', 'report': 'Prijavi', 'submitSuccess': 'Uspješno poslano', 'submitFailed': 'Slanje nije uspjelo', 'reportSubmitted': 'Prijava je poslana, obradit ćemo je što je prije moguće', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Štetno/Opasno', 'pornographicVulgar': 'Pornografski/Prostački', 'misleadingAttack': 'Obmanjujuće/Napad', @@ -825,17 +875,14 @@ const Map hrHR = { 'other': 'Ostalo', 'reportDescriptionHint': 'Želimo znati razlog vaše prijave, možete opisati problem s kojim ste se suočili.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Generirano od strane AI', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'Evo nekoliko preporučenih pjesama:', 'playList': 'Popis pjesama', 'moreMusic': 'Još glazbe', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'sati', // 小时单位 @@ -850,7 +897,7 @@ const Map hrHR = { "bicycling": "Biciklizam", "tsransit": "Javni prijevoz", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Upit o vremenskim uvjetima:', 'highest': 'Najviša', 'lowest': 'Najniža', @@ -879,18 +926,8 @@ const Map hrHR = { "friday": "Pet", "saturday": "Sub", "sunday": "Ned", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Sunčano", "partlyCloudy": "Djelomično oblačno", "partlySunny": "Pretežno sunčano", @@ -911,7 +948,130 @@ const Map hrHR = { "haze": "Sumaglica", "strongWind": "Jak vjetar", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "Povijest prijevoda", + "enableRecording": "Omogući snimanje", + "viewAudioFiles": "Prikaži audio datoteke", + "headsetUser": "Korisnik slušalica", + "phoneUser": "Korisnik telefona", + "selectSourceLanguage": "Odaberi izvorni jezik", + "selectTargetLanguage": "Odaberi ciljni jezik", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": + "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Nema povijesti", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "Obriši povijest", + "clearHistoryConfirm": + "Jeste li sigurni da želite obrisati cijelu povijest prijevoda? Ova se radnja ne može poništiti.", + "unknownLanguage": "Nepoznat jezik", + "deleteSessionRecord": "Obriši zapis sesije", + "deleteSessionConfirm": + "Jeste li sigurni da želite obrisati sve zapise prijevoda za ovu sesiju? Ova se radnja ne može poništiti.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": + "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": + "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": + "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": + "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Prevedi audio datoteke", + "noAudioFiles": "Nema audio datoteka", + "calculating": "Izračunavanje...", + "playing": "Reprodukcija...", + "paused": "Pauzirano", + "clickToPlay": "Kliknite za reprodukciju", + "rename": "Preimenuj", + "smartTranscription": "Pametna transkripcija", + "renameAudioFile": "Preimenuj audio datoteku", + "enterNewFileName": "Unesite novi naziv datoteke", + + // 翻译模块 - 翻译详情 + "originalRecord": "Originalni zapis", + "recordSummary": "Sažetak zapisa", + "clickToGenerateSummary": + "Kliknite na gumb ispod da biste generirali sažetak sesije", + "summaryContent": "Sadržaj sažetka", + "copied": "Kopirano", + "summaryCopiledToClipboard": "Sažetak je kopiran u međuspremnik", + "extractSummary": "Izdvoji sažetak", + "summaryGenerated": "Sažetak je generiran", + "generating": "Generiranje...", + "regenerate": "Ponovno generiraj", + "summaryTimeoutMessage": + "Isteklo je vrijeme za generiranje sažetka, možda zbog problema s mrežom ili zauzetosti poslužitelja.", + "deleteTranslationRecord": "Obriši zapis prijevoda", + "deleteTranslationConfirm": + "Jeste li sigurni da želite obrisati ovaj zapis prijevoda? Ova se radnja ne može poništiti.", + "originalText": "Originalni tekst", + "translatedText": "Prevedeni tekst", + "sessionSummary": "Sažetak sesije", + "cannotShare": "Nije moguće dijeliti", + "generateSummaryFirst": "Prvo generirajte sažetak", + "translationSessionRecord": "Zapis sesije prevođenja", + + // 个人资料模块 "editProfile": "Uredi osobne podatke", "avatar": "Avatar", "nickname": "Nadimak", @@ -927,8 +1087,6 @@ const Map hrHR = { 'Jeste li sigurni da želite trajno obrisati svoj račun? Ova se radnja ne može poništiti.', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'Mrežna veza nije uspjela, provjerite postavke mreže i pokušajte ponovno', 'serverTemporarilyUnavailable': @@ -945,10 +1103,6 @@ const Map hrHR = { 'Mrežna veza nije uspjela, provjerite postavke mreže', 'serverInternalErrorRetryLater': 'Interna greška na poslužitelju, pokušajte ponovno kasnije', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Kompresija slike nije uspjela', 'avatarUpdateFailed': 'Ažuriranje avatara nije uspjelo', 'usernameCannotBeEmpty': 'Korisničko ime ne može biti prazno', @@ -959,8 +1113,6 @@ const Map hrHR = { 'logoutFailedRetry': 'Odjava nije uspjela, pokušajte ponovno', 'accountPermanentlyDeleted': 'Račun je trajno obrisan', 'deleteAccountFailedRetry': 'Brisanje računa nije uspjelo, pokušajte ponovno', - - // 账号服务相关 'clearUserDataFailed': 'Brisanje korisničkih podataka nije uspjelo', // 清理用户数据失败 'deleteUserDataFailed': @@ -977,7 +1129,12 @@ const Map hrHR = { 'accountServiceInitialized': 'AccountService je inicijaliziran', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': + 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', 'getPermissionStatusFailed': 'Dohvaćanje statusa dopuštenja nije uspjelo', 'communicationPermissions': 'Komunikacijska dopuštenja', 'bluetoothPermissions': 'Bluetooth Permissions', @@ -990,7 +1147,6 @@ const Map hrHR = { 'phone': 'Telefon', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'Pisanje u kalendar', @@ -1047,8 +1203,6 @@ const Map hrHR = { 'permanentDenialText': 'Trajno ste odbili dopuštenje za {permission}, idite u postavke aplikacije da biste ga omogućili', 'goToSettings': 'Idi na postavke', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': @@ -1073,7 +1227,6 @@ const Map hrHR = { 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', @@ -1083,8 +1236,6 @@ const Map hrHR = { 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', 'storagePermissionPermanentDenial': 'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', - - //permission_util.dart 'permissionUtilNeed': 'Need ', 'permissionUtilPermission': ' Permission', 'permissionUtilRestricted': ' Permission Restricted', @@ -1092,7 +1243,20 @@ const Map hrHR = { 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigacija u tijeku', + 'native.notification.navigation.keepRunning': 'Navigacija, držite aplikaciju pokrenutom', + 'native.notification.bleAgent.running': 'Glasovni asistent je pokrenut', + 'native.notification.audioRecording.recording': 'Snimanje zvuka, dodirnite za povratak u aplikaciju', + 'native.notification.music.waiting': 'Čekanje na reprodukciju', + 'native.notification.music.previous': 'Prethodna', + 'native.notification.music.next': 'Sljedeća', + 'native.notification.music.play': 'Reproduciraj', + 'native.notification.music.pause': 'Pauza', + 'native.notification.qqMusic.playing': 'Reprodukcija glazbe', + + // 版本更新 'newVersionFound': 'Pronađena nova verzija', // 版本更新对话框标题 'remindLater': 'Podsjeti me kasnije', // 稍后提醒按钮 'updateNow': 'Ažuriraj sada', // 立即更新按钮 @@ -1103,253 +1267,7 @@ const Map hrHR = { 'updateErrorRetry': 'Došlo je do greške tijekom ažuriranja, pokušajte ponovno kasnije', // 更新错误重试提示 - //国家列表 - "邮箱": "E-pošta", - "中国": "Kina", - "美国": "SAD", - "加拿大": "Kanada", - "俄罗斯": "Rusija", - "英国": "Ujedinjeno Kraljevstvo", - "德国": "Njemačka", - "意大利": "Italija", - "法国": "Francuska", - "西班牙": "Španjolska", - "南非": "Južna Afrika", - "沙特阿拉伯": "Saudijska Arabija", - "土耳其": "Turska", - "日本": "Japan", - "韩国": "Južna Koreja", - "新加坡": "Singapur", - "马来西亚": "Malezija", - "泰国": "Tajland", - "越南": "Vijetnam", - "印度": "Indija", - "巴基斯坦": "Pakistan", - "菲律宾": "Filipini", - "印度尼西亚": "Indonezija", - "阿联酋": "UAE", - "墨西哥": "Meksiko", - "巴西": "Brazil", - "阿根廷": "Argentina", - "澳大利亚": "Australija", - "新西兰": "Novi Zeland", - "中国香港": "Hong Kong (Kina)", - "中国澳门": "Makao (Kina)", - "中国台湾": "Tajvan (Kina)", - "埃及": "Egipat", - "希腊": "Grčka", - "荷兰": "Nizozemska", - "比利时": "Belgija", - "匈牙利": "Mađarska", - "罗马尼亚": "Rumunjska", - "瑞士": "Švicarska", - "奥地利": "Austrija", - "丹麦": "Danska", - "瑞典": "Švedska", - "挪威": "Norveška", - "波兰": "Poljska", - "秘鲁": "Peru", - "智利": "Čile", - "哥伦比亚": "Kolumbija", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugal", - "卢森堡": "Luksemburg", - "爱尔兰": "Irska", - "冰岛": "Island", - "阿尔巴尼亚": "Albanija", - "马耳他": "Malta", - "塞浦路斯": "Cipar", - "芬兰": "Finska", - "保加利亚": "Bugarska", - "立陶宛": "Litva", - "拉脱维亚": "Latvija", - "爱沙尼亚": "Estonija", - "乌克兰": "Ukrajina", - "塞尔维亚": "Srbija", - "克罗地亚": "Hrvatska", - "斯洛文尼亚": "Slovenija", - "捷克": "Češka", - "斯洛伐克": "Slovačka", - "危地马拉": "Gvatemala", - "萨尔瓦多": "Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nikaragva", - "哥斯达黎加": "Kostarika", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolivija", - "厄瓜多尔": "Ekvador", - "巴拉圭": "Paragvaj", - "乌拉圭": "Urugvaj", - "摩洛哥": "Maroko", - "阿尔及利亚": "Alžir", - "突尼斯": "Tunis", - "尼日利亚": "Nigerija", - "加纳": "Gana", - "埃塞俄比亚": "Etiopija", - "肯尼亚": "Kenija", - "坦桑尼亚": "Tanzanija", - "乌干达": "Uganda", - "孟加拉国": "Bangladeš", - "以色列": "Izrael", - "黎巴嫩": "Libanon", - "约旦": "Jordan", - "伊拉克": "Irak", - "科威特": "Kuvajt", - "巴林": "Bahrein", - "卡塔尔": "Katar", - "阿曼": "Oman", - "阿富汗": "Afganistan", - "斯里兰卡": "Šri Lanka", - "缅甸": "Mijanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongolija", - "柬埔寨": "Kambodža", - "老挝": "Laos", - "文莱": "Brunej", - "东帝汶": "Istočni Timor", - "斐济": "Fidži", - "所罗门群岛": "Salomonski Otoci", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Povijest prijevoda", - "enableRecording": "Omogući snimanje", - "viewAudioFiles": "Prikaži audio datoteke", - "headsetUser": "Korisnik slušalica", - "phoneUser": "Korisnik telefona", - "selectSourceLanguage": "Odaberi izvorni jezik", - "selectTargetLanguage": "Odaberi ciljni jezik", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Nema povijesti", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Obriši povijest", - "clearHistoryConfirm": - "Jeste li sigurni da želite obrisati cijelu povijest prijevoda? Ova se radnja ne može poništiti.", - "unknownLanguage": "Nepoznat jezik", - "deleteSessionRecord": "Obriši zapis sesije", - "deleteSessionConfirm": - "Jeste li sigurni da želite obrisati sve zapise prijevoda za ovu sesiju? Ova se radnja ne može poništiti.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Prevedi audio datoteke", - "noAudioFiles": "Nema audio datoteka", - "calculating": "Izračunavanje...", - "playing": "Reprodukcija...", - "paused": "Pauzirano", - "clickToPlay": "Kliknite za reprodukciju", - "rename": "Preimenuj", - "smartTranscription": "Pametna transkripcija", - "renameAudioFile": "Preimenuj audio datoteku", - "enterNewFileName": "Unesite novi naziv datoteke", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Originalni zapis", - "recordSummary": "Sažetak zapisa", - "clickToGenerateSummary": - "Kliknite na gumb ispod da biste generirali sažetak sesije", - "summaryContent": "Sadržaj sažetka", - "copied": "Kopirano", - "summaryCopiledToClipboard": "Sažetak je kopiran u međuspremnik", - "extractSummary": "Izdvoji sažetak", - "summaryGenerated": "Sažetak je generiran", - "generating": "Generiranje...", - "regenerate": "Ponovno generiraj", - "summaryTimeoutMessage": - "Isteklo je vrijeme za generiranje sažetka, možda zbog problema s mrežom ili zauzetosti poslužitelja.", - "deleteTranslationRecord": "Obriši zapis prijevoda", - "deleteTranslationConfirm": - "Jeste li sigurni da želite obrisati ovaj zapis prijevoda? Ova se radnja ne može poništiti.", - "originalText": "Originalni tekst", - "translatedText": "Prevedeni tekst", - "sessionSummary": "Sažetak sesije", - "cannotShare": "Nije moguće dijeliti", - "generateSummaryFirst": "Prvo generirajte sažetak", - "translationSessionRecord": "Zapis sesije prevođenja", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Uparivanje uređaja", "connectYourDeepSoundHeadset": "Povežite svoje Voitrans slušalice", "bind": "Poveži", @@ -1358,14 +1276,11 @@ const Map hrHR = { "autoInputCode": "Automatski unos koda", "skipBinding": "Preskoči povezivanje", "rescan": "Ponovno skeniraj", - "verifyingDevice": "Verifikacija uređaja...", "confirmBinding": "Potvrdi povezivanje", "associatingDevice": "Povezivanje uređaja...", "goToBluetoothSettings": "Idite na Bluetooth postavke", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Spremno za uparivanje", "preparingPairingEnvironment": "Priprema okruženja za uparivanje...", "connectDeepSoundViaSystemBluetooth": @@ -1375,8 +1290,6 @@ const Map hrHR = { "waitingCompletePairing": "Molimo pričekajte, uparivanje se završava...", "pairingSuccessRedirecting": "Uparivanje uspješno! Preusmjeravanje na početnu stranicu...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Provjerite jeste li povezani s Voitrans uređajem", "deviceAlreadyBoundToOtherAccount": @@ -1389,19 +1302,12 @@ const Map hrHR = { "authorizationFailedCheckCode": "Autorizacija nije uspjela, provjerite je li autorizacijski kod točan", "pairingFailedRetry": "Uparivanje nije uspjelo, pokušajte ponovno", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Omogućite Bluetooth', 'deviceDisconnected': 'Uređaj je isključen', 'readyToStartPairing': 'Spremno za početak uparivanja', 'checkingEnvironment': 'Provjera okruženja...', 'ensureHeadsetOnAndPairingMode': 'Provjerite jesu li slušalice uključene i u načinu uparivanja', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Uspostavljanje sigurne veze...', 'needManualBindingAuthCode': 'Potreban je kod za autorizaciju ručnog povezivanja...', @@ -1424,8 +1330,6 @@ const Map hrHR = { 'bleConnectionFailed': 'BLE veza nije uspjela', 'deviceAuthorizationFailedCheckCode': 'Autorizacija uređaja nije uspjela, provjerite autorizacijski kod', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1438,7 +1342,18 @@ const Map hrHR = { 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Povratne informacije korisnika", 'feedbackInfo': 'Dajte povratne informacije ili prijedloge', 'feedbackDescription': @@ -1481,7 +1396,7 @@ const Map hrHR = { "removeEarbudsEnsureBattery": "Izvadite obje slušalice i provjerite je li baterija obje iznad 20%", - // 音乐列表页面 + // 音乐模块 "noMusic": "Nema glazbe", // 暂无音乐 "noPlayingMusic": "Nema glazbe koja se reproducira", // 暂无播放音乐 "unknownSong": "Nepoznata pjesma", // 未知歌曲 @@ -1529,22 +1444,122 @@ const Map hrHR = { "波斯语": "Perzijski", "斯瓦希里语": "Svahili", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "E-pošta", + "中国": "Kina", + "美国": "SAD", + "加拿大": "Kanada", + "俄罗斯": "Rusija", + "英国": "Ujedinjeno Kraljevstvo", + "德国": "Njemačka", + "意大利": "Italija", + "法国": "Francuska", + "西班牙": "Španjolska", + "南非": "Južna Afrika", + "沙特阿拉伯": "Saudijska Arabija", + "土耳其": "Turska", + "日本": "Japan", + "韩国": "Južna Koreja", + "新加坡": "Singapur", + "马来西亚": "Malezija", + "泰国": "Tajland", + "越南": "Vijetnam", + "印度": "Indija", + "巴基斯坦": "Pakistan", + "菲律宾": "Filipini", + "印度尼西亚": "Indonezija", + "阿联酋": "UAE", + "墨西哥": "Meksiko", + "巴西": "Brazil", + "阿根廷": "Argentina", + "澳大利亚": "Australija", + "新西兰": "Novi Zeland", + "中国香港": "Hong Kong (Kina)", + "中国澳门": "Makao (Kina)", + "中国台湾": "Tajvan (Kina)", + "埃及": "Egipat", + "希腊": "Grčka", + "荷兰": "Nizozemska", + "比利时": "Belgija", + "匈牙利": "Mađarska", + "罗马尼亚": "Rumunjska", + "瑞士": "Švicarska", + "奥地利": "Austrija", + "丹麦": "Danska", + "瑞典": "Švedska", + "挪威": "Norveška", + "波兰": "Poljska", + "秘鲁": "Peru", + "智利": "Čile", + "哥伦比亚": "Kolumbija", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portugal", + "卢森堡": "Luksemburg", + "爱尔兰": "Irska", + "冰岛": "Island", + "阿尔巴尼亚": "Albanija", + "马耳他": "Malta", + "塞浦路斯": "Cipar", + "芬兰": "Finska", + "保加利亚": "Bugarska", + "立陶宛": "Litva", + "拉脱维亚": "Latvija", + "爱沙尼亚": "Estonija", + "乌克兰": "Ukrajina", + "塞尔维亚": "Srbija", + "克罗地亚": "Hrvatska", + "斯洛文尼亚": "Slovenija", + "捷克": "Češka", + "斯洛伐克": "Slovačka", + "危地马拉": "Gvatemala", + "萨尔瓦多": "Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nikaragva", + "哥斯达黎加": "Kostarika", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Bolivija", + "厄瓜多尔": "Ekvador", + "巴拉圭": "Paragvaj", + "乌拉圭": "Urugvaj", + "摩洛哥": "Maroko", + "阿尔及利亚": "Alžir", + "突尼斯": "Tunis", + "尼日利亚": "Nigerija", + "加纳": "Gana", + "埃塞俄比亚": "Etiopija", + "肯尼亚": "Kenija", + "坦桑尼亚": "Tanzanija", + "乌干达": "Uganda", + "孟加拉国": "Bangladeš", + "以色列": "Izrael", + "黎巴嫩": "Libanon", + "约旦": "Jordan", + "伊拉克": "Irak", + "科威特": "Kuvajt", + "巴林": "Bahrein", + "卡塔尔": "Katar", + "阿曼": "Oman", + "阿富汗": "Afganistan", + "斯里兰卡": "Šri Lanka", + "缅甸": "Mijanmar", + "尼泊尔": "Nepal", + "蒙古": "Mongolija", + "柬埔寨": "Kambodža", + "老挝": "Laos", + "文莱": "Brunej", + "东帝汶": "Istočni Timor", + "斐济": "Fidži", + "所罗门群岛": "Salomonski Otoci", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/hu_hu.dart b/lib/core/translations/language/hu_hu.dart index aaed87a6f..82fcdec4a 100644 --- a/lib/core/translations/language/hu_hu.dart +++ b/lib/core/translations/language/hu_hu.dart @@ -1,4 +1,5 @@ const Map huHU = { + // 通用 'continue': 'Folytatás', 'confirm': 'Megerősítés', @@ -18,6 +19,11 @@ const Map huHU = { "unknownError": "Ismeretlen hiba", "asrConnectionFailed": "Nem sikerült csatlakozni a beszédfelismerő szolgáltatáshoz. Ellenőrizze a hálózatot, majd próbálja meg később újra.", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "A világ összekötése, a hangon túl", @@ -28,7 +34,7 @@ const Map huHU = { "explore": "Felfedezés", "settings": "Beállítások", - // 语言 + // 语言列表 "followingSystem": "Rendszer követése", "chinese": "Kínai", "english": "Angol", @@ -72,7 +78,7 @@ const Map huHU = { "arabic": "Arab", "persian": "Persz", - // 登录页 + // 登录模块 "welcome": "Üdvözöljük", "loginTips": "Jelentkezzen be vagy regisztráljon telefonszámával vagy e-mail címével", @@ -102,13 +108,9 @@ const Map huHU = { "resendVerificationCode": "Megerősítő kód újraküldése", "login": "Bejelentkezés", "usePasswordLogin": "Bejelentkezés jelszóval", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans nyilatkozat", // Voitrans 声明 "welcomeToThisApp": "Üdvözöljük a Voitransban, kérjük, olvassa el figyelmesen", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", a 'Elfogadom és belépek' gombra kattintva megerősíti, hogy elolvasta és elfogadja a fenti megállapodásokat. A 'Nem fogadom el' gombra kattintva kilép az alkalmazásból.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Nem fogadom el", // 不同意 @@ -170,7 +172,7 @@ const Map huHU = { 'checkConnectionStatusFailed': 'A kapcsolat állapotának ellenőrzése sikertelen', -// 发现页 + // 发现页 "searchAi": "AI funkciók keresése...", "exploreSlogan": "Okos fülhallgatók, végtelen lehetőségek", "exploreSlogan1": "Okos társ, végtelen lehetőségek", @@ -193,6 +195,7 @@ const Map huHU = { "usageStats": "Használati statisztika", "usageStatsInfo": "Lásd a használati statisztikát", "scene": "Helyzet", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", @@ -213,7 +216,6 @@ const Map huHU = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -230,7 +232,6 @@ const Map huHU = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - // 通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", @@ -239,88 +240,79 @@ const Map huHU = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', 'remaining': 'Remaining', 'featureDescription': 'Feature Description', - // AI 功能卡片 + 'paymentSuccess': 'Fizetés sikeres', + 'paymentFailed': 'Fizetés sikertelen', + 'gotIt': 'Értem', + 'paymentFailedTryAgain': 'Fizetés sikertelen. Kérjük, próbálja újra.', + 'selectPaymentMethod': 'Fizetési mód kiválasztása', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'WeChat Pay rendelés létrehozása sikertelen', + 'alipayOrderCreateFailed': 'Alipay rendelés létrehozása sikertelen', + 'appleOrderCreateFailed': 'Apple rendelés létrehozása sikertelen', + 'googleOrderCreateFailed': 'Google rendelés létrehozása sikertelen', + 'paypalOrderCreateFailed': 'PayPal rendelés létrehozása sikertelen', + 'paymentException': 'Fizetési kivétel', + 'paymentLaunchFailed': 'Fizetés indítása sikertelen', + 'paymentExceptionWithError': 'Fizetési kivétel: @error', + 'paymentProcessingCheckLater': 'A rendelése feldolgozás alatt áll. Kérjük, ellenőrizze később.', + 'paymentResultQueryException': 'Nem sikerült lekérdezni a fizetés eredményét: @error', + 'orderConfirmedQuotaRefreshed': 'Rendelés megerősítve. A kvótája frissült.', + 'paymentCompletedConfirming': 'Fizetés befejezve. Megerősítés folyamatban…', + 'paymentCancelled': 'Fizetés megszakítva', + 'paypalOpenedCompleteInBrowser': 'PayPal megnyitva. Kérjük, fejezze be a fizetést a böngészőben.', + 'paypalOpenFailed': 'Nem sikerült megnyitni a PayPal fizetési oldalt', + 'paymentTestTitle': 'Fizetési teszt', + 'paymentTestOrderInfo': 'Teszt rendelési információ', + 'paymentTestProductId': 'Termékazonosító', + 'paymentTestProductDescription': 'Termékleírás', + 'paymentTestWechatDescription': 'WeChat Pay fizetési teszt', + 'paymentTestAlipayDescription': 'Alipay fizetési teszt', + 'paymentTestAmount': 'Összeg', + 'paymentTestSelectAmount': 'Válassza ki a teszt összeget', + 'paying': 'Fizetés...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Fizetés állapota', + 'errorInfoWithMessage': 'Hiba: @message', + 'retest': 'Újratesztelés', + 'paymentTestInstructionsTitle': 'Útmutató', + 'paymentTestInstructionsContent': '1. Válasszon egy teszt összeget (ajánlott: ¥0,01)\n2. Kattintson a fizetés gombra az indításhoz\n3. Fejezze be a fizetést a fizetési alkalmazásban\n4. Térjen vissza az eredmény ellenőrzéséhez', + 'startingWechatPayment': 'WeChat Pay indítása...', + 'startingAlipayPayment': 'Alipay indítása...', + 'wechatPaymentSuccess': 'WeChat Pay sikeres!', + 'wechatPaymentFailed': 'WeChat Pay sikertelen', + 'wechatPaymentLaunchFailed': 'WeChat Pay indítása sikertelen', + 'cannotLaunchWechatPayment': 'Nem sikerült elindítani a WeChat Pay-t', + 'wechatPaymentException': 'WeChat Pay kivétel', + 'wechatPaymentTestCompleted': 'WeChat Pay teszt befejezve', + 'alipayPaymentSuccess': 'Alipay sikeres!', + 'alipayPaymentFailed': 'Alipay sikertelen', + 'alipayPaymentLaunchFailed': 'Alipay indítása sikertelen', + 'cannotLaunchAlipayPayment': 'Nem sikerült elindítani az Alipay-t', + 'alipayPaymentException': 'Alipay kivétel', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": + 'Insufficient balance, please go to the corresponding recharge page to recharge.', + "recharge": 'Go to Recharge', + "aiMemberExpiredDesc": + 'AI membership expired, please go to the membership recharge page to renew.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', 'aiHeaderDesc2': @@ -343,7 +335,46 @@ const Map huHU = { 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Real-time Transcription', + 'sceneLexicon': 'Scenario Glossary', + 'subtitleDisplay': 'Subtitles', + 'transHeaderDesc1': + 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', + 'translateZhEn': 'Chinese-English translation', + 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', + 'multiLangTextTranslation': 'Multilingual text translation', + 'termOptimizationContextPreserve': + 'Terminology optimization and context preservation', + 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', + 'personalVocabularyMemory': 'Personal vocabulary memory', + 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', + 'colorHighContrast': 'High color contrast', + 'transDisclaimer': + 'Translation performance depends on microphone, network latency, and ambient noise.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Meeting Recording', + 'transcriptionAndSummary': 'Transcription & Summary', + 'keywordSearch': 'Keyword Search', + 'collaborationSharing': 'Collaboration & Sharing', + 'meetingHeaderDesc1': + 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'meetingHeaderDesc2': + 'Suitable for business meetings, class notes, and interview minutes.', + 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingSpeakerTagging': 'Speaker labeling', + 'meetingLongAudioTranscription': 'Long audio transcription', + 'meetingKeyPointSummary': 'Key point extraction', + 'meetingTopicNameSearch': 'Search by topic/name', + 'meetingTimelineJump': 'Timeline jump', + 'meetingExportSummary': 'Export minutes', + 'meetingMultiPlatformShare': 'Share across platforms', + 'meetingDisclaimer': + 'Use in quiet environments; performance depends on microphone and network.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', 'higherQuota': 'Higher usage quota', 'lowerUnitPrice': 'Lower unit price', @@ -359,7 +390,32 @@ const Map huHU = { 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Translation Basic 100', + 'trans_002_name': 'Translation Basic 500', + 'trans_003_name': 'Translation Basic 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': 'Includes 100 translations (voice/text).', + 'trans_002_desc': 'Includes 500 translations (voice/text).', + 'trans_003_desc': 'Includes 1000 translations (voice/text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "Kihagyás", 'next': 'Next', 'sayLilyHint': 'Say "Lily Lily" to the mic', @@ -370,7 +426,6 @@ const Map huHU = { 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', 'confirmInput': 'Confirm Input', 'guideClickSendPrefix': 'Tap send, ', - // AI 引导步骤 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', 'guideWeatherInput': 'What’s the weather today?', 'guideWeatherSend': 'Lily will report the weather in real time', @@ -397,7 +452,7 @@ const Map huHU = { 'guideSmsSend': 'Lily will send the message', 'guideSmsEnd': 'Message sent—voice control is convenient', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Megbeszélés indítása", 'edit': 'Szerkesztés', 'delete': 'Törlés', @@ -409,8 +464,6 @@ const Map huHU = { 'recordingDetails': 'Felvétel részletei', 'aiSummary': 'AI összefoglaló', 'meetingTranscript': 'Megbeszélés átirata', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -470,7 +523,6 @@ const Map huHU = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -479,6 +531,97 @@ const Map huHU = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': 'Létrehozás', + 'templateDetails': 'Sablon részletei', + 'tag': 'Címke', + 'description': 'Leírás', + 'template': 'Sablon', + 'deleteTemplate': 'Sablon törlése', + 'deleteTemplateConfirm': 'Biztosan törölni szeretné ezt a sablont?', + 'editTemplate': 'Sablon szerkesztése', + 'createTemplate': 'Sablon létrehozása', + 'name': 'Név', + 'templateContentHint': 'Kérjük, adja meg a sablon tartalmát! Tipp: Kattintson a fenti AI gombra, hogy gyorsan generáljon sablontartalmat a megadott név és leírás alapján', + 'inputNameHint': 'Kérjük, adjon meg nevet', + 'inputDescHint': 'Kérjük, adjon meg leírást', + 'custom': 'Egyéni', + 'pleaseEnter': 'Kérjük, adja meg', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': + 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Gondolattérkép mentése', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'Exportálás', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Alkalmazás a beszélő összes bekezdésére', + 'summaryWillBeUpdatedAutomatically': + 'Az összefoglaló automatikusan frissül a sablon alapján', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -497,7 +640,7 @@ const Map huHU = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -533,8 +676,6 @@ const Map huHU = { 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -563,105 +704,26 @@ const Map huHU = { 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Alkalmazás a beszélő összes bekezdésére', - 'summaryWillBeUpdatedAutomatically': - 'Az összefoglaló automatikusan frissül a sablon alapján', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': 'Az elemzés sikertelen, kérjük, próbálja újra később', + 'transcriptionFailed': 'Az átírás sikertelen, kérjük, próbálja újra később', + 'summaryFailed': 'Az összefoglalás sikertelen, kérjük, próbálja újra később', + 'summaryFailedShort': 'Összefoglalás sikertelen', + 'transcriptionFailedShort': 'Átírás sikertelen', + + // Meeting模块 - 播放器 + 'playerNotReady': 'A hanglejátszó nem áll készen, kérjük, várjon', + 'playFailed': 'Lejátszás sikertelen', + 'audioFileNotFound': 'Hangfájl nem található', + 'fetchingAudio': 'Hanganyag letöltése a felhőből...', + 'playerLoadFailed': 'A hanglejátszó betöltése sikertelen', // 设置页 "systemSettings": "Rendszerbeállítások", @@ -715,26 +777,15 @@ const Map huHU = { "bleHeadsetFirmwareUpgrade": "BLE fülhallgató firmware verzió frissítése", "deviceManagement": "Eszközkezelés", "manageConnectedDevices": "Csatlakoztatott Bluetooth eszközök kezelése", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Jelenleg a legfrissebb verziót használja: {version}', 'checkUpdateFailed': 'A frissítések keresése sikertelen', 'networkErrorRetry': 'Hálózati hiba, próbálja újra később', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Valós idejű hangcsevegés", "realtimeVoiceChatInfo": "Tapasztalja meg az intelligens hanginterakciós funkciót (funkció előnézet)", "loading": "Betöltés...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -750,8 +801,7 @@ const Map huHU = { "Are you sure you want to unbind device \"{deviceName}\"?", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Csevegési előzmények törlése", "online": "Online", @@ -782,8 +832,9 @@ const Map huHU = { "swipeUpForMore": "Húzza felfelé a továbbiakért", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': 'Ha engedélyezve van: Az AI nem szakítható meg a hangjával beszéd közben, és egyszerre csak egy beszélgetési kört tud kezelni. Új kör indításához mondja ki az ébresztő szót.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -795,7 +846,7 @@ const Map huHU = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Szia! **Lily** vagyok, segíthetek neked:\n\n' '• Kérdések megválaszolásában és információk nyújtásában\n\n' '• Valós idejű hangfordításban\n\n' @@ -815,18 +866,17 @@ const Map huHU = { 'startVoiceInput': 'Hangbevitel indítása', 'startPhoneCallMode': 'Hívás mód indítása, hangbevitel indítása', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Írja ide az üzenetét...', // 全屏编辑器输入提示 'characterCount': '{count} karakter', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Másolás', 'copySuccess': 'Sikeresen másolva', 'report': 'Jelentés', 'submitSuccess': 'Sikeresen elküldve', 'submitFailed': 'Küldés sikertelen', 'reportSubmitted': 'A jelentés elküldve, mihamarabb feldolgozzuk', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Káros/Nem biztonságos', 'pornographicVulgar': 'Pornográf/Vulgáris', 'misleadingAttack': 'Félrevezető/Támadó', @@ -836,17 +886,14 @@ const Map huHU = { 'other': 'Egyéb', 'reportDescriptionHint': 'Szeretnénk tudni a jelentés okát, leírhatja a tapasztalt problémát.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'AI által generált', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'Itt van néhány ajánlott zene:', 'playList': 'Lejátszási lista', 'moreMusic': 'Több zene', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'óra', // 小时单位 @@ -861,7 +908,7 @@ const Map huHU = { "bicycling": "Kerékpározás", "tsransit": "Tömegközlekedés", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Időjárási körülmények lekérdezése:', 'highest': 'Legmagasabb', 'lowest': 'Legalacsonyabb', @@ -890,18 +937,8 @@ const Map huHU = { "friday": "Pé", "saturday": "Szo", "sunday": "Va", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Napos", "partlyCloudy": "Részben felhős", "partlySunny": "Részben napos", @@ -922,7 +959,130 @@ const Map huHU = { "haze": "Pára", "strongWind": "Erős szél", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "Fordítási előzmények", + "enableRecording": "Felvétel engedélyezése", + "viewAudioFiles": "Hangfájlok megtekintése", + "headsetUser": "Fülhallgató-felhasználó", + "phoneUser": "Telefon-felhasználó", + "selectSourceLanguage": "Forrásnyelv kiválasztása", + "selectTargetLanguage": "Célnyelv kiválasztása", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": + "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Még nincsenek előzmények", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "Előzmények törlése", + "clearHistoryConfirm": + "Biztosan törli az összes fordítási előzményt? Ezt a műveletet nem lehet visszavonni.", + "unknownLanguage": "Ismeretlen nyelv", + "deleteSessionRecord": "Munkamenet-rekord törlése", + "deleteSessionConfirm": + "Biztosan törli az összes fordítási rekordot ehhez a munkamenethez? Ezt a műveletet nem lehet visszavonni.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": + "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": + "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": + "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": + "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Hangfájlok fordítása", + "noAudioFiles": "Még nincsenek hangfájlok", + "calculating": "Számítás...", + "playing": "Lejátszás...", + "paused": "Szüneteltetve", + "clickToPlay": "Kattintson a lejátszáshoz", + "rename": "Átnevezés", + "smartTranscription": "Intelligens átírás", + "renameAudioFile": "Hangfájl átnevezése", + "enterNewFileName": "Kérjük, adjon meg egy új fájlnevet", + + // 翻译模块 - 翻译详情 + "originalRecord": "Eredeti felvétel", + "recordSummary": "Felvétel összefoglalója", + "clickToGenerateSummary": + "Kattintson az alábbi gombra a munkamenet összefoglalójának generálásához", + "summaryContent": "Összefoglaló tartalma", + "copied": "Másolva", + "summaryCopiledToClipboard": "Az összefoglaló a vágólapra másolva", + "extractSummary": "Összefoglaló kinyerése", + "summaryGenerated": "Összefoglaló generálva", + "generating": "Generálás...", + "regenerate": "Újragenerálás", + "summaryTimeoutMessage": + "Az összefoglaló generálási kérelme időtúllépést okozott, lehetséges hálózati probléma vagy szerverterhelés miatt.", + "deleteTranslationRecord": "Fordítási rekord törlése", + "deleteTranslationConfirm": + "Biztosan törli ezt a fordítási rekordot? Ezt a műveletet nem lehet visszavonni.", + "originalText": "Eredeti szöveg", + "translatedText": "Fordított szöveg", + "sessionSummary": "Munkamenet összefoglalója", + "cannotShare": "Nem lehet megosztani", + "generateSummaryFirst": "Kérjük, először generáljon összefoglalót", + "translationSessionRecord": "Fordítási munkamenet rekordja", + + // 个人资料模块 "editProfile": "Személyes adatok szerkesztése", "avatar": "Avatar", "nickname": "Becenév", @@ -938,8 +1098,6 @@ const Map huHU = { 'Biztosan véglegesen törli a fiókját? Ezt a műveletet nem lehet visszavonni.', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'Hálózati kapcsolat sikertelen, ellenőrizze a hálózati beállításokat és próbálja újra', 'serverTemporarilyUnavailable': @@ -957,10 +1115,6 @@ const Map huHU = { 'networkConnectionFailedCheckSettings': 'Hálózati kapcsolat sikertelen, ellenőrizze a hálózati beállításokat', 'serverInternalErrorRetryLater': 'Belső szerverhiba, próbálja újra később', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'A képtömörítés sikertelen', 'avatarUpdateFailed': 'Az avatar frissítése sikertelen', 'usernameCannotBeEmpty': 'A felhasználónév nem lehet üres', @@ -971,8 +1125,6 @@ const Map huHU = { 'logoutFailedRetry': 'A kijelentkezés sikertelen, próbálja újra', 'accountPermanentlyDeleted': 'A fiók véglegesen törölve', 'deleteAccountFailedRetry': 'A fiók törlése sikertelen, próbálja újra', - - // 账号服务相关 'clearUserDataFailed': 'A felhasználói adatok törlése sikertelen', // 清理用户数据失败 'deleteUserDataFailed': 'A felhasználói adatok törlése sikertelen', // 删除用户数据失败 @@ -990,7 +1142,12 @@ const Map huHU = { 'accountServiceInitialized': 'A fiókszolgáltatás inicializálva', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': + 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', 'getPermissionStatusFailed': 'Az engedély állapotának lekérése sikertelen', 'communicationPermissions': 'Kommunikációs engedélyek', 'bluetoothPermissions': 'Bluetooth Permissions', @@ -1003,7 +1160,6 @@ const Map huHU = { 'phone': 'Telefon', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'Naptárba írás', @@ -1058,8 +1214,6 @@ const Map huHU = { 'permanentDenialText': 'Véglegesen letiltotta a(z) {permission} engedélyt, kérjük, engedélyezze az alkalmazás beállításaiban', 'goToSettings': 'Ugrás a beállításokhoz', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': @@ -1084,7 +1238,6 @@ const Map huHU = { 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', @@ -1094,8 +1247,6 @@ const Map huHU = { 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', 'storagePermissionPermanentDenial': 'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', - - //permission_util.dart 'permissionUtilNeed': 'Need ', 'permissionUtilPermission': ' Permission', 'permissionUtilRestricted': ' Permission Restricted', @@ -1103,7 +1254,20 @@ const Map huHU = { 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigálás folyamatban', + 'native.notification.navigation.keepRunning': 'Navigálás, tartsa nyitva az alkalmazást', + 'native.notification.bleAgent.running': 'A hangasszisztens ügynök fut', + 'native.notification.audioRecording.recording': 'Hangfelvétel folyamatban, koppintson az alkalmazásba való visszatéréshez', + 'native.notification.music.waiting': 'Lejátszásra vár', + 'native.notification.music.previous': 'Előző', + 'native.notification.music.next': 'Következő', + 'native.notification.music.play': 'Lejátszás', + 'native.notification.music.pause': 'Szünet', + 'native.notification.qqMusic.playing': 'Zene lejátszása', + + // 版本更新 'newVersionFound': 'Új verzió található', // 版本更新对话框标题 'remindLater': 'Emlékeztessen később', // 稍后提醒按钮 'updateNow': 'Frissítés most', // 立即更新按钮 @@ -1114,253 +1278,7 @@ const Map huHU = { 'updateErrorRetry': 'Hiba történt a frissítés során, próbálja újra később', // 更新错误重试提示 - //国家列表 - "邮箱": "E-mail", - "中国": "Kína", - "美国": "Egyesült Államok", - "加拿大": "Kanada", - "俄罗斯": "Oroszország", - "英国": "Egyesült Királyság", - "德国": "Németország", - "意大利": "Olaszország", - "法国": "Franciaország", - "西班牙": "Spanyolország", - "南非": "Dél-Afrika", - "沙特阿拉伯": "Szaúd-Arábia", - "土耳其": "Törökország", - "日本": "Japán", - "韩国": "Dél-Korea", - "新加坡": "Szingapúr", - "马来西亚": "Malajzia", - "泰国": "Thaiföld", - "越南": "Vietnám", - "印度": "India", - "巴基斯坦": "Pakisztán", - "菲律宾": "Fülöp-szigetek", - "印度尼西亚": "Indonézia", - "阿联酋": "Egyesült Arab Emírségek", - "墨西哥": "Mexikó", - "巴西": "Brazília", - "阿根廷": "Argentína", - "澳大利亚": "Ausztrália", - "新西兰": "Új-Zéland", - "中国香港": "Hongkong (Kína)", - "中国澳门": "Makaó (Kína)", - "中国台湾": "Tajvan (Kína)", - "埃及": "Egyiptom", - "希腊": "Görögország", - "荷兰": "Hollandia", - "比利时": "Belgium", - "匈牙利": "Magyarország", - "罗马尼亚": "Románia", - "瑞士": "Svájc", - "奥地利": "Ausztria", - "丹麦": "Dánia", - "瑞典": "Svédország", - "挪威": "Norvégia", - "波兰": "Lengyelország", - "秘鲁": "Peru", - "智利": "Chile", - "哥伦比亚": "Kolumbia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugália", - "卢森堡": "Luxemburg", - "爱尔兰": "Írország", - "冰岛": "Izland", - "阿尔巴尼亚": "Albánia", - "马耳他": "Málta", - "塞浦路斯": "Ciprus", - "芬兰": "Finnország", - "保加利亚": "Bulgária", - "立陶宛": "Litvánia", - "拉脱维亚": "Lettország", - "爱沙尼亚": "Észtország", - "乌克兰": "Ukrajna", - "塞尔维亚": "Szerbia", - "克罗地亚": "Horvátország", - "斯洛文尼亚": "Szlovénia", - "捷克": "Csehország", - "斯洛伐克": "Szlovákia", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolívia", - "厄瓜多尔": "Ecuador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Marokkó", - "阿尔及利亚": "Algéria", - "突尼斯": "Tunézia", - "尼日利亚": "Nigéria", - "加纳": "Ghána", - "埃塞俄比亚": "Etiópia", - "肯尼亚": "Kenya", - "坦桑尼亚": "Tanzánia", - "乌干达": "Uganda", - "孟加拉国": "Banglades", - "以色列": "Izrael", - "黎巴嫩": "Libanon", - "约旦": "Jordánia", - "伊拉克": "Irak", - "科威特": "Kuvait", - "巴林": "Bahrein", - "卡塔尔": "Katar", - "阿曼": "Omán", - "阿富汗": "Afganisztán", - "斯里兰卡": "Srí Lanka", - "缅甸": "Mianmar", - "尼泊尔": "Nepál", - "蒙古": "Mongólia", - "柬埔寨": "Kambodzsa", - "老挝": "Laosz", - "文莱": "Brunei", - "东帝汶": "Kelet-Timor", - "斐济": "Fidzsi-szigetek", - "所罗门群岛": "Salamon-szigetek", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Fordítási előzmények", - "enableRecording": "Felvétel engedélyezése", - "viewAudioFiles": "Hangfájlok megtekintése", - "headsetUser": "Fülhallgató-felhasználó", - "phoneUser": "Telefon-felhasználó", - "selectSourceLanguage": "Forrásnyelv kiválasztása", - "selectTargetLanguage": "Célnyelv kiválasztása", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Még nincsenek előzmények", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Előzmények törlése", - "clearHistoryConfirm": - "Biztosan törli az összes fordítási előzményt? Ezt a műveletet nem lehet visszavonni.", - "unknownLanguage": "Ismeretlen nyelv", - "deleteSessionRecord": "Munkamenet-rekord törlése", - "deleteSessionConfirm": - "Biztosan törli az összes fordítási rekordot ehhez a munkamenethez? Ezt a műveletet nem lehet visszavonni.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Hangfájlok fordítása", - "noAudioFiles": "Még nincsenek hangfájlok", - "calculating": "Számítás...", - "playing": "Lejátszás...", - "paused": "Szüneteltetve", - "clickToPlay": "Kattintson a lejátszáshoz", - "rename": "Átnevezés", - "smartTranscription": "Intelligens átírás", - "renameAudioFile": "Hangfájl átnevezése", - "enterNewFileName": "Kérjük, adjon meg egy új fájlnevet", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Eredeti felvétel", - "recordSummary": "Felvétel összefoglalója", - "clickToGenerateSummary": - "Kattintson az alábbi gombra a munkamenet összefoglalójának generálásához", - "summaryContent": "Összefoglaló tartalma", - "copied": "Másolva", - "summaryCopiledToClipboard": "Az összefoglaló a vágólapra másolva", - "extractSummary": "Összefoglaló kinyerése", - "summaryGenerated": "Összefoglaló generálva", - "generating": "Generálás...", - "regenerate": "Újragenerálás", - "summaryTimeoutMessage": - "Az összefoglaló generálási kérelme időtúllépést okozott, lehetséges hálózati probléma vagy szerverterhelés miatt.", - "deleteTranslationRecord": "Fordítási rekord törlése", - "deleteTranslationConfirm": - "Biztosan törli ezt a fordítási rekordot? Ezt a műveletet nem lehet visszavonni.", - "originalText": "Eredeti szöveg", - "translatedText": "Fordított szöveg", - "sessionSummary": "Munkamenet összefoglalója", - "cannotShare": "Nem lehet megosztani", - "generateSummaryFirst": "Kérjük, először generáljon összefoglalót", - "translationSessionRecord": "Fordítási munkamenet rekordja", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Eszköz párosítása", "connectYourDeepSoundHeadset": "Csatlakoztassa a Voitrans fülhallgatóját", "bind": "Párosítás", @@ -1369,14 +1287,11 @@ const Map huHU = { "autoInputCode": "Kód automatikus bevitele", "skipBinding": "Párosítás kihagyása", "rescan": "Újraszkennelés", - "verifyingDevice": "Eszköz ellenőrzése...", "confirmBinding": "Párosítás megerősítése", "associatingDevice": "Eszköz társítása...", "goToBluetoothSettings": "Ugrás a Bluetooth beállításokhoz", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Készen áll a párosításra", "preparingPairingEnvironment": "Párosítási környezet előkészítése...", "connectDeepSoundViaSystemBluetooth": @@ -1386,8 +1301,6 @@ const Map huHU = { "waitingCompletePairing": "Kérjük, várjon, a párosítás befejeződik...", "pairingSuccessRedirecting": "A párosítás sikeres! Átirányítás a főoldalra...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Győződjön meg róla, hogy a Voitrans eszközhöz csatlakozik", "deviceAlreadyBoundToOtherAccount": @@ -1399,19 +1312,12 @@ const Map huHU = { "authorizationFailedCheckCode": "Az engedélyezés sikertelen, ellenőrizze, hogy az engedélyezési kód helyes-e", "pairingFailedRetry": "A párosítás sikertelen, próbálja újra", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Kérjük, engedélyezze a Bluetooth-t', 'deviceDisconnected': 'Az eszköz lecsatlakoztatva', 'readyToStartPairing': 'Készen áll a párosítás megkezdésére', 'checkingEnvironment': 'Környezet ellenőrzése...', 'ensureHeadsetOnAndPairingMode': 'Győződjön meg róla, hogy a fülhallgató be van kapcsolva és párosítási módban van', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Biztonságos kapcsolat létrehozása...', 'needManualBindingAuthCode': 'Kézi párosítási engedélyezési kód szükséges...', 'pairingSuccessful': 'A párosítás sikeres!', @@ -1434,8 +1340,6 @@ const Map huHU = { 'bleConnectionFailed': 'A BLE kapcsolat sikertelen', 'deviceAuthorizationFailedCheckCode': 'Az eszközengedélyezés sikertelen, ellenőrizze az engedélyezési kódot', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1448,7 +1352,18 @@ const Map huHU = { 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Felhasználói visszajelzés", 'feedbackInfo': 'Adjon visszajelzést vagy javaslatot', 'feedbackDescription': @@ -1492,7 +1407,7 @@ const Map huHU = { "removeEarbudsEnsureBattery": "Vegye ki mindkét fülhallgatót, és győződjön meg róla, hogy mindkettő akkumulátora 20% felett van", - // 音乐列表页面 + // 音乐模块 "noMusic": "Nincs zene", // 暂无音乐 "noPlayingMusic": "Nincs lejátszott zene", // 暂无播放音乐 "unknownSong": "Ismeretlen dal", // 未知歌曲 @@ -1540,22 +1455,122 @@ const Map huHU = { "波斯语": "Perzsa", "斯瓦希里语": "Szuahéli", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "E-mail", + "中国": "Kína", + "美国": "Egyesült Államok", + "加拿大": "Kanada", + "俄罗斯": "Oroszország", + "英国": "Egyesült Királyság", + "德国": "Németország", + "意大利": "Olaszország", + "法国": "Franciaország", + "西班牙": "Spanyolország", + "南非": "Dél-Afrika", + "沙特阿拉伯": "Szaúd-Arábia", + "土耳其": "Törökország", + "日本": "Japán", + "韩国": "Dél-Korea", + "新加坡": "Szingapúr", + "马来西亚": "Malajzia", + "泰国": "Thaiföld", + "越南": "Vietnám", + "印度": "India", + "巴基斯坦": "Pakisztán", + "菲律宾": "Fülöp-szigetek", + "印度尼西亚": "Indonézia", + "阿联酋": "Egyesült Arab Emírségek", + "墨西哥": "Mexikó", + "巴西": "Brazília", + "阿根廷": "Argentína", + "澳大利亚": "Ausztrália", + "新西兰": "Új-Zéland", + "中国香港": "Hongkong (Kína)", + "中国澳门": "Makaó (Kína)", + "中国台湾": "Tajvan (Kína)", + "埃及": "Egyiptom", + "希腊": "Görögország", + "荷兰": "Hollandia", + "比利时": "Belgium", + "匈牙利": "Magyarország", + "罗马尼亚": "Románia", + "瑞士": "Svájc", + "奥地利": "Ausztria", + "丹麦": "Dánia", + "瑞典": "Svédország", + "挪威": "Norvégia", + "波兰": "Lengyelország", + "秘鲁": "Peru", + "智利": "Chile", + "哥伦比亚": "Kolumbia", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portugália", + "卢森堡": "Luxemburg", + "爱尔兰": "Írország", + "冰岛": "Izland", + "阿尔巴尼亚": "Albánia", + "马耳他": "Málta", + "塞浦路斯": "Ciprus", + "芬兰": "Finnország", + "保加利亚": "Bulgária", + "立陶宛": "Litvánia", + "拉脱维亚": "Lettország", + "爱沙尼亚": "Észtország", + "乌克兰": "Ukrajna", + "塞尔维亚": "Szerbia", + "克罗地亚": "Horvátország", + "斯洛文尼亚": "Szlovénia", + "捷克": "Csehország", + "斯洛伐克": "Szlovákia", + "危地马拉": "Guatemala", + "萨尔瓦多": "El Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nicaragua", + "哥斯达黎加": "Costa Rica", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Bolívia", + "厄瓜多尔": "Ecuador", + "巴拉圭": "Paraguay", + "乌拉圭": "Uruguay", + "摩洛哥": "Marokkó", + "阿尔及利亚": "Algéria", + "突尼斯": "Tunézia", + "尼日利亚": "Nigéria", + "加纳": "Ghána", + "埃塞俄比亚": "Etiópia", + "肯尼亚": "Kenya", + "坦桑尼亚": "Tanzánia", + "乌干达": "Uganda", + "孟加拉国": "Banglades", + "以色列": "Izrael", + "黎巴嫩": "Libanon", + "约旦": "Jordánia", + "伊拉克": "Irak", + "科威特": "Kuvait", + "巴林": "Bahrein", + "卡塔尔": "Katar", + "阿曼": "Omán", + "阿富汗": "Afganisztán", + "斯里兰卡": "Srí Lanka", + "缅甸": "Mianmar", + "尼泊尔": "Nepál", + "蒙古": "Mongólia", + "柬埔寨": "Kambodzsa", + "老挝": "Laosz", + "文莱": "Brunei", + "东帝汶": "Kelet-Timor", + "斐济": "Fidzsi-szigetek", + "所罗门群岛": "Salamon-szigetek", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/id_id.dart b/lib/core/translations/language/id_id.dart index 63cce5583..845acd9bc 100644 --- a/lib/core/translations/language/id_id.dart +++ b/lib/core/translations/language/id_id.dart @@ -1,4 +1,5 @@ const Map idID = { + // 通用 'continue': 'Lanjutkan', 'confirm': 'Konfirmasi', @@ -18,6 +19,11 @@ const Map idID = { "unknownError": "Kesalahan tidak diketahui", "asrConnectionFailed": "Koneksi ke layanan pengenalan suara gagal. Periksa jaringan Anda lalu coba lagi nanti.", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "Menghubungkan dunia, melampaui suara", @@ -28,7 +34,7 @@ const Map idID = { "explore": "Jelajahi", "settings": "Pengaturan", - // 语言 + // 语言列表 "followingSystem": "Ikuti Sistem", "chinese": "Bahasa Mandarin", "english": "Bahasa Inggris", @@ -72,7 +78,7 @@ const Map idID = { "arabic": "Bahasa Arab", "persian": "Bahasa Persian", - // 登录页 + // 登录模块 "welcome": "Selamat Datang", "loginTips": "Silakan masuk atau daftar dengan nomor telepon atau email Anda", "accountNumber": "Nomor Telepon atau Email", @@ -100,13 +106,9 @@ const Map idID = { "resendVerificationCode": "Kirim ulang kode verifikasi", "login": "Masuk", "usePasswordLogin": "Masuk dengan kata sandi", - - // 隐私政策弹窗 "loginDeclaration": "Deklarasi Voitrans", // Voitrans 声明 "welcomeToThisApp": "Selamat datang di Voitrans, silakan baca dengan seksama", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", dengan mengklik 'Setuju dan Masuk' berarti Anda telah membaca dan menyetujui perjanjian di atas. Mengklik 'Tidak Setuju' akan keluar dari aplikasi.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Tidak Setuju", // 不同意 @@ -165,7 +167,7 @@ const Map idID = { 'right': 'Kanan', 'checkConnectionStatusFailed': 'Gagal memeriksa status koneksi', -// 发现页 + // 发现页 "searchAi": "Cari fitur AI...", "exploreSlogan": "Earphone pintar, kemungkinan tak terbatas", "exploreSlogan1": "Teman pintar, kemungkinan tak terbatas", @@ -189,6 +191,7 @@ const Map idID = { "usageStats": "Statistik Penggunaan", "usageStatsInfo": "Lihat statistik penggunaan aplikasi", "scene": "Skenario", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", @@ -209,7 +212,6 @@ const Map idID = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -226,7 +228,6 @@ const Map idID = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - // 通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", @@ -235,88 +236,79 @@ const Map idID = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', 'remaining': 'Remaining', 'featureDescription': 'Feature Description', - // AI 功能卡片 + 'paymentSuccess': 'Pembayaran berhasil', + 'paymentFailed': 'Pembayaran gagal', + 'gotIt': 'Mengerti', + 'paymentFailedTryAgain': 'Pembayaran gagal. Silakan coba lagi.', + 'selectPaymentMethod': 'Pilih metode pembayaran', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Gagal membuat pesanan WeChat', + 'alipayOrderCreateFailed': 'Gagal membuat pesanan Alipay', + 'appleOrderCreateFailed': 'Gagal membuat pesanan Apple', + 'googleOrderCreateFailed': 'Gagal membuat pesanan Google', + 'paypalOrderCreateFailed': 'Gagal membuat pesanan PayPal', + 'paymentException': 'Pembayaran bermasalah', + 'paymentLaunchFailed': 'Gagal membuka pembayaran', + 'paymentExceptionWithError': 'Pembayaran bermasalah: @error', + 'paymentProcessingCheckLater': 'Pesanan Anda sedang diproses. Silakan periksa nanti.', + 'paymentResultQueryException': 'Gagal memeriksa hasil pembayaran: @error', + 'orderConfirmedQuotaRefreshed': 'Pesanan dikonfirmasi. Kuota Anda telah diperbarui.', + 'paymentCompletedConfirming': 'Pembayaran selesai. Sedang mengonfirmasi…', + 'paymentCancelled': 'Pembayaran dibatalkan', + 'paypalOpenedCompleteInBrowser': 'PayPal telah dibuka. Silakan selesaikan pembayaran di browser.', + 'paypalOpenFailed': 'Tidak dapat membuka halaman pembayaran PayPal', + 'paymentTestTitle': 'Uji Pembayaran', + 'paymentTestOrderInfo': 'Info Pesanan Uji', + 'paymentTestProductId': 'ID Produk', + 'paymentTestProductDescription': 'Deskripsi produk', + 'paymentTestWechatDescription': 'Uji pembayaran WeChat', + 'paymentTestAlipayDescription': 'Uji pembayaran Alipay', + 'paymentTestAmount': 'Jumlah', + 'paymentTestSelectAmount': 'Pilih jumlah uji', + 'paying': 'Sedang membayar...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Status pembayaran', + 'errorInfoWithMessage': 'Kesalahan: @message', + 'retest': 'Uji ulang', + 'paymentTestInstructionsTitle': 'Petunjuk', + 'paymentTestInstructionsContent': '1. Pilih jumlah uji (disarankan: ¥0.01)\n2. Klik tombol pembayaran untuk memulai\n3. Selesaikan pembayaran di aplikasi pembayaran\n4. Kembali untuk memeriksa hasilnya', + 'startingWechatPayment': 'Membuka WeChat Pay...', + 'startingAlipayPayment': 'Membuka Alipay...', + 'wechatPaymentSuccess': 'Pembayaran WeChat Pay berhasil!', + 'wechatPaymentFailed': 'Pembayaran WeChat Pay gagal', + 'wechatPaymentLaunchFailed': 'Gagal membuka WeChat Pay', + 'cannotLaunchWechatPayment': 'Tidak dapat membuka WeChat Pay', + 'wechatPaymentException': 'WeChat Pay bermasalah', + 'wechatPaymentTestCompleted': 'Uji pembayaran WeChat Pay selesai', + 'alipayPaymentSuccess': 'Pembayaran Alipay berhasil!', + 'alipayPaymentFailed': 'Pembayaran Alipay gagal', + 'alipayPaymentLaunchFailed': 'Gagal membuka Alipay', + 'cannotLaunchAlipayPayment': 'Tidak dapat membuka Alipay', + 'alipayPaymentException': 'Alipay bermasalah', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": + 'Insufficient balance, please go to the corresponding recharge page to recharge.', + "recharge": 'Go to Recharge', + "aiMemberExpiredDesc": + 'AI membership expired, please go to the membership recharge page to renew.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', 'aiHeaderDesc2': @@ -339,7 +331,46 @@ const Map idID = { 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Real-time Transcription', + 'sceneLexicon': 'Scenario Glossary', + 'subtitleDisplay': 'Subtitles', + 'transHeaderDesc1': + 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', + 'translateZhEn': 'Chinese-English translation', + 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', + 'multiLangTextTranslation': 'Multilingual text translation', + 'termOptimizationContextPreserve': + 'Terminology optimization and context preservation', + 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', + 'personalVocabularyMemory': 'Personal vocabulary memory', + 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', + 'colorHighContrast': 'High color contrast', + 'transDisclaimer': + 'Translation performance depends on microphone, network latency, and ambient noise.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Meeting Recording', + 'transcriptionAndSummary': 'Transcription & Summary', + 'keywordSearch': 'Keyword Search', + 'collaborationSharing': 'Collaboration & Sharing', + 'meetingHeaderDesc1': + 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'meetingHeaderDesc2': + 'Suitable for business meetings, class notes, and interview minutes.', + 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingSpeakerTagging': 'Speaker labeling', + 'meetingLongAudioTranscription': 'Long audio transcription', + 'meetingKeyPointSummary': 'Key point extraction', + 'meetingTopicNameSearch': 'Search by topic/name', + 'meetingTimelineJump': 'Timeline jump', + 'meetingExportSummary': 'Export minutes', + 'meetingMultiPlatformShare': 'Share across platforms', + 'meetingDisclaimer': + 'Use in quiet environments; performance depends on microphone and network.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', 'higherQuota': 'Higher usage quota', 'lowerUnitPrice': 'Lower unit price', @@ -355,7 +386,32 @@ const Map idID = { 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Translation Basic 100', + 'trans_002_name': 'Translation Basic 500', + 'trans_003_name': 'Translation Basic 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': 'Includes 100 translations (voice/text).', + 'trans_002_desc': 'Includes 500 translations (voice/text).', + 'trans_003_desc': 'Includes 1000 translations (voice/text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "Lewati", 'next': 'Next', 'sayLilyHint': 'Say "Lily Lily" to the mic', @@ -366,7 +422,6 @@ const Map idID = { 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', 'confirmInput': 'Confirm Input', 'guideClickSendPrefix': 'Tap send, ', - // AI 引导步骤 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', 'guideWeatherInput': 'What’s the weather today?', 'guideWeatherSend': 'Lily will report the weather in real time', @@ -393,7 +448,7 @@ const Map idID = { 'guideSmsSend': 'Lily will send the message', 'guideSmsEnd': 'Message sent—voice control is convenient', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Mulai Rapat", 'edit': 'Sunting', 'delete': 'Hapus', @@ -405,8 +460,6 @@ const Map idID = { 'recordingDetails': 'Detail Rekaman', 'aiSummary': 'Ringkasan AI', 'meetingTranscript': 'Transkrip Rapat', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -457,7 +510,6 @@ const Map idID = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -466,6 +518,97 @@ const Map idID = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': 'Buat', + 'templateDetails': 'Detail Template', + 'tag': 'Tag', + 'description': 'Deskripsi', + 'template': 'Template', + 'deleteTemplate': 'Hapus Template', + 'deleteTemplateConfirm': 'Apakah Anda yakin ingin menghapus template ini?', + 'editTemplate': 'Edit Template', + 'createTemplate': 'Buat Template', + 'name': 'Nama', + 'templateContentHint': 'Silakan masukkan konten template! Tips: Klik tombol AI di atas untuk membuat konten template secara cepat berdasarkan nama dan deskripsi yang Anda masukkan', + 'inputNameHint': 'Silakan masukkan nama', + 'inputDescHint': 'Silakan masukkan deskripsi', + 'custom': 'Kustom', + 'pleaseEnter': 'Silakan masukkan', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': + 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Simpan Peta Pikiran', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'Ekspor', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Terapkan ke semua paragraf pembicara ini', + 'summaryWillBeUpdatedAutomatically': + 'Ringkasan akan diperbarui otomatis berdasarkan template', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -484,7 +627,7 @@ const Map idID = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -520,8 +663,6 @@ const Map idID = { 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -550,105 +691,26 @@ const Map idID = { 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Terapkan ke semua paragraf pembicara ini', - 'summaryWillBeUpdatedAutomatically': - 'Ringkasan akan diperbarui otomatis berdasarkan template', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': 'Analisis gagal, silakan coba lagi nanti', + 'transcriptionFailed': 'Transkripsi gagal, silakan coba lagi nanti', + 'summaryFailed': 'Ringkasan gagal, silakan coba lagi nanti', + 'summaryFailedShort': 'Ringkasan gagal', + 'transcriptionFailedShort': 'Transkripsi gagal', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Pemutar audio belum siap, silakan tunggu', + 'playFailed': 'Gagal memutar', + 'audioFileNotFound': 'File audio tidak ditemukan', + 'fetchingAudio': 'Mengambil audio dari cloud...', + 'playerLoadFailed': 'Pemutar audio gagal dimuat', // 设置页 "systemSettings": "Pengaturan Sistem", @@ -700,26 +762,15 @@ const Map idID = { "bleHeadsetFirmwareUpgrade": "Pembaruan Versi Firmware Headset BLE", "deviceManagement": "Manajemen Perangkat", "manageConnectedDevices": "Kelola perangkat Bluetooth yang dipasangkan", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Anda sudah menggunakan versi terbaru {version}', 'checkUpdateFailed': 'Gagal memeriksa pembaruan', 'networkErrorRetry': 'Kesalahan jaringan, silakan coba lagi nanti', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Obrolan Suara Waktu Nyata", "realtimeVoiceChatInfo": "Rasakan fungsi interaksi suara cerdas (pratinjau fitur)", "loading": "Memuat...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -735,8 +786,7 @@ const Map idID = { "Are you sure you want to unbind device \"{deviceName}\"?", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Hapus Riwayat Obrolan", "online": "Online", @@ -767,8 +817,9 @@ const Map idID = { "swipeUpForMore": "Geser ke atas untuk lebih banyak", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': 'Saat diaktifkan: AI tidak akan terganggu oleh suara Anda saat berbicara dan hanya dapat menangani satu putaran percakapan. Untuk memulai putaran baru, cukup ucapkan kata bangun.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -780,7 +831,7 @@ const Map idID = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Halo! Saya **Lily**, saya bisa membantu Anda:\n\n' '• Menjawab pertanyaan dan memberikan informasi\n\n' '• Terjemahan suara waktu nyata\n\n' @@ -800,11 +851,11 @@ const Map idID = { 'startVoiceInput': 'Mulai input suara', 'startPhoneCallMode': 'Mulai mode panggilan telepon, mulai input suara', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Masukkan pesan Anda di sini...', // 全屏编辑器输入提示 'characterCount': '{count} karakter', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Salin', 'copySuccess': 'Berhasil disalin', 'report': 'Lapor', @@ -812,7 +863,6 @@ const Map idID = { 'submitFailed': 'Gagal dikirim', 'reportSubmitted': 'Laporan telah dikirim, kami akan memprosesnya sesegera mungkin', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Berbahaya/Tidak Aman', 'pornographicVulgar': 'Pornografi/Vulgär', 'misleadingAttack': 'Menyesatkan/Serangan', @@ -822,17 +872,14 @@ const Map idID = { 'other': 'Lainnya', 'reportDescriptionHint': 'Kami ingin tahu alasan Anda melaporkan, Anda dapat menjelaskan masalah yang Anda hadapi.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Dihasilkan oleh AI', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'Berikut adalah beberapa musik yang direkomendasikan:', 'playList': 'Daftar Putar', 'moreMusic': 'Lebih Banyak Musik', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'jam', // 小时单位 @@ -847,7 +894,7 @@ const Map idID = { "bicycling": "Bersepeda", "tsransit": "Transportasi Umum", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Memeriksa kondisi cuaca:', 'highest': 'Tertinggi', 'lowest': 'Terendah', @@ -877,18 +924,8 @@ const Map idID = { "friday": "Jumat", "saturday": "Sabtu", "sunday": "Minggu", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Cerah", "partlyCloudy": "Setengah Berawan", "partlySunny": "Setengah Cerah", @@ -909,7 +946,129 @@ const Map idID = { "haze": "Jerebu", "strongWind": "Angin kencang", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "Riwayat Terjemahan", + "enableRecording": "Aktifkan Perekaman", + "viewAudioFiles": "Lihat File Audio", + "headsetUser": "Pengguna Headset", + "phoneUser": "Pengguna Telepon", + "selectSourceLanguage": "Pilih bahasa sumber", + "selectTargetLanguage": "Pilih bahasa target", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": + "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Belum ada riwayat", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "Hapus Riwayat", + "clearHistoryConfirm": + "Apakah Anda yakin ingin menghapus semua riwayat terjemahan? Tindakan ini tidak dapat dibatalkan.", + "unknownLanguage": "Bahasa Tidak Dikenal", + "deleteSessionRecord": "Hapus Rekaman Sesi", + "deleteSessionConfirm": + "Apakah Anda yakin ingin menghapus semua rekaman terjemahan untuk sesi ini? Tindakan ini tidak dapat dibatalkan.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": + "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": + "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": + "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": + "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Terjemahkan File Audio", + "noAudioFiles": "Belum ada file audio", + "calculating": "Menghitung...", + "playing": "Memutar...", + "paused": "Dijeda", + "clickToPlay": "Klik untuk memutar", + "rename": "Ubah Nama", + "smartTranscription": "Transkripsi Cerdas", + "renameAudioFile": "Ubah nama file audio", + "enterNewFileName": "Silakan masukkan nama file baru", + + // 翻译模块 - 翻译详情 + "originalRecord": "Rekaman Asli", + "recordSummary": "Ringkasan Rekaman", + "clickToGenerateSummary": "Klik tombol di bawah untuk membuat ringkasan sesi", + "summaryContent": "Konten Ringkasan", + "copied": "Disalin", + "summaryCopiledToClipboard": "Ringkasan telah disalin ke papan klip", + "extractSummary": "Ekstrak Ringkasan", + "summaryGenerated": "Ringkasan telah dibuat", + "generating": "Membuat...", + "regenerate": "Buat Ulang", + "summaryTimeoutMessage": + "Permintaan pembuatan ringkasan habis waktu, mungkin karena masalah jaringan atau server sibuk.", + "deleteTranslationRecord": "Hapus Rekaman Terjemahan", + "deleteTranslationConfirm": + "Apakah Anda yakin ingin menghapus rekaman terjemahan ini? Tindakan ini tidak dapat dibatalkan.", + "originalText": "Teks Asli", + "translatedText": "Teks Terjemahan", + "sessionSummary": "Ringkasan Sesi", + "cannotShare": "Tidak dapat berbagi", + "generateSummaryFirst": "Harap buat ringkasan terlebih dahulu", + "translationSessionRecord": "Rekaman Sesi Terjemahan", + + // 个人资料模块 "editProfile": "Sunting Informasi Pribadi", "avatar": "Avatar", "nickname": "Nama Panggilan", @@ -925,8 +1084,6 @@ const Map idID = { 'Apakah Anda yakin ingin menghapus akun Anda secara permanen? Tindakan ini tidak dapat dibatalkan', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'Koneksi jaringan gagal, silakan periksa pengaturan jaringan Anda dan coba lagi', 'serverTemporarilyUnavailable': @@ -944,10 +1101,6 @@ const Map idID = { 'Koneksi jaringan gagal, silakan periksa pengaturan jaringan Anda', 'serverInternalErrorRetryLater': 'Kesalahan internal server, silakan coba lagi nanti', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Kompresi gambar gagal', 'avatarUpdateFailed': 'Pembaruan avatar gagal', 'usernameCannotBeEmpty': 'Nama pengguna tidak boleh kosong', @@ -958,8 +1111,6 @@ const Map idID = { 'logoutFailedRetry': 'Gagal keluar, silakan coba lagi', 'accountPermanentlyDeleted': 'Akun telah dihapus secara permanen', 'deleteAccountFailedRetry': 'Gagal menghapus akun, silakan coba lagi', - - // 账号服务相关 'clearUserDataFailed': 'Gagal menghapus data pengguna', // 清理用户数据失败 'deleteUserDataFailed': 'Gagal menghapus data pengguna', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'Berhasil keluar dari pihak ketiga', // 第三方登录退出成功 @@ -973,7 +1124,12 @@ const Map idID = { 'accountServiceInitialized': 'Layanan Akun telah diinisialisasi', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': + 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', 'getPermissionStatusFailed': 'Gagal mendapatkan status izin', 'communicationPermissions': 'Izin Komunikasi', 'bluetoothPermissions': 'Bluetooth Permissions', @@ -986,7 +1142,6 @@ const Map idID = { 'phone': 'Telepon', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'Tulis Kalender', @@ -1041,8 +1196,6 @@ const Map idID = { 'permanentDenialText': 'Anda telah menolak izin {permission} secara permanen, silakan buka pengaturan aplikasi untuk mengaktifkannya', 'goToSettings': 'Buka Pengaturan', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': @@ -1067,7 +1220,6 @@ const Map idID = { 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', @@ -1077,8 +1229,6 @@ const Map idID = { 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', 'storagePermissionPermanentDenial': 'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', - - //permission_util.dart 'permissionUtilNeed': 'Need ', 'permissionUtilPermission': ' Permission', 'permissionUtilRestricted': ' Permission Restricted', @@ -1086,7 +1236,20 @@ const Map idID = { 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigasi sedang berlangsung', + 'native.notification.navigation.keepRunning': 'Sedang menavigasi, biarkan aplikasi tetap berjalan', + 'native.notification.bleAgent.running': 'Agen asisten suara sedang berjalan', + 'native.notification.audioRecording.recording': 'Sedang merekam audio, ketuk untuk kembali ke aplikasi', + 'native.notification.music.waiting': 'Menunggu untuk diputar', + 'native.notification.music.previous': 'Sebelumnya', + 'native.notification.music.next': 'Berikutnya', + 'native.notification.music.play': 'Putar', + 'native.notification.music.pause': 'Jeda', + 'native.notification.qqMusic.playing': 'Sedang memutar musik', + + // 版本更新 'newVersionFound': 'Versi Baru Ditemukan', // 版本更新对话框标题 'remindLater': 'Ingatkan Nanti', // 稍后提醒按钮 'updateNow': 'Perbarui Sekarang', // 立即更新按钮 @@ -1097,252 +1260,7 @@ const Map idID = { 'updateErrorRetry': 'Terjadi kesalahan saat pembaruan, silakan coba lagi nanti', // 更新错误重试提示 - //国家列表 - "邮箱": "Email", - "中国": "Tiongkok", - "美国": "Amerika Serikat", - "加拿大": "Kanada", - "俄罗斯": "Rusia", - "英国": "Britania Raya", - "德国": "Jerman", - "意大利": "Italia", - "法国": "Prancis", - "西班牙": "Spanyol", - "南非": "Afrika Selatan", - "沙特阿拉伯": "Arab Saudi", - "土耳其": "Turki", - "日本": "Jepang", - "韩国": "Korea Selatan", - "新加坡": "Singapura", - "马来西亚": "Malaysia", - "泰国": "Thailand", - "越南": "Vietnam", - "印度": "India", - "巴基斯坦": "Pakistan", - "菲律宾": "Filipina", - "印度尼西亚": "Indonesia", - "阿联酋": "Uni Emirat Arab", - "墨西哥": "Meksiko", - "巴西": "Brasil", - "阿根廷": "Argentina", - "澳大利亚": "Australia", - "新西兰": "Selandia Baru", - "中国香港": "Hong Kong (Tiongkok)", - "中国澳门": "Makau (Tiongkok)", - "中国台湾": "Taiwan (Tiongkok)", - "埃及": "Mesir", - "希腊": "Yunani", - "荷兰": "Belanda", - "比利时": "Belgia", - "匈牙利": "Hongaria", - "罗马尼亚": "Rumania", - "瑞士": "Swiss", - "奥地利": "Austria", - "丹麦": "Denmark", - "瑞典": "Swedia", - "挪威": "Norwegia", - "波兰": "Polandia", - "秘鲁": "Peru", - "智利": "Chili", - "哥伦比亚": "Kolombia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugal", - "卢森堡": "Luksemburg", - "爱尔兰": "Irlandia", - "冰岛": "Islandia", - "阿尔巴尼亚": "Albania", - "马耳他": "Malta", - "塞浦路斯": "Siprus", - "芬兰": "Finlandia", - "保加利亚": "Bulgaria", - "立陶宛": "Lituania", - "拉脱维亚": "Latvia", - "爱沙尼亚": "Estonia", - "乌克兰": "Ukraina", - "塞尔维亚": "Serbia", - "克罗地亚": "Kroasia", - "斯洛文尼亚": "Slovenia", - "捷克": "Republik Ceko", - "斯洛伐克": "Slowakia", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nikaragua", - "哥斯达黎加": "Kosta Rika", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolivia", - "厄瓜多尔": "Ekuador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Maroko", - "阿尔及利亚": "Aljazair", - "突尼斯": "Tunisia", - "尼日利亚": "Nigeria", - "加纳": "Ghana", - "埃塞俄比亚": "Etiopia", - "肯尼亚": "Kenya", - "坦桑尼亚": "Tanzania", - "乌干达": "Uganda", - "孟加拉国": "Bangladesh", - "以色列": "Israel", - "黎巴嫩": "Lebanon", - "约旦": "Yordania", - "伊拉克": "Irak", - "科威特": "Kuwait", - "巴林": "Bahrain", - "卡塔尔": "Qatar", - "阿曼": "Oman", - "阿富汗": "Afganistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongolia", - "柬埔寨": "Kamboja", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "Timor Leste", - "斐济": "Fiji", - "所罗门群岛": "Kepulauan Solomon", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Riwayat Terjemahan", - "enableRecording": "Aktifkan Perekaman", - "viewAudioFiles": "Lihat File Audio", - "headsetUser": "Pengguna Headset", - "phoneUser": "Pengguna Telepon", - "selectSourceLanguage": "Pilih bahasa sumber", - "selectTargetLanguage": "Pilih bahasa target", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Belum ada riwayat", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Hapus Riwayat", - "clearHistoryConfirm": - "Apakah Anda yakin ingin menghapus semua riwayat terjemahan? Tindakan ini tidak dapat dibatalkan.", - "unknownLanguage": "Bahasa Tidak Dikenal", - "deleteSessionRecord": "Hapus Rekaman Sesi", - "deleteSessionConfirm": - "Apakah Anda yakin ingin menghapus semua rekaman terjemahan untuk sesi ini? Tindakan ini tidak dapat dibatalkan.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Terjemahkan File Audio", - "noAudioFiles": "Belum ada file audio", - "calculating": "Menghitung...", - "playing": "Memutar...", - "paused": "Dijeda", - "clickToPlay": "Klik untuk memutar", - "rename": "Ubah Nama", - "smartTranscription": "Transkripsi Cerdas", - "renameAudioFile": "Ubah nama file audio", - "enterNewFileName": "Silakan masukkan nama file baru", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Rekaman Asli", - "recordSummary": "Ringkasan Rekaman", - "clickToGenerateSummary": "Klik tombol di bawah untuk membuat ringkasan sesi", - "summaryContent": "Konten Ringkasan", - "copied": "Disalin", - "summaryCopiledToClipboard": "Ringkasan telah disalin ke papan klip", - "extractSummary": "Ekstrak Ringkasan", - "summaryGenerated": "Ringkasan telah dibuat", - "generating": "Membuat...", - "regenerate": "Buat Ulang", - "summaryTimeoutMessage": - "Permintaan pembuatan ringkasan habis waktu, mungkin karena masalah jaringan atau server sibuk.", - "deleteTranslationRecord": "Hapus Rekaman Terjemahan", - "deleteTranslationConfirm": - "Apakah Anda yakin ingin menghapus rekaman terjemahan ini? Tindakan ini tidak dapat dibatalkan.", - "originalText": "Teks Asli", - "translatedText": "Teks Terjemahan", - "sessionSummary": "Ringkasan Sesi", - "cannotShare": "Tidak dapat berbagi", - "generateSummaryFirst": "Harap buat ringkasan terlebih dahulu", - "translationSessionRecord": "Rekaman Sesi Terjemahan", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Pemasangan Perangkat", "connectYourDeepSoundHeadset": "Hubungkan Headset Voitrans Anda", "bind": "Ikat", @@ -1351,14 +1269,11 @@ const Map idID = { "autoInputCode": "Masukkan kode secara otomatis", "skipBinding": "Lewati Pengikatan", "rescan": "Pindai Ulang", - "verifyingDevice": "Memverifikasi perangkat...", "confirmBinding": "Konfirmasi Pengikatan", "associatingDevice": "Mengasosiasikan perangkat...", "goToBluetoothSettings": "Buka Pengaturan Bluetooth", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Siap untuk dipasangkan", "preparingPairingEnvironment": "Mempersiapkan lingkungan pemasangan...", "connectDeepSoundViaSystemBluetooth": @@ -1368,8 +1283,6 @@ const Map idID = { "waitingCompletePairing": "Harap tunggu, pemasangan sedang diselesaikan...", "pairingSuccessRedirecting": "Pemasangan berhasil! Mengalihkan ke halaman utama...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Harap pastikan Anda terhubung ke perangkat Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1381,19 +1294,12 @@ const Map idID = { "authorizationFailedCheckCode": "Otorisasi gagal, harap periksa apakah kode otorisasi benar", "pairingFailedRetry": "Pemasangan gagal, silakan coba lagi", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Harap aktifkan Bluetooth', 'deviceDisconnected': 'Perangkat terputus', 'readyToStartPairing': 'Siap untuk memulai pemasangan', 'checkingEnvironment': 'Memeriksa lingkungan...', 'ensureHeadsetOnAndPairingMode': 'Harap pastikan headset dihidupkan dan dalam mode pemasangan', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Membangun koneksi aman...', 'needManualBindingAuthCode': 'Diperlukan kode otorisasi pengikatan manual...', 'pairingSuccessful': 'Pemasangan berhasil!', @@ -1413,8 +1319,6 @@ const Map idID = { 'bleConnectionFailed': 'Koneksi BLE gagal', 'deviceAuthorizationFailedCheckCode': 'Otorisasi perangkat gagal, harap periksa kode otorisasi', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1427,7 +1331,18 @@ const Map idID = { 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Umpan Balik Pengguna", 'feedbackInfo': 'Berikan umpan balik atau saran', 'feedbackDescription': @@ -1470,7 +1385,7 @@ const Map idID = { "removeEarbudsEnsureBattery": "Keluarkan kedua earbud, dan pastikan baterai keduanya di atas 20%", - // 音乐列表页面 + // 音乐模块 "noMusic": "Tidak Ada Musik", // 暂无音乐 "noPlayingMusic": "Tidak ada musik yang diputar", // 暂无播放音乐 "unknownSong": "Lagu Tidak Dikenal", // 未知歌曲 @@ -1518,22 +1433,122 @@ const Map idID = { "波斯语": "Bahasa Persia", "斯瓦希里语": "Bahasa Swahili", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "Email", + "中国": "Tiongkok", + "美国": "Amerika Serikat", + "加拿大": "Kanada", + "俄罗斯": "Rusia", + "英国": "Britania Raya", + "德国": "Jerman", + "意大利": "Italia", + "法国": "Prancis", + "西班牙": "Spanyol", + "南非": "Afrika Selatan", + "沙特阿拉伯": "Arab Saudi", + "土耳其": "Turki", + "日本": "Jepang", + "韩国": "Korea Selatan", + "新加坡": "Singapura", + "马来西亚": "Malaysia", + "泰国": "Thailand", + "越南": "Vietnam", + "印度": "India", + "巴基斯坦": "Pakistan", + "菲律宾": "Filipina", + "印度尼西亚": "Indonesia", + "阿联酋": "Uni Emirat Arab", + "墨西哥": "Meksiko", + "巴西": "Brasil", + "阿根廷": "Argentina", + "澳大利亚": "Australia", + "新西兰": "Selandia Baru", + "中国香港": "Hong Kong (Tiongkok)", + "中国澳门": "Makau (Tiongkok)", + "中国台湾": "Taiwan (Tiongkok)", + "埃及": "Mesir", + "希腊": "Yunani", + "荷兰": "Belanda", + "比利时": "Belgia", + "匈牙利": "Hongaria", + "罗马尼亚": "Rumania", + "瑞士": "Swiss", + "奥地利": "Austria", + "丹麦": "Denmark", + "瑞典": "Swedia", + "挪威": "Norwegia", + "波兰": "Polandia", + "秘鲁": "Peru", + "智利": "Chili", + "哥伦比亚": "Kolombia", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portugal", + "卢森堡": "Luksemburg", + "爱尔兰": "Irlandia", + "冰岛": "Islandia", + "阿尔巴尼亚": "Albania", + "马耳他": "Malta", + "塞浦路斯": "Siprus", + "芬兰": "Finlandia", + "保加利亚": "Bulgaria", + "立陶宛": "Lituania", + "拉脱维亚": "Latvia", + "爱沙尼亚": "Estonia", + "乌克兰": "Ukraina", + "塞尔维亚": "Serbia", + "克罗地亚": "Kroasia", + "斯洛文尼亚": "Slovenia", + "捷克": "Republik Ceko", + "斯洛伐克": "Slowakia", + "危地马拉": "Guatemala", + "萨尔瓦多": "El Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nikaragua", + "哥斯达黎加": "Kosta Rika", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Bolivia", + "厄瓜多尔": "Ekuador", + "巴拉圭": "Paraguay", + "乌拉圭": "Uruguay", + "摩洛哥": "Maroko", + "阿尔及利亚": "Aljazair", + "突尼斯": "Tunisia", + "尼日利亚": "Nigeria", + "加纳": "Ghana", + "埃塞俄比亚": "Etiopia", + "肯尼亚": "Kenya", + "坦桑尼亚": "Tanzania", + "乌干达": "Uganda", + "孟加拉国": "Bangladesh", + "以色列": "Israel", + "黎巴嫩": "Lebanon", + "约旦": "Yordania", + "伊拉克": "Irak", + "科威特": "Kuwait", + "巴林": "Bahrain", + "卡塔尔": "Qatar", + "阿曼": "Oman", + "阿富汗": "Afganistan", + "斯里兰卡": "Sri Lanka", + "缅甸": "Myanmar", + "尼泊尔": "Nepal", + "蒙古": "Mongolia", + "柬埔寨": "Kamboja", + "老挝": "Laos", + "文莱": "Brunei", + "东帝汶": "Timor Leste", + "斐济": "Fiji", + "所罗门群岛": "Kepulauan Solomon", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/is_is.dart b/lib/core/translations/language/is_is.dart index 70b0afa81..640487d92 100644 --- a/lib/core/translations/language/is_is.dart +++ b/lib/core/translations/language/is_is.dart @@ -1,4 +1,5 @@ const Map isIS = { + // 通用 'continue': 'Halda áfram', 'confirm': 'Staðfesta', @@ -18,6 +19,11 @@ const Map isIS = { "unknownError": "Óþekkt villa", "asrConnectionFailed": "Tenging við talgreiningarþjónustu mistókst. Athugaðu netsambandið eða reyndu aftur síðar.", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "Að tengja heiminn, handan hljóðsins", @@ -28,7 +34,7 @@ const Map isIS = { "explore": "Kanna", "settings": "Stillingar", - // 语言 + // 语言列表 "followingSystem": "Fylgja kerfi", "chinese": "Kínverska", "english": "Enska", @@ -72,7 +78,7 @@ const Map isIS = { "arabic": "Arabska", "persian": "Persneska", - // 登录页 + // 登录模块 "welcome": "Velkomin(n)", "loginTips": "Skráðu þig inn eða nýskráðu með símanúmeri eða tölvupósti", "accountNumber": "Símanúmer eða tölvupóstur", @@ -100,13 +106,9 @@ const Map isIS = { "resendVerificationCode": "Senda staðfestingarkóða aftur", "login": "Innskráning", "usePasswordLogin": "Innskráning með lykilorði", - - // 隐私政策弹窗 "loginDeclaration": "Yfirlýsing Voitrans", // Voitrans 声明 "welcomeToThisApp": "Velkomin(n) í Voitrans, vinsamlegast lestu vandlega", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", með því að smella á 'Samþykkja og halda áfram' staðfestir þú að þú hafir lesið og samþykkt ofangreinda samninga. Með því að smella á 'Hafna' lokarðu forritinu.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Hafna", // 不同意 @@ -167,7 +169,7 @@ const Map isIS = { 'right': 'Hægri', 'checkConnectionStatusFailed': 'Athugun á tengingarstöðu mistókst', -// 发现页 + // 发现页 "searchAi": "Leita að gervigreindareiginleikum...", "exploreSlogan": "Snjallheyrnartól, óendanlegir möguleikar", "exploreSlogan1": "Snjallfélagi, óendanlegir möguleikar", @@ -190,6 +192,7 @@ const Map isIS = { "usageStats": "Notendastatistika", "usageStatsInfo": " skoða notendastatistika", "scene": "Atburðarás", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", @@ -210,7 +213,6 @@ const Map isIS = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -227,7 +229,6 @@ const Map isIS = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - // 通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", @@ -236,88 +237,79 @@ const Map isIS = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', 'remaining': 'Remaining', 'featureDescription': 'Feature Description', - // AI 功能卡片 + 'paymentSuccess': 'Greiðsla tókst', + 'paymentFailed': 'Greiðsla mistókst', + 'gotIt': 'Allt í lagi', + 'paymentFailedTryAgain': 'Greiðsla mistókst. Reyndu aftur.', + 'selectPaymentMethod': 'Veldu greiðslumáta', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Ekki tókst að búa til WeChat-pöntun', + 'alipayOrderCreateFailed': 'Ekki tókst að búa til Alipay-pöntun', + 'appleOrderCreateFailed': 'Ekki tókst að búa til Apple-pöntun', + 'googleOrderCreateFailed': 'Ekki tókst að búa til Google-pöntun', + 'paypalOrderCreateFailed': 'Ekki tókst að búa til PayPal-pöntun', + 'paymentException': 'Greiðsluundantekning', + 'paymentLaunchFailed': 'Ekki tókst að ræsa greiðslu', + 'paymentExceptionWithError': 'Greiðsluundantekning: @error', + 'paymentProcessingCheckLater': 'Pöntunin þín er í vinnslu. Athugaðu aftur síðar.', + 'paymentResultQueryException': 'Ekki tókst að sækja greiðsluniðurstöðu: @error', + 'orderConfirmedQuotaRefreshed': 'Pöntun staðfest. Kvóti þinn hefur verið uppfærður.', + 'paymentCompletedConfirming': 'Greiðslu lokið. Staðfesti…', + 'paymentCancelled': 'Greiðslu hætt við', + 'paypalOpenedCompleteInBrowser': 'PayPal hefur verið opnað. Ljúktu greiðslunni í vafranum þínum.', + 'paypalOpenFailed': 'Ekki er hægt að opna PayPal-greiðslusíðuna', + 'paymentTestTitle': 'Greiðslupróf', + 'paymentTestOrderInfo': 'Prófunarpöntunarupplýsingar', + 'paymentTestProductId': 'Vöruauðkenni', + 'paymentTestProductDescription': 'Vörulýsing', + 'paymentTestWechatDescription': 'WeChat Pay greiðslupróf', + 'paymentTestAlipayDescription': 'Alipay greiðslupróf', + 'paymentTestAmount': 'Upphæð', + 'paymentTestSelectAmount': 'Veldu prófunarupphæð', + 'paying': 'Borga...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Greiðslustaða', + 'errorInfoWithMessage': 'Villa: @message', + 'retest': 'Prófa aftur', + 'paymentTestInstructionsTitle': 'Leiðbeiningar', + 'paymentTestInstructionsContent': '1. Veldu prófunarupphæð (mælt með: ¥0,01)\n2. Smelltu á greiðsluhnappinn til að byrja\n3. Ljúktu greiðslunni í greiðsluforritinu\n4. Farðu til baka til að athuga niðurstöðuna', + 'startingWechatPayment': 'Ræsi WeChat Pay...', + 'startingAlipayPayment': 'Ræsi Alipay...', + 'wechatPaymentSuccess': 'WeChat Pay tókst!', + 'wechatPaymentFailed': 'WeChat Pay mistókst', + 'wechatPaymentLaunchFailed': 'Ekki tókst að ræsa WeChat Pay', + 'cannotLaunchWechatPayment': 'Ekki er hægt að ræsa WeChat Pay', + 'wechatPaymentException': 'WeChat Pay-undantekning', + 'wechatPaymentTestCompleted': 'WeChat Pay-prófi lokið', + 'alipayPaymentSuccess': 'Alipay tókst!', + 'alipayPaymentFailed': 'Alipay mistókst', + 'alipayPaymentLaunchFailed': 'Ekki tókst að ræsa Alipay', + 'cannotLaunchAlipayPayment': 'Ekki er hægt að ræsa Alipay', + 'alipayPaymentException': 'Alipay-undantekning', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": + 'Insufficient balance, please go to the corresponding recharge page to recharge.', + "recharge": 'Go to Recharge', + "aiMemberExpiredDesc": + 'AI membership expired, please go to the membership recharge page to renew.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', 'aiHeaderDesc2': @@ -340,7 +332,46 @@ const Map isIS = { 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Real-time Transcription', + 'sceneLexicon': 'Scenario Glossary', + 'subtitleDisplay': 'Subtitles', + 'transHeaderDesc1': + 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', + 'translateZhEn': 'Chinese-English translation', + 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', + 'multiLangTextTranslation': 'Multilingual text translation', + 'termOptimizationContextPreserve': + 'Terminology optimization and context preservation', + 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', + 'personalVocabularyMemory': 'Personal vocabulary memory', + 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', + 'colorHighContrast': 'High color contrast', + 'transDisclaimer': + 'Translation performance depends on microphone, network latency, and ambient noise.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Meeting Recording', + 'transcriptionAndSummary': 'Transcription & Summary', + 'keywordSearch': 'Keyword Search', + 'collaborationSharing': 'Collaboration & Sharing', + 'meetingHeaderDesc1': + 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'meetingHeaderDesc2': + 'Suitable for business meetings, class notes, and interview minutes.', + 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingSpeakerTagging': 'Speaker labeling', + 'meetingLongAudioTranscription': 'Long audio transcription', + 'meetingKeyPointSummary': 'Key point extraction', + 'meetingTopicNameSearch': 'Search by topic/name', + 'meetingTimelineJump': 'Timeline jump', + 'meetingExportSummary': 'Export minutes', + 'meetingMultiPlatformShare': 'Share across platforms', + 'meetingDisclaimer': + 'Use in quiet environments; performance depends on microphone and network.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', 'higherQuota': 'Higher usage quota', 'lowerUnitPrice': 'Lower unit price', @@ -356,7 +387,32 @@ const Map isIS = { 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Translation Basic 100', + 'trans_002_name': 'Translation Basic 500', + 'trans_003_name': 'Translation Basic 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': 'Includes 100 translations (voice/text).', + 'trans_002_desc': 'Includes 500 translations (voice/text).', + 'trans_003_desc': 'Includes 1000 translations (voice/text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "Sleppa", 'next': 'Next', 'sayLilyHint': 'Say "Lily Lily" to the mic', @@ -367,7 +423,6 @@ const Map isIS = { 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', 'confirmInput': 'Confirm Input', 'guideClickSendPrefix': 'Tap send, ', - // AI 引导步骤 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', 'guideWeatherInput': 'What’s the weather today?', 'guideWeatherSend': 'Lily will report the weather in real time', @@ -394,7 +449,7 @@ const Map isIS = { 'guideSmsSend': 'Lily will send the message', 'guideSmsEnd': 'Message sent—voice control is convenient', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Hefja fund", 'edit': 'Breyta', 'delete': 'Eyða', @@ -406,8 +461,6 @@ const Map isIS = { 'recordingDetails': 'Upptökuupplýsingar', 'aiSummary': 'Gervigreindaryfirlit', 'meetingTranscript': 'Fundarritun', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -467,7 +520,6 @@ const Map isIS = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -476,6 +528,97 @@ const Map isIS = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': 'Búa til', + 'templateDetails': 'Sniðmátsupplýsingar', + 'tag': 'Merki', + 'description': 'Lýsing', + 'template': 'Sniðmát', + 'deleteTemplate': 'Eyða sniðmáti', + 'deleteTemplateConfirm': 'Ertu viss um að þú viljir eyða þessu sniðmáti?', + 'editTemplate': 'Breyta sniðmáti', + 'createTemplate': 'Búa til sniðmát', + 'name': 'Nafn', + 'templateContentHint': 'Vinsamlegast sláðu inn sniðmátsefni! Ábending: Smelltu á AI-hnappinn hér að ofan til að búa fljótt til sniðmátsefni byggt á nafninu og lýsingunni sem þú slóst inn', + 'inputNameHint': 'Vinsamlegast sláðu inn nafn', + 'inputDescHint': 'Vinsamlegast sláðu inn lýsingu', + 'custom': 'Sérsniðið', + 'pleaseEnter': 'Vinsamlegast sláðu inn', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': + 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Vista hugarkort', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'Flytja út', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Beita á allar málsgreinar þessa ræðumanns', + 'summaryWillBeUpdatedAutomatically': + 'Samantektin verður uppfærð sjálfkrafa út frá sniðmátinu', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -494,7 +637,7 @@ const Map isIS = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -530,8 +673,6 @@ const Map isIS = { 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -560,105 +701,26 @@ const Map isIS = { 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Beita á allar málsgreinar þessa ræðumanns', - 'summaryWillBeUpdatedAutomatically': - 'Samantektin verður uppfærð sjálfkrafa út frá sniðmátinu', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': 'Greining mistókst, reyndu aftur síðar', + 'transcriptionFailed': 'Umritun mistókst, reyndu aftur síðar', + 'summaryFailed': 'Samantekt mistókst, reyndu aftur síðar', + 'summaryFailedShort': 'Samantekt mistókst', + 'transcriptionFailedShort': 'Umritun mistókst', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Hljóðspilari er ekki tilbúinn, vinsamlegast bíddu', + 'playFailed': 'Spilun mistókst', + 'audioFileNotFound': 'Hljóðskrá fannst ekki', + 'fetchingAudio': 'Sæki hljóð úr skýinu...', + 'playerLoadFailed': 'Hljóðspilari tókst ekki að hlaða', // 设置页 "systemSettings": "Kerfisstillingar", @@ -711,26 +773,15 @@ const Map isIS = { "bleHeadsetFirmwareUpgrade": "Uppfærsla á fastbúnaðarútgáfu BLE heyrnartóla", "deviceManagement": "Tækjastjórnun", "manageConnectedDevices": "Stjórna tengdum Bluetooth-tækjum", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Þú ert nú þegar með nýjustu útgáfuna {version}', 'checkUpdateFailed': 'Athugun á uppfærslum mistókst', 'networkErrorRetry': 'Netvilla, vinsamlegast reyndu aftur síðar', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Rauntíma raddspjall", "realtimeVoiceChatInfo": "Upplifðu greinda raddsamskiptaaðgerð (forskoðun aðgerðar)", "loading": "Hleður...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -746,8 +797,7 @@ const Map isIS = { "Are you sure you want to unbind device \"{deviceName}\"?", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Hreinsa spjallsögu", "online": "Á netinu", @@ -777,8 +827,9 @@ const Map isIS = { "swipeUpForMore": "Strjúktu upp til að sjá meira", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': 'Þegar virkt: Gervigreindin verður ekki trufluð af röddinni þinni á meðan hún talar og getur aðeins meðhöndlað eina samtalslotu í einu. Til að hefja nýja lotu, segðu bara vökunarorðið.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -790,7 +841,7 @@ const Map isIS = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Halló! Ég er **Lily**, ég get hjálpað þér með:\n\n' '• Að svara spurningum og veita upplýsingar\n\n' '• Rauntíma raddþýðingu\n\n' @@ -809,11 +860,11 @@ const Map isIS = { 'startVoiceInput': 'Hefja raddinnslátt', 'startPhoneCallMode': 'Hefja símtalsham, hefja raddinnslátt', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Sláðu inn skilaboðin þín hér...', // 全屏编辑器输入提示 'characterCount': '{count} stafir', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Afrita', 'copySuccess': 'Afritað', 'report': 'Tilkynna', @@ -821,7 +872,6 @@ const Map isIS = { 'submitFailed': 'Sending mistókst', 'reportSubmitted': 'Tilkynning send, við munum afgreiða hana eins fljótt og auðið er', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Skaðlegt/Óöruggt', 'pornographicVulgar': 'Klámfengið/Gróft', 'misleadingAttack': 'Villandi/Árás', @@ -831,17 +881,14 @@ const Map isIS = { 'other': 'Annað', 'reportDescriptionHint': 'Við viljum vita hvers vegna þú ert að tilkynna, þú getur lýst vandamálinu sem þú lendir í.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Myndað af gervigreind', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'Hér eru nokkur lög sem mælt er með:', 'playList': 'Spilunarlisti', 'moreMusic': 'Meiri tónlist', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'klst.', // 小时单位 @@ -856,7 +903,7 @@ const Map isIS = { "bicycling": 'Hjólreiðar', "tsransit": 'Almenningssamgöngur', - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Fyrirspurn um veðurskilyrði:', 'highest': 'Hæst', 'lowest': 'Lægst', @@ -886,18 +933,8 @@ const Map isIS = { "friday": "Fös", "saturday": "Lau", "sunday": "Sun", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Sólskin", "partlyCloudy": "Skýjað með köflum", "partlySunny": "Sól með köflum", @@ -918,7 +955,130 @@ const Map isIS = { "haze": "Móða", "strongWind": "Mikill vindur", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "Þýðingasaga", + "enableRecording": "Virkja upptöku", + "viewAudioFiles": "Skoða hljóðskrár", + "headsetUser": "Notandi heyrnartóla", + "phoneUser": "Notandi síma", + "selectSourceLanguage": "Veldu upprunamál", + "selectTargetLanguage": "Veldu markmál", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": + "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Engin saga ennþá", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "Hreinsa sögu", + "clearHistoryConfirm": + "Ertu viss um að þú viljir hreinsa alla þýðingasögu? Ekki er hægt að afturkalla þessa aðgerð.", + "unknownLanguage": "Óþekkt tungumál", + "deleteSessionRecord": "Eyða lotuupptöku", + "deleteSessionConfirm": + "Ertu viss um að þú viljir eyða öllum þýðingarupptökum fyrir þessa lotu? Ekki er hægt að afturkalla þessa aðgerð.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": + "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": + "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": + "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": + "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Þýða hljóðskrár", + "noAudioFiles": "Engar hljóðskrár ennþá", + "calculating": "Reiknar...", + "playing": "Spilar...", + "paused": "Í pásu", + "clickToPlay": "Smelltu til að spila", + "rename": "Endurnefna", + "smartTranscription": "Snjöll umritun", + "renameAudioFile": "Endurnefna hljóðskrá", + "enterNewFileName": "Vinsamlegast sláðu inn nýtt skráarheiti", + + // 翻译模块 - 翻译详情 + "originalRecord": "Upprunaleg upptaka", + "recordSummary": "Samantekt upptöku", + "clickToGenerateSummary": + "Smelltu á hnappinn hér að neðan til að búa til samantekt lotu", + "summaryContent": "Innihald samantektar", + "copied": "Afritað", + "summaryCopiledToClipboard": "Samantekt afrituð á klippiborð", + "extractSummary": "Dragðu út samantekt", + "summaryGenerated": "Samantekt búin til", + "generating": "Býr til...", + "regenerate": "Búa til aftur", + "summaryTimeoutMessage": + "Tími beiðni um samantektargenerun rann út, gæti verið vegna netvandamála eða upptekins netþjóns.", + "deleteTranslationRecord": "Eyða þýðingarupptöku", + "deleteTranslationConfirm": + "Ertu viss um að þú viljir eyða þessari þýðingarupptöku? Ekki er hægt að afturkalla þessa aðgerð.", + "originalText": "Upprunalegur texti", + "translatedText": "Þýddur texti", + "sessionSummary": "Samantekt lotu", + "cannotShare": "Ekki hægt að deila", + "generateSummaryFirst": "Vinsamlegast búðu til samantekt fyrst", + "translationSessionRecord": "Upptaka þýðingarlotu", + + // 个人资料模块 "editProfile": "Breyta persónuupplýsingum", "avatar": "Prófílmynd", "nickname": "Gælunafn", @@ -934,8 +1094,6 @@ const Map isIS = { 'Ertu viss um að þú viljir eyða reikningnum þínum varanlega? Ekki er hægt að afturkalla þessa aðgerð.', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'Netkerfistenging mistókst, vinsamlegast athugaðu netkerfisstillingar og reyndu aftur', 'serverTemporarilyUnavailable': @@ -954,10 +1112,6 @@ const Map isIS = { 'Netkerfistenging mistókst, vinsamlegast athugaðu netkerfisstillingar', 'serverInternalErrorRetryLater': 'Innri netþjónsvilla, vinsamlegast reyndu aftur síðar', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Myndþjöppun mistókst', 'avatarUpdateFailed': 'Uppfærsla prófílmyndar mistókst', 'usernameCannotBeEmpty': 'Notandanafn má ekki vera autt', @@ -969,8 +1123,6 @@ const Map isIS = { 'accountPermanentlyDeleted': 'Reikningi hefur verið eytt varanlega', 'deleteAccountFailedRetry': 'Eyðing reiknings mistókst, vinsamlegast reyndu aftur', - - // 账号服务相关 'clearUserDataFailed': 'Ekki tókst að hreinsa notandagögn', // 清理用户数据失败 'deleteUserDataFailed': 'Ekki tókst að eyða notandagögnum', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'Útskráning þriðja aðila tókst', // 第三方登录退出成功 @@ -983,7 +1135,12 @@ const Map isIS = { 'accountServiceInitialized': 'Reikningsþjónusta frumstillt', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': + 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', 'getPermissionStatusFailed': 'Ekki tókst að fá stöðu heimilda', 'communicationPermissions': 'Samskiptaheimildir', 'bluetoothPermissions': 'Bluetooth Permissions', @@ -996,7 +1153,6 @@ const Map isIS = { 'phone': 'Sími', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'Skrifa í dagbók', @@ -1051,8 +1207,6 @@ const Map isIS = { 'permanentDenialText': 'Þú hefur varanlega hafnað {permission}-heimild, vinsamlegast farðu í forritastillingar til að virkja hana', 'goToSettings': 'Fara í stillingar', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': @@ -1077,7 +1231,6 @@ const Map isIS = { 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', @@ -1087,8 +1240,6 @@ const Map isIS = { 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', 'storagePermissionPermanentDenial': 'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', - - //permission_util.dart 'permissionUtilNeed': 'Need ', 'permissionUtilPermission': ' Permission', 'permissionUtilRestricted': ' Permission Restricted', @@ -1096,7 +1247,20 @@ const Map isIS = { 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Leiðsögn í gangi', + 'native.notification.navigation.keepRunning': 'Leiðsögn í gangi, haltu forritinu opnu', + 'native.notification.bleAgent.running': 'Raddaðstoðarmaður er í gangi', + 'native.notification.audioRecording.recording': 'Tek upp hljóð, ýttu til að fara aftur í forritið', + 'native.notification.music.waiting': 'Bíð eftir spilun', + 'native.notification.music.previous': 'Fyrri', + 'native.notification.music.next': 'Næsta', + 'native.notification.music.play': 'Spila', + 'native.notification.music.pause': 'Hlé', + 'native.notification.qqMusic.playing': 'Spila tónlist', + + // 版本更新 'newVersionFound': 'Ný útgáfa fannst', // 版本更新对话框标题 'remindLater': 'Minn mig á síðar', // 稍后提醒按钮 'updateNow': 'Uppfæra núna', // 立即更新按钮 @@ -1107,253 +1271,7 @@ const Map isIS = { 'updateErrorRetry': 'Villa kom upp við uppfærslu, vinsamlegast reyndu aftur síðar', // 更新错误重试提示 - //国家列表 - "邮箱": "Tölvupóstur", - "中国": "Kína", - "美国": "Bandaríkin", - "加拿大": "Kanada", - "俄罗斯": "Rússland", - "英国": "Bretland", - "德国": "Þýskaland", - "意大利": "Ítalía", - "法国": "Frakkland", - "西班牙": "Spánn", - "南非": "Suður-Afríka", - "沙特阿拉伯": "Sádi-Arabía", - "土耳其": "Tyrkland", - "日本": "Japan", - "韩国": "Suður-Kórea", - "新加坡": "Singapúr", - "马来西亚": "Malasía", - "泰国": "Taíland", - "越南": "Víetnam", - "印度": "Indland", - "巴基斯坦": "Pakistan", - "菲律宾": "Filippseyjar", - "印度尼西亚": "Indónesía", - "阿联酋": "Sameinuðu arabísku furstadæmin", - "墨西哥": "Mexíkó", - "巴西": "Brasilía", - "阿根廷": "Argentína", - "澳大利亚": "Ástralía", - "新西兰": "Nýja-Sjáland", - "中国香港": "Hong Kong (Kína)", - "中国澳门": "Makaó (Kína)", - "中国台湾": "Taívan (Kína)", - "埃及": "Egyptaland", - "希腊": "Grikkland", - "荷兰": "Holland", - "比利时": "Belgía", - "匈牙利": "Ungverjaland", - "罗马尼亚": "Rúmenía", - "瑞士": "Sviss", - "奥地利": "Austurríki", - "丹麦": "Danmörk", - "瑞典": "Svíþjóð", - "挪威": "Noregur", - "波兰": "Pólland", - "秘鲁": "Perú", - "智利": "Chile", - "哥伦比亚": "Kólumbía", - "委内瑞拉": "Venesúela", - "葡萄牙": "Portúgal", - "卢森堡": "Lúxemborg", - "爱尔兰": "Írland", - "冰岛": "Ísland", - "阿尔巴尼亚": "Albanía", - "马耳他": "Malta", - "塞浦路斯": "Kýpur", - "芬兰": "Finnland", - "保加利亚": "Búlgaría", - "立陶宛": "Litháen", - "拉脱维亚": "Lettland", - "爱沙尼亚": "Eistland", - "乌克兰": "Úkraína", - "塞尔维亚": "Serbía", - "克罗地亚": "Króatía", - "斯洛文尼亚": "Slóvenía", - "捷克": "Tékkland", - "斯洛伐克": "Slóvakía", - "危地马拉": "Gvatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Hondúras", - "尼加拉瓜": "Níkaragva", - "哥斯达黎加": "Kosta Ríka", - "巴拿马": "Panama", - "海地": "Haítí", - "玻利维亚": "Bólivía", - "厄瓜多尔": "Ekvador", - "巴拉圭": "Paragvæ", - "乌拉圭": "Úrúgvæ", - "摩洛哥": "Marokkó", - "阿尔及利亚": "Alsír", - "突尼斯": "Túnis", - "尼日利亚": "Nígería", - "加纳": "Gana", - "埃塞俄比亚": "Eþíópía", - "肯尼亚": "Kenía", - "坦桑尼亚": "Tansanía", - "乌干达": "Úganda", - "孟加拉国": "Bangladess", - "以色列": "Ísrael", - "黎巴嫩": "Líbanon", - "约旦": "Jórdanía", - "伊拉克": "Írak", - "科威特": "Kúveit", - "巴林": "Barein", - "卡塔尔": "Katar", - "阿曼": "Óman", - "阿富汗": "Afganistan", - "斯里兰卡": "Srí Lanka", - "缅甸": "Mjanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongólía", - "柬埔寨": "Kambódía", - "老挝": "Laos", - "文莱": "Brúnei", - "东帝汶": "Austur-Tímor", - "斐济": "Fídjí", - "所罗门群岛": "Salómonseyjar", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Þýðingasaga", - "enableRecording": "Virkja upptöku", - "viewAudioFiles": "Skoða hljóðskrár", - "headsetUser": "Notandi heyrnartóla", - "phoneUser": "Notandi síma", - "selectSourceLanguage": "Veldu upprunamál", - "selectTargetLanguage": "Veldu markmál", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Engin saga ennþá", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Hreinsa sögu", - "clearHistoryConfirm": - "Ertu viss um að þú viljir hreinsa alla þýðingasögu? Ekki er hægt að afturkalla þessa aðgerð.", - "unknownLanguage": "Óþekkt tungumál", - "deleteSessionRecord": "Eyða lotuupptöku", - "deleteSessionConfirm": - "Ertu viss um að þú viljir eyða öllum þýðingarupptökum fyrir þessa lotu? Ekki er hægt að afturkalla þessa aðgerð.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Þýða hljóðskrár", - "noAudioFiles": "Engar hljóðskrár ennþá", - "calculating": "Reiknar...", - "playing": "Spilar...", - "paused": "Í pásu", - "clickToPlay": "Smelltu til að spila", - "rename": "Endurnefna", - "smartTranscription": "Snjöll umritun", - "renameAudioFile": "Endurnefna hljóðskrá", - "enterNewFileName": "Vinsamlegast sláðu inn nýtt skráarheiti", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Upprunaleg upptaka", - "recordSummary": "Samantekt upptöku", - "clickToGenerateSummary": - "Smelltu á hnappinn hér að neðan til að búa til samantekt lotu", - "summaryContent": "Innihald samantektar", - "copied": "Afritað", - "summaryCopiledToClipboard": "Samantekt afrituð á klippiborð", - "extractSummary": "Dragðu út samantekt", - "summaryGenerated": "Samantekt búin til", - "generating": "Býr til...", - "regenerate": "Búa til aftur", - "summaryTimeoutMessage": - "Tími beiðni um samantektargenerun rann út, gæti verið vegna netvandamála eða upptekins netþjóns.", - "deleteTranslationRecord": "Eyða þýðingarupptöku", - "deleteTranslationConfirm": - "Ertu viss um að þú viljir eyða þessari þýðingarupptöku? Ekki er hægt að afturkalla þessa aðgerð.", - "originalText": "Upprunalegur texti", - "translatedText": "Þýddur texti", - "sessionSummary": "Samantekt lotu", - "cannotShare": "Ekki hægt að deila", - "generateSummaryFirst": "Vinsamlegast búðu til samantekt fyrst", - "translationSessionRecord": "Upptaka þýðingarlotu", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Pörun tækis", "connectYourDeepSoundHeadset": "Tengdu Voitrans heyrnartólin þín", "bind": "Binda", @@ -1362,14 +1280,11 @@ const Map isIS = { "autoInputCode": "Sjálfvirk innsláttur kóða", "skipBinding": "Sleppa bindingu", "rescan": "Skanna aftur", - "verifyingDevice": "Staðfestir tæki...", "confirmBinding": "Staðfesta bindingu", "associatingDevice": "Tengir tæki...", "goToBluetoothSettings": "Fara í Bluetooth-stillingar", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Tilbúið til pörunar", "preparingPairingEnvironment": "Undirbýr pörunarumhverfi...", "connectDeepSoundViaSystemBluetooth": @@ -1378,8 +1293,6 @@ const Map isIS = { "establishingDeviceAssociation": "Stofna tækjasamband...", "waitingCompletePairing": "Vinsamlegast bíddu, lýkur pörun...", "pairingSuccessRedirecting": "Pörun tókst! Vísar á aðalsíðu...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Gakktu úr skugga um að þú sért tengd(ur) við Voitrans tæki", "deviceAlreadyBoundToOtherAccount": @@ -1391,19 +1304,12 @@ const Map isIS = { "authorizationFailedCheckCode": "Heimildun mistókst, athugaðu hvort heimildarkóðinn sé réttur", "pairingFailedRetry": "Pörun mistókst, vinsamlegast reyndu aftur", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Vinsamlegast virkjaðu Bluetooth', 'deviceDisconnected': 'Tæki aftengt', 'readyToStartPairing': 'Tilbúið til að hefja pörun', 'checkingEnvironment': 'Athuga umhverfi...', 'ensureHeadsetOnAndPairingMode': 'Gakktu úr skugga um að heyrnartólin séu á og í pörunarham', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Stofna örugga tengingu...', 'needManualBindingAuthCode': 'Handvirkur bindingarheimildarkóði er nauðsynlegur...', @@ -1427,8 +1333,6 @@ const Map isIS = { 'bleConnectionFailed': 'BLE tenging mistókst', 'deviceAuthorizationFailedCheckCode': 'Tækisheimildun mistókst, athugaðu heimildarkóðann', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1441,7 +1345,18 @@ const Map isIS = { 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Endurgjöf notenda", 'feedbackInfo': 'Gefðu endurgjöf eða tillögur', 'feedbackDescription': 'Lýstu vandamálinu sem þú lendir í eða tillögu þinni', @@ -1482,7 +1397,7 @@ const Map isIS = { "removeEarbudsEnsureBattery": "Taktu báðar heyrnartólin úr og gakktu úr skugga um að rafhlaðan á báðum sé yfir 20%", - // 音乐列表页面 + // 音乐模块 "noMusic": "Engin tónlist", // 暂无音乐 "noPlayingMusic": "Engin tónlist í spilun", // 暂无播放音乐 "unknownSong": "Óþekkt lag", // 未知歌曲 @@ -1530,22 +1445,122 @@ const Map isIS = { "波斯语": "Persneska", "斯瓦希里语": "Svahílí", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "Tölvupóstur", + "中国": "Kína", + "美国": "Bandaríkin", + "加拿大": "Kanada", + "俄罗斯": "Rússland", + "英国": "Bretland", + "德国": "Þýskaland", + "意大利": "Ítalía", + "法国": "Frakkland", + "西班牙": "Spánn", + "南非": "Suður-Afríka", + "沙特阿拉伯": "Sádi-Arabía", + "土耳其": "Tyrkland", + "日本": "Japan", + "韩国": "Suður-Kórea", + "新加坡": "Singapúr", + "马来西亚": "Malasía", + "泰国": "Taíland", + "越南": "Víetnam", + "印度": "Indland", + "巴基斯坦": "Pakistan", + "菲律宾": "Filippseyjar", + "印度尼西亚": "Indónesía", + "阿联酋": "Sameinuðu arabísku furstadæmin", + "墨西哥": "Mexíkó", + "巴西": "Brasilía", + "阿根廷": "Argentína", + "澳大利亚": "Ástralía", + "新西兰": "Nýja-Sjáland", + "中国香港": "Hong Kong (Kína)", + "中国澳门": "Makaó (Kína)", + "中国台湾": "Taívan (Kína)", + "埃及": "Egyptaland", + "希腊": "Grikkland", + "荷兰": "Holland", + "比利时": "Belgía", + "匈牙利": "Ungverjaland", + "罗马尼亚": "Rúmenía", + "瑞士": "Sviss", + "奥地利": "Austurríki", + "丹麦": "Danmörk", + "瑞典": "Svíþjóð", + "挪威": "Noregur", + "波兰": "Pólland", + "秘鲁": "Perú", + "智利": "Chile", + "哥伦比亚": "Kólumbía", + "委内瑞拉": "Venesúela", + "葡萄牙": "Portúgal", + "卢森堡": "Lúxemborg", + "爱尔兰": "Írland", + "冰岛": "Ísland", + "阿尔巴尼亚": "Albanía", + "马耳他": "Malta", + "塞浦路斯": "Kýpur", + "芬兰": "Finnland", + "保加利亚": "Búlgaría", + "立陶宛": "Litháen", + "拉脱维亚": "Lettland", + "爱沙尼亚": "Eistland", + "乌克兰": "Úkraína", + "塞尔维亚": "Serbía", + "克罗地亚": "Króatía", + "斯洛文尼亚": "Slóvenía", + "捷克": "Tékkland", + "斯洛伐克": "Slóvakía", + "危地马拉": "Gvatemala", + "萨尔瓦多": "El Salvador", + "洪都拉斯": "Hondúras", + "尼加拉瓜": "Níkaragva", + "哥斯达黎加": "Kosta Ríka", + "巴拿马": "Panama", + "海地": "Haítí", + "玻利维亚": "Bólivía", + "厄瓜多尔": "Ekvador", + "巴拉圭": "Paragvæ", + "乌拉圭": "Úrúgvæ", + "摩洛哥": "Marokkó", + "阿尔及利亚": "Alsír", + "突尼斯": "Túnis", + "尼日利亚": "Nígería", + "加纳": "Gana", + "埃塞俄比亚": "Eþíópía", + "肯尼亚": "Kenía", + "坦桑尼亚": "Tansanía", + "乌干达": "Úganda", + "孟加拉国": "Bangladess", + "以色列": "Ísrael", + "黎巴嫩": "Líbanon", + "约旦": "Jórdanía", + "伊拉克": "Írak", + "科威特": "Kúveit", + "巴林": "Barein", + "卡塔尔": "Katar", + "阿曼": "Óman", + "阿富汗": "Afganistan", + "斯里兰卡": "Srí Lanka", + "缅甸": "Mjanmar", + "尼泊尔": "Nepal", + "蒙古": "Mongólía", + "柬埔寨": "Kambódía", + "老挝": "Laos", + "文莱": "Brúnei", + "东帝汶": "Austur-Tímor", + "斐济": "Fídjí", + "所罗门群岛": "Salómonseyjar", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/it_it.dart b/lib/core/translations/language/it_it.dart index 9709ff635..078cb22c8 100644 --- a/lib/core/translations/language/it_it.dart +++ b/lib/core/translations/language/it_it.dart @@ -1,5 +1,5 @@ -//意大利语 const Map itIT = { + // 通用 'continue': 'Continua', 'confirm': 'Conferma', @@ -19,6 +19,11 @@ const Map itIT = { "unknownError": "Errore sconosciuto", "asrConnectionFailed": "Connessione al servizio di riconoscimento vocale non riuscita. Controlla la rete o riprova più tardi.", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "Connettere il mondo, oltre il suono", @@ -29,7 +34,7 @@ const Map itIT = { "explore": "Esplora", "settings": "Impostazioni", - // 语言 + // 语言列表 "followingSystem": "Segui il sistema", "chinese": "Cinese", "english": "Inglese", @@ -73,7 +78,7 @@ const Map itIT = { "arabic": "Arabo", "persian": "Perso", - // 登录页 + // 登录模块 "welcome": "Benvenuto", "loginTips": "Accedi o registrati con il tuo numero di telefono o e-mail", "accountNumber": "Numero di telefono o e-mail", @@ -101,13 +106,9 @@ const Map itIT = { "resendVerificationCode": "Invia nuovamente il codice di verifica", "login": "Accedi", "usePasswordLogin": "Accedi con password", - - // 隐私政策弹窗 "loginDeclaration": "Dichiarazione di Voitrans", // Voitrans 声明 "welcomeToThisApp": "Benvenuto in Voitrans, si prega di leggere attentamente", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", cliccando su 'Accetta e entra' dichiari di aver letto e accettato integralmente i suddetti accordi. Cliccando su 'Rifiuta' uscirai dall'applicazione.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Rifiuta", // 不同意 @@ -171,7 +172,7 @@ const Map itIT = { 'checkConnectionStatusFailed': 'Verifica dello stato della connessione fallita', -// 发现页 + // 发现页 "searchAi": "Cerca funzioni AI...", "exploreSlogan": "Auricolari intelligenti, possibilità infinite", "exploreSlogan1": "Compagno intelligente, possibilità infinite", @@ -195,6 +196,7 @@ const Map itIT = { "usageStats": "Statistiche di utilizzo", "usageStatsInfo": "Visualizza le statistiche di utilizzo dell'applicazione", "scene": "Scenario", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", @@ -215,7 +217,6 @@ const Map itIT = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -232,7 +233,6 @@ const Map itIT = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - // 通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", @@ -241,89 +241,79 @@ const Map itIT = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', 'remaining': 'Remaining', 'featureDescription': 'Feature Description', - // AI 功能卡片 + 'paymentSuccess': 'Pagamento riuscito', + 'paymentFailed': 'Pagamento non riuscito', + 'gotIt': 'Capito', + 'paymentFailedTryAgain': 'Pagamento non riuscito. Riprova.', + 'selectPaymentMethod': 'Seleziona il metodo di pagamento', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': "Impossibile creare l'ordine WeChat", + 'alipayOrderCreateFailed': "Impossibile creare l'ordine Alipay", + 'appleOrderCreateFailed': "Impossibile creare l'ordine Apple", + 'googleOrderCreateFailed': "Impossibile creare l'ordine Google", + 'paypalOrderCreateFailed': "Impossibile creare l'ordine PayPal", + 'paymentException': 'Eccezione di pagamento', + 'paymentLaunchFailed': 'Avvio del pagamento non riuscito', + 'paymentExceptionWithError': 'Eccezione di pagamento: @error', + 'paymentProcessingCheckLater': 'Il tuo ordine è in fase di elaborazione. Controlla più tardi.', + 'paymentResultQueryException': 'Impossibile interrogare il risultato del pagamento: @error', + 'orderConfirmedQuotaRefreshed': 'Ordine confermato. La tua quota è stata aggiornata.', + 'paymentCompletedConfirming': 'Pagamento completato. Conferma in corso…', + 'paymentCancelled': 'Pagamento annullato', + 'paypalOpenedCompleteInBrowser': 'PayPal aperto. Completa il pagamento nel tuo browser.', + 'paypalOpenFailed': 'Impossibile aprire la pagina di pagamento PayPal', + 'paymentTestTitle': 'Test di pagamento', + 'paymentTestOrderInfo': 'Informazioni ordine di prova', + 'paymentTestProductId': 'ID prodotto', + 'paymentTestProductDescription': 'Descrizione del prodotto', + 'paymentTestWechatDescription': 'Test di pagamento WeChat Pay', + 'paymentTestAlipayDescription': 'Test di pagamento Alipay', + 'paymentTestAmount': 'Importo', + 'paymentTestSelectAmount': "Seleziona l'importo di prova", + 'paying': 'Pagamento in corso...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Stato del pagamento', + 'errorInfoWithMessage': 'Errore: @message', + 'retest': 'Ripeti il test', + 'paymentTestInstructionsTitle': 'Istruzioni', + 'paymentTestInstructionsContent': "1. Seleziona un importo di prova (consigliato: ¥0,01)\n2. Clicca il pulsante di pagamento per iniziare\n3. Completa il pagamento nell'app di pagamento\n4. Torna per verificare il risultato", + 'startingWechatPayment': 'Avvio di WeChat Pay...', + 'startingAlipayPayment': 'Avvio di Alipay...', + 'wechatPaymentSuccess': 'Pagamento WeChat Pay riuscito!', + 'wechatPaymentFailed': 'Pagamento WeChat Pay non riuscito', + 'wechatPaymentLaunchFailed': 'Impossibile avviare WeChat Pay', + 'cannotLaunchWechatPayment': 'Impossibile avviare WeChat Pay', + 'wechatPaymentException': 'Eccezione WeChat Pay', + 'wechatPaymentTestCompleted': 'Test di pagamento WeChat Pay completato', + 'alipayPaymentSuccess': 'Pagamento Alipay riuscito!', + 'alipayPaymentFailed': 'Pagamento Alipay non riuscito', + 'alipayPaymentLaunchFailed': 'Impossibile avviare Alipay', + 'cannotLaunchAlipayPayment': 'Impossibile avviare Alipay', + 'alipayPaymentException': 'Eccezione Alipay', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": + 'Insufficient balance, please go to the corresponding recharge page to recharge.', + "recharge": 'Go to Recharge', + "aiMemberExpiredDesc": + 'AI membership expired, please go to the membership recharge page to renew.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Traduzione Base 100', - 'trans_002_name': 'Traduzione Base 500', - 'trans_003_name': 'Traduzione Base 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Include 100 traduzioni (voce/testo).', - 'trans_002_desc': 'Include 500 traduzioni (voce/testo).', - 'trans_003_desc': 'Include 1000 traduzioni (voce/testo).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Interpretazione simultanea e traduzione di testo in tempo reale, con voce a bassa latenza.', - 'transHeaderDesc2': 'Adatto a viaggi, affari, discorsi e insegnamento.', - 'translateZhEn': 'Traduzione Cinese-Inglese', - 'lowLatencyVoiceBroadcast': 'Trasmissione vocale a bassa latenza', - 'multiLangTextTranslation': 'Traduzione di testo multilingue', - 'termOptimizationContextPreserve': - 'Ottimizzazione della terminologia e mantenimento del contesto', - 'lexiconTourBusinessLife': 'Lessici per viaggio/affari/vita quotidiana', - 'personalVocabularyMemory': 'Memoria del vocabolario personale', - 'conversationSubtitleLargeText': - 'Sottotitoli conversazione / modalità testo grande', - 'colorHighContrast': 'Elevato contrasto dei colori', - 'transDisclaimer': - 'Le prestazioni della traduzione dipendono dal microfono, dalla latenza di rete e dal rumore ambientale.', - - // AI 商品页描述 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', 'aiHeaderDesc2': @@ -346,7 +336,47 @@ const Map itIT = { 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Real-time Transcription', + 'sceneLexicon': 'Scenario Glossary', + 'subtitleDisplay': 'Subtitles', + 'transHeaderDesc1': + 'Interpretazione simultanea e traduzione di testo in tempo reale, con voce a bassa latenza.', + 'transHeaderDesc2': 'Adatto a viaggi, affari, discorsi e insegnamento.', + 'translateZhEn': 'Traduzione Cinese-Inglese', + 'lowLatencyVoiceBroadcast': 'Trasmissione vocale a bassa latenza', + 'multiLangTextTranslation': 'Traduzione di testo multilingue', + 'termOptimizationContextPreserve': + 'Ottimizzazione della terminologia e mantenimento del contesto', + 'lexiconTourBusinessLife': 'Lessici per viaggio/affari/vita quotidiana', + 'personalVocabularyMemory': 'Memoria del vocabolario personale', + 'conversationSubtitleLargeText': + 'Sottotitoli conversazione / modalità testo grande', + 'colorHighContrast': 'Elevato contrasto dei colori', + 'transDisclaimer': + 'Le prestazioni della traduzione dipendono dal microfono, dalla latenza di rete e dal rumore ambientale.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Meeting Recording', + 'transcriptionAndSummary': 'Transcription & Summary', + 'keywordSearch': 'Keyword Search', + 'collaborationSharing': 'Collaboration & Sharing', + 'meetingHeaderDesc1': + 'Audio recording, transcription, keyword search, and auto summary.', + 'meetingHeaderDesc2': + 'Suitable for business meetings, class notes, and interview minutes.', + 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingSpeakerTagging': 'Speaker labeling', + 'meetingLongAudioTranscription': 'Long audio transcription', + 'meetingKeyPointSummary': 'Key point extraction', + 'meetingTopicNameSearch': 'Search by topic/name', + 'meetingTimelineJump': 'Timeline jump', + 'meetingExportSummary': 'Export minutes', + 'meetingMultiPlatformShare': 'Share across platforms', + 'meetingDisclaimer': + 'Use in quiet environments; performance depends on microphone and network.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Panoramica dei vantaggi', 'higherQuota': 'Quota di utilizzo più alta', 'lowerUnitPrice': 'Prezzo unitario più basso', @@ -362,7 +392,32 @@ const Map itIT = { 'vipDisclaimer': 'I benefici effettivi dipendono dai dettagli del pacchetto e possono cambiare con le versioni.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Traduzione Base 100', + 'trans_002_name': 'Traduzione Base 500', + 'trans_003_name': 'Traduzione Base 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': 'Include 100 traduzioni (voce/testo).', + 'trans_002_desc': 'Include 500 traduzioni (voce/testo).', + 'trans_003_desc': 'Include 1000 traduzioni (voce/testo).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "Salta", 'next': 'Next', 'sayLilyHint': "Say \"Lily Lily\" to the mic", @@ -373,7 +428,6 @@ const Map itIT = { 'guideAwakenSuccess': "Great! Lily is awake—ask it to help.", 'confirmInput': "Confirm Input", 'guideClickSendPrefix': "Tap send, ", - // AI 引导步骤 'guideWeatherStart': "Tell Lily: “What’s the weather today?”", 'guideWeatherInput': "What’s the weather today?", 'guideWeatherSend': "Lily will report the weather in real time", @@ -400,7 +454,7 @@ const Map itIT = { 'guideSmsSend': "Lily will send the message", 'guideSmsEnd': "Message sent—voice control is convenient", - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Inizia riunione", 'edit': 'Modifica', 'delete': 'Elimina', @@ -412,8 +466,6 @@ const Map itIT = { 'recordingDetails': 'Dettagli registrazione', 'aiSummary': 'Riepilogo AI', 'meetingTranscript': 'Trascrizione riunione', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -464,7 +516,6 @@ const Map itIT = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -473,6 +524,97 @@ const Map itIT = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': 'Crea', + 'templateDetails': 'Dettagli del modello', + 'tag': 'Etichetta', + 'description': 'Descrizione', + 'template': 'Modello', + 'deleteTemplate': 'Elimina modello', + 'deleteTemplateConfirm': 'Sei sicuro di voler eliminare questo modello?', + 'editTemplate': 'Modifica modello', + 'createTemplate': 'Crea modello', + 'name': 'Nome', + 'templateContentHint': 'Inserisci il contenuto del modello! Suggerimento: Clicca il pulsante IA qui sopra per generare rapidamente il contenuto del modello in base al nome e alla descrizione inseriti', + 'inputNameHint': 'Inserisci un nome', + 'inputDescHint': 'Inserisci una descrizione', + 'custom': 'Personalizzato', + 'pleaseEnter': 'Si prega di inserire', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': + 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Salva mappa mentale', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'Esporta', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Applica a tutti i paragrafi di questo relatore', + 'summaryWillBeUpdatedAutomatically': + 'Il riepilogo verrà aggiornato automaticamente in base al modello', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -491,7 +633,7 @@ const Map itIT = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -527,8 +669,6 @@ const Map itIT = { 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -557,105 +697,26 @@ const Map itIT = { 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Applica a tutti i paragrafi di questo relatore', - 'summaryWillBeUpdatedAutomatically': - 'Il riepilogo verrà aggiornato automaticamente in base al modello', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': 'Analisi non riuscita, riprova più tardi', + 'transcriptionFailed': 'Trascrizione non riuscita, riprova più tardi', + 'summaryFailed': 'Riepilogo non riuscito, riprova più tardi', + 'summaryFailedShort': 'Riepilogo non riuscito', + 'transcriptionFailedShort': 'Trascrizione non riuscita', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Il lettore audio non è pronto, attendere', + 'playFailed': 'Riproduzione non riuscita', + 'audioFileNotFound': 'File audio non trovato', + 'fetchingAudio': 'Recupero audio dal cloud...', + 'playerLoadFailed': 'Caricamento del lettore audio non riuscito', // 设置页 "systemSettings": "Impostazioni di sistema", @@ -711,26 +772,15 @@ const Map itIT = { "Aggiornamento della versione del firmware delle cuffie BLE", "deviceManagement": "Gestione dispositivi", "manageConnectedDevices": "Gestisci i dispositivi Bluetooth associati", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Hai già l\'ultima versione {version}', 'checkUpdateFailed': 'Controllo aggiornamenti fallito', 'networkErrorRetry': 'Errore di rete, riprova più tardi', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Chat vocale in tempo reale", "realtimeVoiceChatInfo": "Sperimenta la funzione di interazione vocale intelligente (anteprima della funzione)", "loading": "Caricamento...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -746,8 +796,7 @@ const Map itIT = { "Are you sure you want to unbind device \"{deviceName}\"?", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Cancella cronologia chat", "online": "Online", @@ -778,8 +827,9 @@ const Map itIT = { "swipeUpForMore": "Scorri verso l'alto per vedere di più", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': "Quando abilitato: l'IA non verrà interrotta dalla tua voce mentre parla e potrà gestire solo un turno di conversazione alla volta. Per iniziare un nuovo turno, basta pronunciare la parola di attivazione.", - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -791,7 +841,7 @@ const Map itIT = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Ciao! Sono **Lily**, posso aiutarti a:\n\n' '• Rispondere a domande e fornire informazioni\n\n' '• Traduzione vocale in tempo reale\n\n' @@ -811,18 +861,17 @@ const Map itIT = { 'startVoiceInput': 'Avvia input vocale', 'startPhoneCallMode': 'Avvia modalità chiamata, avvia input vocale', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Inserisci il tuo messaggio qui...', // 全屏编辑器输入提示 'characterCount': '{count} caratteri', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Copia', 'copySuccess': 'Copiato con successo', 'report': 'Segnala', 'submitSuccess': 'Inviato con successo', 'submitFailed': 'Invio fallito', 'reportSubmitted': 'Segnalazione inviata, la elaboreremo il prima possibile', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Dannoso/Non sicuro', 'pornographicVulgar': 'Pornografico/Volgare', 'misleadingAttack': 'Fuorviante/Attacco', @@ -833,17 +882,14 @@ const Map itIT = { 'other': 'Altro', 'reportDescriptionHint': 'Vogliamo sapere perché stai segnalando, puoi descrivere il problema che hai riscontrato.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Generato da AI', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'Ecco alcuni brani musicali consigliati:', 'playList': 'Playlist', 'moreMusic': 'Altra musica', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'ore', // 小时单位 @@ -858,7 +904,7 @@ const Map itIT = { "bicycling": "In bicicletta", "tsransit": "Trasporto pubblico", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Interrogazione delle condizioni meteorologiche:', 'highest': 'Massima', 'lowest': 'Minima', @@ -888,18 +934,8 @@ const Map itIT = { "friday": "Ven", "saturday": "Sab", "sunday": "Dom", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Soleggiato", "partlyCloudy": "Poco nuvoloso", "partlySunny": "Parzialmente soleggiato", @@ -920,7 +956,130 @@ const Map itIT = { "haze": "Foschia", "strongWind": "Vento forte", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "Cronologia traduzioni", + "enableRecording": "Abilita registrazione", + "viewAudioFiles": "Visualizza file audio", + "headsetUser": "Utente auricolari", + "phoneUser": "Utente telefono", + "selectSourceLanguage": "Seleziona lingua di origine", + "selectTargetLanguage": "Seleziona lingua di destinazione", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": + "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Nessuna cronologia", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "Cancella cronologia", + "clearHistoryConfirm": + "Sei sicuro di voler cancellare tutta la cronologia delle traduzioni? Questa azione non può essere annullata.", + "unknownLanguage": "Lingua sconosciuta", + "deleteSessionRecord": "Elimina registrazione sessione", + "deleteSessionConfirm": + "Sei sicuro di voler eliminare tutte le registrazioni di traduzione per questa sessione? Questa azione non può essere annullata.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": + "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": + "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": + "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": + "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Traduci file audio", + "noAudioFiles": "Nessun file audio", + "calculating": "Calcolo...", + "playing": "In riproduzione...", + "paused": "In pausa", + "clickToPlay": "Clicca per riprodurre", + "rename": "Rinomina", + "smartTranscription": "Trascrizione intelligente", + "renameAudioFile": "Rinomina file audio", + "enterNewFileName": "Inserisci un nuovo nome file", + + // 翻译模块 - 翻译详情 + "originalRecord": "Registrazione originale", + "recordSummary": "Riepilogo registrazione", + "clickToGenerateSummary": + "Clicca il pulsante qui sotto per generare un riepilogo della sessione", + "summaryContent": "Contenuto del riepilogo", + "copied": "Copiato", + "summaryCopiledToClipboard": "Riepilogo copiato negli appunti", + "extractSummary": "Estrai riepilogo", + "summaryGenerated": "Riepilogo generato", + "generating": "Generazione...", + "regenerate": "Rigenera", + "summaryTimeoutMessage": + "La richiesta di generazione del riepilogo è scaduta, potrebbe essere a causa di problemi di rete o di un server occupato.", + "deleteTranslationRecord": "Elimina registrazione traduzione", + "deleteTranslationConfirm": + "Sei sicuro di voler eliminare questa registrazione di traduzione? Questa azione non può essere annullata.", + "originalText": "Testo originale", + "translatedText": "Testo tradotto", + "sessionSummary": "Riepilogo sessione", + "cannotShare": "Impossibile condividere", + "generateSummaryFirst": "Genera prima un riepilogo", + "translationSessionRecord": "Registrazione sessione di traduzione", + + // 个人资料模块 "editProfile": "Modifica informazioni personali", "avatar": "Avatar", "nickname": "Nickname", @@ -936,8 +1095,6 @@ const Map itIT = { 'Sei sicuro di voler eliminare permanentemente il tuo account? Questa azione non può essere annullata.', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'Connessione di rete fallita, controlla le impostazioni di rete e riprova', 'serverTemporarilyUnavailable': @@ -956,10 +1113,6 @@ const Map itIT = { 'Connessione di rete fallita, controlla le impostazioni di rete', 'serverInternalErrorRetryLater': 'Errore interno del server, riprova più tardi', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Compressione dell\'immagine fallita', 'avatarUpdateFailed': 'Aggiornamento dell\'avatar fallito', 'usernameCannotBeEmpty': 'Il nome utente non può essere vuoto', @@ -970,8 +1123,6 @@ const Map itIT = { 'logoutFailedRetry': 'Disconnessione fallita, riprova', 'accountPermanentlyDeleted': 'Account eliminato permanentemente', 'deleteAccountFailedRetry': 'Eliminazione dell\'account fallita, riprova', - - // 账号服务相关 'clearUserDataFailed': 'Cancellazione dei dati utente fallita', // 清理用户数据失败 'deleteUserDataFailed': 'Eliminazione dei dati utente fallita', // 删除用户数据失败 'thirdPartyLogoutSuccess': @@ -988,7 +1139,12 @@ const Map itIT = { 'accountServiceInitialized': 'Servizio account inizializzato', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': + 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', 'getPermissionStatusFailed': 'Ottenimento dello stato delle autorizzazioni fallito', 'communicationPermissions': 'Autorizzazioni di comunicazione', @@ -1002,7 +1158,6 @@ const Map itIT = { 'phone': 'Telefono', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'Scrivi nel calendario', @@ -1060,8 +1215,6 @@ const Map itIT = { 'permanentDenialText': 'Hai negato permanentemente l\'autorizzazione {permission}, vai alle impostazioni dell\'app per attivarla', 'goToSettings': 'Vai alle impostazioni', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': @@ -1086,7 +1239,6 @@ const Map itIT = { 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', @@ -1096,8 +1248,6 @@ const Map itIT = { 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', 'storagePermissionPermanentDenial': 'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', - - //permission_util.dart 'permissionUtilNeed': 'Need ', 'permissionUtilPermission': ' Permission', 'permissionUtilRestricted': ' Permission Restricted', @@ -1105,7 +1255,20 @@ const Map itIT = { 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigazione in corso', + 'native.notification.navigation.keepRunning': "Navigazione in corso, mantieni l'app attiva", + 'native.notification.bleAgent.running': "L'agente assistente vocale è in esecuzione", + 'native.notification.audioRecording.recording': "Registrazione audio in corso, tocca per tornare all'app", + 'native.notification.music.waiting': 'In attesa di riproduzione', + 'native.notification.music.previous': 'Indietro', + 'native.notification.music.next': 'Avanti', + 'native.notification.music.play': 'Riproduci', + 'native.notification.music.pause': 'Pausa', + 'native.notification.qqMusic.playing': 'Riproduzione musica in corso', + + // 版本更新 'newVersionFound': 'Nuova versione trovata', // 版本更新对话框标题 'remindLater': 'Ricordamelo più tardi', // 稍后提醒按钮 'updateNow': 'Aggiorna ora', // 立即更新按钮 @@ -1116,253 +1279,7 @@ const Map itIT = { 'updateErrorRetry': 'Si è verificato un errore durante l\'aggiornamento, riprova più tardi', // 更新错误重试提示 - //国家列表 - "邮箱": "E-mail", - "中国": "Cina", - "美国": "Stati Uniti", - "加拿大": "Canada", - "俄罗斯": "Russia", - "英国": "Regno Unito", - "德国": "Germania", - "意大利": "Italia", - "法国": "Francia", - "西班牙": "Spagna", - "南非": "Sudafrica", - "沙特阿拉伯": "Arabia Saudita", - "土耳其": "Turchia", - "日本": "Giappone", - "韩国": "Corea del Sud", - "新加坡": "Singapore", - "马来西亚": "Malesia", - "泰国": "Tailandia", - "越南": "Vietnam", - "印度": "India", - "巴基斯坦": "Pakistan", - "菲律宾": "Filippine", - "印度尼西亚": "Indonesia", - "阿联酋": "Emirati Arabi Uniti", - "墨西哥": "Messico", - "巴西": "Brasile", - "阿根廷": "Argentina", - "澳大利亚": "Australia", - "新西兰": "Nuova Zelanda", - "中国香港": "Hong Kong (Cina)", - "中国澳门": "Macao (Cina)", - "中国台湾": "Taiwan (Cina)", - "埃及": "Egitto", - "希腊": "Grecia", - "荷兰": "Paesi Bassi", - "比利时": "Belgio", - "匈牙利": "Ungheria", - "罗马尼亚": "Romania", - "瑞士": "Svizzera", - "奥地利": "Austria", - "丹麦": "Danimarca", - "瑞典": "Svezia", - "挪威": "Norvegia", - "波兰": "Polonia", - "秘鲁": "Perù", - "智利": "Cile", - "哥伦比亚": "Colombia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portogallo", - "卢森堡": "Lussemburgo", - "爱尔兰": "Irlanda", - "冰岛": "Islanda", - "阿尔巴尼亚": "Albania", - "马耳他": "Malta", - "塞浦路斯": "Cipro", - "芬兰": "Finlandia", - "保加利亚": "Bulgaria", - "立陶宛": "Lituania", - "拉脱维亚": "Lettonia", - "爱沙尼亚": "Estonia", - "乌克兰": "Ucraina", - "塞尔维亚": "Serbia", - "克罗地亚": "Croazia", - "斯洛文尼亚": "Slovenia", - "捷克": "Repubblica Ceca", - "斯洛伐克": "Slovacchia", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolivia", - "厄瓜多尔": "Ecuador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Marocco", - "阿尔及利亚": "Algeria", - "突尼斯": "Tunisia", - "尼日利亚": "Nigeria", - "加纳": "Ghana", - "埃塞俄比亚": "Etiopia", - "肯尼亚": "Kenya", - "坦桑尼亚": "Tanzania", - "乌干达": "Uganda", - "孟加拉国": "Bangladesh", - "以色列": "Israele", - "黎巴嫩": "Libano", - "约旦": "Giordania", - "伊拉克": "Iraq", - "科威特": "Kuwait", - "巴林": "Bahrain", - "卡塔尔": "Qatar", - "阿曼": "Oman", - "阿富汗": "Afghanistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongolia", - "柬埔寨": "Cambogia", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "Timor Est", - "斐济": "Figi", - "所罗门群岛": "Isole Salomone", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Cronologia traduzioni", - "enableRecording": "Abilita registrazione", - "viewAudioFiles": "Visualizza file audio", - "headsetUser": "Utente auricolari", - "phoneUser": "Utente telefono", - "selectSourceLanguage": "Seleziona lingua di origine", - "selectTargetLanguage": "Seleziona lingua di destinazione", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Nessuna cronologia", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Cancella cronologia", - "clearHistoryConfirm": - "Sei sicuro di voler cancellare tutta la cronologia delle traduzioni? Questa azione non può essere annullata.", - "unknownLanguage": "Lingua sconosciuta", - "deleteSessionRecord": "Elimina registrazione sessione", - "deleteSessionConfirm": - "Sei sicuro di voler eliminare tutte le registrazioni di traduzione per questa sessione? Questa azione non può essere annullata.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Traduci file audio", - "noAudioFiles": "Nessun file audio", - "calculating": "Calcolo...", - "playing": "In riproduzione...", - "paused": "In pausa", - "clickToPlay": "Clicca per riprodurre", - "rename": "Rinomina", - "smartTranscription": "Trascrizione intelligente", - "renameAudioFile": "Rinomina file audio", - "enterNewFileName": "Inserisci un nuovo nome file", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Registrazione originale", - "recordSummary": "Riepilogo registrazione", - "clickToGenerateSummary": - "Clicca il pulsante qui sotto per generare un riepilogo della sessione", - "summaryContent": "Contenuto del riepilogo", - "copied": "Copiato", - "summaryCopiledToClipboard": "Riepilogo copiato negli appunti", - "extractSummary": "Estrai riepilogo", - "summaryGenerated": "Riepilogo generato", - "generating": "Generazione...", - "regenerate": "Rigenera", - "summaryTimeoutMessage": - "La richiesta di generazione del riepilogo è scaduta, potrebbe essere a causa di problemi di rete o di un server occupato.", - "deleteTranslationRecord": "Elimina registrazione traduzione", - "deleteTranslationConfirm": - "Sei sicuro di voler eliminare questa registrazione di traduzione? Questa azione non può essere annullata.", - "originalText": "Testo originale", - "translatedText": "Testo tradotto", - "sessionSummary": "Riepilogo sessione", - "cannotShare": "Impossibile condividere", - "generateSummaryFirst": "Genera prima un riepilogo", - "translationSessionRecord": "Registrazione sessione di traduzione", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Associazione dispositivo", "connectYourDeepSoundHeadset": "Connetti le tue cuffie Voitrans", "bind": "Associa", @@ -1371,14 +1288,11 @@ const Map itIT = { "autoInputCode": "Inserimento automatico del codice", "skipBinding": "Salta associazione", "rescan": "Riesegui scansione", - "verifyingDevice": "Verifica del dispositivo...", "confirmBinding": "Conferma associazione", "associatingDevice": "Associazione del dispositivo...", "goToBluetoothSettings": "Vai alle impostazioni Bluetooth", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Pronto per l'associazione", "preparingPairingEnvironment": "Preparazione dell'ambiente di associazione...", @@ -1390,8 +1304,6 @@ const Map itIT = { "waitingCompletePairing": "Attendi, completamento dell'associazione...", "pairingSuccessRedirecting": "Associazione riuscita! Reindirizzamento alla pagina principale...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Assicurati di essere connesso a un dispositivo Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1403,19 +1315,12 @@ const Map itIT = { "authorizationFailedCheckCode": "Autorizzazione fallita, controlla che il codice di autorizzazione sia corretto", "pairingFailedRetry": "Associazione fallita, riprova", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Abilita il Bluetooth', 'deviceDisconnected': 'Dispositivo disconnesso', 'readyToStartPairing': 'Pronto per iniziare l associazione', 'checkingEnvironment': 'Controllo dell ambiente...', 'ensureHeadsetOnAndPairingMode': 'Assicurati che le cuffie siano accese e in modalità di associazione', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Creazione di una connessione sicura...', 'needManualBindingAuthCode': "È necessario un codice di autorizzazione per l'associazione manuale...", @@ -1437,8 +1342,6 @@ const Map itIT = { 'bleConnectionFailed': 'Connessione BLE fallita', 'deviceAuthorizationFailedCheckCode': 'Autorizzazione del dispositivo fallita, controlla il codice di autorizzazione', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1451,7 +1354,18 @@ const Map itIT = { 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Feedback utente", 'feedbackInfo': 'Fornisci feedback o suggerimenti', 'feedbackDescription': @@ -1494,7 +1408,7 @@ const Map itIT = { "removeEarbudsEnsureBattery": "Rimuovi entrambi gli auricolari e assicurati che la batteria di entrambi sia superiore al 20%", - // 音乐列表页面 + // 音乐模块 "noMusic": "Nessuna musica", // 暂无音乐 "noPlayingMusic": "Nessuna musica in riproduzione", // 暂无播放音乐 "unknownSong": "Canzone sconosciuta", // 未知歌曲 @@ -1542,22 +1456,122 @@ const Map itIT = { "波斯语": "Persiano", "斯瓦希里语": "Swahili", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "E-mail", + "中国": "Cina", + "美国": "Stati Uniti", + "加拿大": "Canada", + "俄罗斯": "Russia", + "英国": "Regno Unito", + "德国": "Germania", + "意大利": "Italia", + "法国": "Francia", + "西班牙": "Spagna", + "南非": "Sudafrica", + "沙特阿拉伯": "Arabia Saudita", + "土耳其": "Turchia", + "日本": "Giappone", + "韩国": "Corea del Sud", + "新加坡": "Singapore", + "马来西亚": "Malesia", + "泰国": "Tailandia", + "越南": "Vietnam", + "印度": "India", + "巴基斯坦": "Pakistan", + "菲律宾": "Filippine", + "印度尼西亚": "Indonesia", + "阿联酋": "Emirati Arabi Uniti", + "墨西哥": "Messico", + "巴西": "Brasile", + "阿根廷": "Argentina", + "澳大利亚": "Australia", + "新西兰": "Nuova Zelanda", + "中国香港": "Hong Kong (Cina)", + "中国澳门": "Macao (Cina)", + "中国台湾": "Taiwan (Cina)", + "埃及": "Egitto", + "希腊": "Grecia", + "荷兰": "Paesi Bassi", + "比利时": "Belgio", + "匈牙利": "Ungheria", + "罗马尼亚": "Romania", + "瑞士": "Svizzera", + "奥地利": "Austria", + "丹麦": "Danimarca", + "瑞典": "Svezia", + "挪威": "Norvegia", + "波兰": "Polonia", + "秘鲁": "Perù", + "智利": "Cile", + "哥伦比亚": "Colombia", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portogallo", + "卢森堡": "Lussemburgo", + "爱尔兰": "Irlanda", + "冰岛": "Islanda", + "阿尔巴尼亚": "Albania", + "马耳他": "Malta", + "塞浦路斯": "Cipro", + "芬兰": "Finlandia", + "保加利亚": "Bulgaria", + "立陶宛": "Lituania", + "拉脱维亚": "Lettonia", + "爱沙尼亚": "Estonia", + "乌克兰": "Ucraina", + "塞尔维亚": "Serbia", + "克罗地亚": "Croazia", + "斯洛文尼亚": "Slovenia", + "捷克": "Repubblica Ceca", + "斯洛伐克": "Slovacchia", + "危地马拉": "Guatemala", + "萨尔瓦多": "El Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nicaragua", + "哥斯达黎加": "Costa Rica", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Bolivia", + "厄瓜多尔": "Ecuador", + "巴拉圭": "Paraguay", + "乌拉圭": "Uruguay", + "摩洛哥": "Marocco", + "阿尔及利亚": "Algeria", + "突尼斯": "Tunisia", + "尼日利亚": "Nigeria", + "加纳": "Ghana", + "埃塞俄比亚": "Etiopia", + "肯尼亚": "Kenya", + "坦桑尼亚": "Tanzania", + "乌干达": "Uganda", + "孟加拉国": "Bangladesh", + "以色列": "Israele", + "黎巴嫩": "Libano", + "约旦": "Giordania", + "伊拉克": "Iraq", + "科威特": "Kuwait", + "巴林": "Bahrain", + "卡塔尔": "Qatar", + "阿曼": "Oman", + "阿富汗": "Afghanistan", + "斯里兰卡": "Sri Lanka", + "缅甸": "Myanmar", + "尼泊尔": "Nepal", + "蒙古": "Mongolia", + "柬埔寨": "Cambogia", + "老挝": "Laos", + "文莱": "Brunei", + "东帝汶": "Timor Est", + "斐济": "Figi", + "所罗门群岛": "Isole Salomone", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/ja_jp.dart b/lib/core/translations/language/ja_jp.dart index bfa608732..ff3eed6d2 100644 --- a/lib/core/translations/language/ja_jp.dart +++ b/lib/core/translations/language/ja_jp.dart @@ -1,4 +1,5 @@ const Map jaJP = { + // 通用 'continue': '続ける', 'confirm': '確認', @@ -17,6 +18,11 @@ const Map jaJP = { "responseTimeout": "応答タイムアウト", "unknownError": "不明なエラー", "asrConnectionFailed": "音声認識サービスへの接続に失敗しました。ネットワークを確認して、しばらくしてからもう一度お試しください。", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "世界をつなぐ、音声を超えて", @@ -27,7 +33,7 @@ const Map jaJP = { "explore": "探索", "settings": "設定", - // 语言 + // 语言列表 "followingSystem": "システムに従う", "chinese": "中国語", "english": "英語", @@ -71,7 +77,7 @@ const Map jaJP = { "arabic": "アラビア語", "persian": "ペルシア語", - // 登录页 + // 登录模块 "welcome": "ようこそ", "loginTips": "電話番号またはメールアドレスでログイン/登録してください", "accountNumber": "電話番号またはメールアドレス", @@ -98,12 +104,8 @@ const Map jaJP = { "resendVerificationCode": "認証コードを再送信", "login": "ログイン", "usePasswordLogin": "パスワードログインを使用", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans 声明", // Voitrans 声明 "welcomeToThisApp": "Voitransへようこそ、十分にお読みください", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": "。「同意して進む」をクリックすると、上記の規約を十分に読み、同意したことを示します。「同意しない」をクリックするとアプリケーションが終了します。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "同意しない", // 不同意 @@ -158,7 +160,7 @@ const Map jaJP = { 'right': '右', 'checkConnectionStatusFailed': '接続状態の確認に失敗', -// 发现页 + // 发现页 "searchAi": "AI機能を検索...", "exploreSlogan": "スマートイヤホン、無限の可能性", "exploreSlogan1": "スマートコンパニオン、無限の可能性", @@ -181,6 +183,7 @@ const Map jaJP = { "usageStats": "使用統計", "usageStatsInfo": "使用統計を確認", "scene": "シナリオ", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", @@ -201,7 +204,6 @@ const Map jaJP = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -218,7 +220,6 @@ const Map jaJP = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - // 通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", @@ -227,88 +228,79 @@ const Map jaJP = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', 'remaining': 'Remaining', 'featureDescription': 'Feature Description', - // AI 功能卡片 + 'paymentSuccess': '支払い成功', + 'paymentFailed': '支払い失敗', + 'gotIt': '了解', + 'paymentFailedTryAgain': '支払いに失敗しました。もう一度お試しください。', + 'selectPaymentMethod': '支払い方法を選択', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'WeChat Pay注文の作成に失敗しました', + 'alipayOrderCreateFailed': 'Alipay注文の作成に失敗しました', + 'appleOrderCreateFailed': 'Apple注文の作成に失敗しました', + 'googleOrderCreateFailed': 'Google注文の作成に失敗しました', + 'paypalOrderCreateFailed': 'PayPal注文の作成に失敗しました', + 'paymentException': '支払い例外', + 'paymentLaunchFailed': '支払いの起動に失敗しました', + 'paymentExceptionWithError': '支払い例外:@error', + 'paymentProcessingCheckLater': 'ご注文は処理中です。後で確認してください。', + 'paymentResultQueryException': '支払い結果の照会に失敗しました:@error', + 'orderConfirmedQuotaRefreshed': '注文が確認されました。クォータが更新されました。', + 'paymentCompletedConfirming': '支払い完了。確認中…', + 'paymentCancelled': '支払いがキャンセルされました', + 'paypalOpenedCompleteInBrowser': 'PayPalが開きました。ブラウザで支払いを完了してください。', + 'paypalOpenFailed': 'PayPal支払いページを開けません', + 'paymentTestTitle': '支払いテスト', + 'paymentTestOrderInfo': 'テスト注文情報', + 'paymentTestProductId': '商品ID', + 'paymentTestProductDescription': '商品説明', + 'paymentTestWechatDescription': 'WeChat Pay支払いテスト', + 'paymentTestAlipayDescription': 'Alipay支払いテスト', + 'paymentTestAmount': '金額', + 'paymentTestSelectAmount': 'テスト金額を選択', + 'paying': '支払い中...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': '支払い状況', + 'errorInfoWithMessage': 'エラー:@message', + 'retest': '再テスト', + 'paymentTestInstructionsTitle': '手順', + 'paymentTestInstructionsContent': '1. テスト金額を選択してください(推奨:¥0.01)\n2. 支払いボタンをクリックして開始\n3. 支払いアプリで支払いを完了\n4. 戻って結果を確認', + 'startingWechatPayment': 'WeChat Payを起動中...', + 'startingAlipayPayment': 'Alipayを起動中...', + 'wechatPaymentSuccess': 'WeChat Pay支払い成功!', + 'wechatPaymentFailed': 'WeChat Pay支払い失敗', + 'wechatPaymentLaunchFailed': 'WeChat Payの起動に失敗しました', + 'cannotLaunchWechatPayment': 'WeChat Payを起動できません', + 'wechatPaymentException': 'WeChat Pay例外', + 'wechatPaymentTestCompleted': 'WeChat Pay支払いテストが完了しました', + 'alipayPaymentSuccess': 'Alipay支払い成功!', + 'alipayPaymentFailed': 'Alipay支払い失敗', + 'alipayPaymentLaunchFailed': 'Alipayの起動に失敗しました', + 'cannotLaunchAlipayPayment': 'Alipayを起動できません', + 'alipayPaymentException': 'Alipay例外', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": + 'Insufficient balance, please go to the corresponding recharge page to recharge.', + "recharge": 'Go to Recharge', + "aiMemberExpiredDesc": + 'AI membership expired, please go to the membership recharge page to renew.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', 'aiHeaderDesc2': @@ -331,7 +323,46 @@ const Map jaJP = { 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Real-time Transcription', + 'sceneLexicon': 'Scenario Glossary', + 'subtitleDisplay': 'Subtitles', + 'transHeaderDesc1': + 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', + 'translateZhEn': 'Chinese-English translation', + 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', + 'multiLangTextTranslation': 'Multilingual text translation', + 'termOptimizationContextPreserve': + 'Terminology optimization and context preservation', + 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', + 'personalVocabularyMemory': 'Personal vocabulary memory', + 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', + 'colorHighContrast': 'High color contrast', + 'transDisclaimer': + 'Translation performance depends on microphone, network latency, and ambient noise.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Meeting Recording', + 'transcriptionAndSummary': 'Transcription & Summary', + 'keywordSearch': 'Keyword Search', + 'collaborationSharing': 'Collaboration & Sharing', + 'meetingHeaderDesc1': + 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'meetingHeaderDesc2': + 'Suitable for business meetings, class notes, and interview minutes.', + 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingSpeakerTagging': 'Speaker labeling', + 'meetingLongAudioTranscription': 'Long audio transcription', + 'meetingKeyPointSummary': 'Key point extraction', + 'meetingTopicNameSearch': 'Search by topic/name', + 'meetingTimelineJump': 'Timeline jump', + 'meetingExportSummary': 'Export minutes', + 'meetingMultiPlatformShare': 'Share across platforms', + 'meetingDisclaimer': + 'Use in quiet environments; performance depends on microphone and network.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', 'higherQuota': 'Higher usage quota', 'lowerUnitPrice': 'Lower unit price', @@ -347,7 +378,32 @@ const Map jaJP = { 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Translation Basic 100', + 'trans_002_name': 'Translation Basic 500', + 'trans_003_name': 'Translation Basic 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': 'Includes 100 translations (voice/text).', + 'trans_002_desc': 'Includes 500 translations (voice/text).', + 'trans_003_desc': 'Includes 1000 translations (voice/text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "スキップ", 'next': 'Next', 'sayLilyHint': "Say \"Lily Lily\" to the mic", @@ -358,7 +414,6 @@ const Map jaJP = { 'guideAwakenSuccess': "Great! Lily is awake—ask it to help.", 'confirmInput': "Confirm Input", 'guideClickSendPrefix': "Tap send, ", - // AI 引导步骤 'guideWeatherStart': "Tell Lily: “What’s the weather today?”", 'guideWeatherInput': "What’s the weather today?", 'guideWeatherSend': "Lily will report the weather in real time", @@ -385,7 +440,7 @@ const Map jaJP = { 'guideSmsSend': "Lily will send the message", 'guideSmsEnd': "Message sent—voice control is convenient", - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "会議を開始", 'edit': '編集', 'delete': '削除', @@ -397,8 +452,6 @@ const Map jaJP = { 'recordingDetails': '録音詳細', 'aiSummary': 'AI要約', 'meetingTranscript': '会議記録', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -453,7 +506,6 @@ const Map jaJP = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -462,6 +514,96 @@ const Map jaJP = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': '作成', + 'templateDetails': 'テンプレートの詳細', + 'tag': 'タグ', + 'description': '説明', + 'template': 'テンプレート', + 'deleteTemplate': 'テンプレートを削除', + 'deleteTemplateConfirm': 'このテンプレートを削除してもよろしいですか?', + 'editTemplate': 'テンプレートを編集', + 'createTemplate': 'テンプレートを作成', + 'name': '名前', + 'templateContentHint': 'テンプレートの内容を入力してください!ヒント:上のAIボタンをクリックすると、入力した名前と説明に基づいてテンプレートの内容をすばやく生成できます', + 'inputNameHint': '名前を入力してください', + 'inputDescHint': '説明を入力してください', + 'custom': 'カスタム', + 'pleaseEnter': '入力してください', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': + 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'マインドマップを保存', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'エクスポート', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'この話者のすべての段落に適用', + 'summaryWillBeUpdatedAutomatically': '要約はテンプレートに基づいて自動的に更新されます', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -480,7 +622,7 @@ const Map jaJP = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -516,8 +658,6 @@ const Map jaJP = { 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -546,104 +686,26 @@ const Map jaJP = { 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'この話者のすべての段落に適用', - 'summaryWillBeUpdatedAutomatically': '要約はテンプレートに基づいて自動的に更新されます', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': '分析に失敗しました。後でもう一度お試しください', + 'transcriptionFailed': '文字起こしに失敗しました。後でもう一度お試しください', + 'summaryFailed': '要約に失敗しました。後でもう一度お試しください', + 'summaryFailedShort': '要約失敗', + 'transcriptionFailedShort': '文字起こし失敗', + + // Meeting模块 - 播放器 + 'playerNotReady': 'オーディオプレーヤーの準備ができていません。お待ちください', + 'playFailed': '再生に失敗しました', + 'audioFileNotFound': '音声ファイルが見つかりません', + 'fetchingAudio': 'クラウドから音声を取得中...', + 'playerLoadFailed': 'オーディオプレーヤーの読み込みに失敗しました', // 设置页 "systemSettings": "システム設定", @@ -693,25 +755,14 @@ const Map jaJP = { "bleHeadsetFirmwareUpgrade": "BLEイヤホンファームウェアアップグレード", "deviceManagement": "デバイス管理", "manageConnectedDevices": "接続されたBluetoothデバイスを管理", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': '現在のバージョンは既に最新です {version}', 'checkUpdateFailed': '更新確認に失敗', 'networkErrorRetry': 'ネットワークエラー、後でもう一度お試しください', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": 'リアルタイム音声会話', "realtimeVoiceChatInfo": 'スマート音声インタラクション機能を体験(プレビュー)', "loading": '読み込み中...', - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -727,8 +778,7 @@ const Map jaJP = { "Are you sure you want to unbind device \"{deviceName}\"?", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "チャット履歴をクリア", "online": "オンライン", @@ -758,8 +808,9 @@ const Map jaJP = { "swipeUpForMore": "上にスワイプしてさらに表示", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': '有効にすると:AIが話している間はあなたの声で中断されず、一度に1つの会話ラウンドのみ処理できます。新しいラウンドを開始するには、ウェイクアップワードを言ってください。', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -771,7 +822,7 @@ const Map jaJP = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'こんにちは!私は**Lily**です。以下のことでお手伝いできます:\n\n' '• 質問への回答と情報提供\n\n' '• リアルタイム音声翻訳\n\n' @@ -787,18 +838,17 @@ const Map jaJP = { 'startVoiceInput': '音声入力を開始', 'startPhoneCallMode': '通話モードを開始、音声入力を開始', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'ここにメッセージを入力してください...', // 全屏编辑器输入提示 'characterCount': '{count}文字', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'コピー', 'copySuccess': 'コピーに成功', 'report': '報告', 'submitSuccess': '送信に成功', 'submitFailed': '送信に失敗', 'reportSubmitted': '報告を送信しました。できるだけ早く処理いたします', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': '有害/危険', 'pornographicVulgar': 'ポルノ/下品', 'misleadingAttack': '誤解を招く/攻撃', @@ -807,17 +857,14 @@ const Map jaJP = { 'copyrightViolation': '私の著作権、人格権などの侵害', 'other': 'その他', 'reportDescriptionHint': '報告の理由を知りたいと思います。遭遇した問題を説明してください。', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'AIによって生成', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'おすすめの音楽をご紹介します:', 'playList': 'プレイリスト', 'moreMusic': 'もっと音楽', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': '時間', // 小时单位 @@ -832,7 +879,7 @@ const Map jaJP = { "bicycling": "自転車", "tsransit": "Transit", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': '天気照会:', 'highest': '最高', 'lowest': '最低', @@ -853,18 +900,8 @@ const Map jaJP = { "friday": "金", "saturday": "土", "sunday": "日", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "晴れ", "partlyCloudy": "一部曇り", "partlySunny": "一部晴れ", @@ -885,7 +922,126 @@ const Map jaJP = { "haze": "かすみ", "strongWind": "強風", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "翻訳履歴", + "enableRecording": "録音を有効にする", + "viewAudioFiles": "音声ファイルを表示", + "headsetUser": "ヘッドセットユーザー", + "phoneUser": "電話ユーザー", + "selectSourceLanguage": "ソース言語を選択", + "selectTargetLanguage": "ターゲット言語を選択", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": + "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "翻訳履歴がありません", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "履歴をクリア", + "clearHistoryConfirm": "すべての翻訳履歴をクリアしてもよろしいですか?この操作は元に戻せません。", + "unknownLanguage": "不明な言語", + "deleteSessionRecord": "セッション記録を削除", + "deleteSessionConfirm": "このセッションのすべての翻訳記録を削除してもよろしいですか?この操作は元に戻せません。", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": + "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": + "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": + "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": + "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "音声ファイルを翻訳", + "noAudioFiles": "音声ファイルがありません", + "calculating": "計算中...", + "playing": "再生中...", + "paused": "一時停止", + "clickToPlay": "クリックして再生", + "rename": "名前を変更", + "smartTranscription": "スマート転写", + "renameAudioFile": "音声ファイル名を変更", + "enterNewFileName": "新しいファイル名を入力してください", + + // 翻译模块 - 翻译详情 + "originalRecord": "元の記録", + "recordSummary": "記録要約", + "clickToGenerateSummary": "下のボタンをクリックしてセッション要約を生成", + "summaryContent": "要約内容", + "copied": "コピーしました", + "summaryCopiledToClipboard": "要約をクリップボードにコピーしました", + "extractSummary": "要約を抽出", + "summaryGenerated": "要約が生成されました", + "generating": "生成中...", + "regenerate": "再生成", + "summaryTimeoutMessage": + "要約生成リクエストがタイムアウトしました。ネットワークの問題またはサーバーの過負荷が原因の可能性があります。", + "deleteTranslationRecord": "翻訳記録を削除", + "deleteTranslationConfirm": "この翻訳記録を削除してもよろしいですか?この操作は元に戻せません。", + "originalText": "元のテキスト", + "translatedText": "翻訳されたテキスト", + "sessionSummary": "セッション要約", + "cannotShare": "共有できません", + "generateSummaryFirst": "まず要約を生成してください", + "translationSessionRecord": "翻訳セッション記録", + + // 个人资料模块 "editProfile": "プロフィール編集", "avatar": "アバター", "nickname": "ニックネーム", @@ -900,8 +1056,6 @@ const Map jaJP = { 'deleteAccountTips': 'アカウントを永続的に削除してもよろしいですか?この操作は元に戻せません。', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'ネットワーク接続に失敗しました。ネットワーク設定を確認して再試行してください', 'serverTemporarilyUnavailable': 'サーバーが一時的に利用できません。後でもう一度お試しください', 'loginExpiredPleaseRelogin': 'ログインが期限切れです。再度ログインしてください', @@ -913,10 +1067,6 @@ const Map jaJP = { 'serverError': 'サーバーエラー', 'networkConnectionFailedCheckSettings': 'ネットワーク接続に失敗しました。ネットワーク設定を確認してください', 'serverInternalErrorRetryLater': 'サーバー内部エラー、後でもう一度お試しください', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': '画像圧縮に失敗', 'avatarUpdateFailed': 'アバター更新に失敗', 'usernameCannotBeEmpty': 'ユーザー名は空にできません', @@ -927,8 +1077,6 @@ const Map jaJP = { 'logoutFailedRetry': 'ログアウトに失敗しました。再試行してください', 'accountPermanentlyDeleted': 'アカウントが永続的に削除されました', 'deleteAccountFailedRetry': 'アカウント削除に失敗しました。再試行してください', - - // 账号服务相关 'clearUserDataFailed': 'ユーザーデータのクリアに失敗', // 清理用户数据失败 'deleteUserDataFailed': 'ユーザーデータの削除に失敗', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'サードパーティログアウトに成功', // 第三方登录退出成功 @@ -939,7 +1087,12 @@ const Map jaJP = { 'allUserDataClearSuccess': 'すべてのユーザーデータのクリアに成功', // 所有用户数据清理成功 'accountServiceInitialized': 'AccountServiceが初期化されました', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': + 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', 'getPermissionStatusFailed': '権限状態の取得に失敗', 'communicationPermissions': '通信権限', 'bluetoothPermissions': 'Bluetooth Permissions', @@ -952,7 +1105,6 @@ const Map jaJP = { 'phone': '電話', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'カレンダー書き込み', @@ -999,8 +1151,6 @@ const Map jaJP = { 'appNeedsPermissionForFullFunction': 'アプリは完全な機能のためにこの権限が必要です', 'permanentDenialText': '{permission}権限を永続的に拒否されました。アプリ設定で有効にしてください', 'goToSettings': '設定に移動', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': @@ -1025,7 +1175,6 @@ const Map jaJP = { 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', @@ -1035,6 +1184,12 @@ const Map jaJP = { 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', 'storagePermissionPermanentDenial': 'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', + 'permissionUtilNeed': 'Need ', + 'permissionUtilPermission': ' Permission', + 'permissionUtilRestricted': ' Permission Restricted', + 'permissionUtilRestrictedMessage': + 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'permissionUtilConfirm': 'OK', // 原生前台服务通知(Android) 'native.notification.appName': 'VOITRANS', // VOITRANS @@ -1051,15 +1206,7 @@ const Map jaJP = { 'native.notification.music.pause': '一時停止', // 暂停 'native.notification.qqMusic.playing': '音楽を再生中', // 正在播放音乐 - //permission_util.dart - 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', - 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', - 'permissionUtilConfirm': 'OK', - - // 版本更新对话框 + // 版本更新 'newVersionFound': '新しいバージョンが見つかりました', // 版本更新对话框标题 'remindLater': '後で通知', // 稍后提醒按钮 'updateNow': '今すぐ更新', // 立即更新按钮 @@ -1068,249 +1215,7 @@ const Map jaJP = { 'cannotOpenAppStore': 'App Storeを開けません。手動で更新してください', // 无法打开应用商店提示 'updateErrorRetry': '更新プロセスでエラーが発生しました。後でもう一度お試しください', // 更新错误重试提示 - //国家列表 - "邮箱": "メールアドレス", - "中国": "中国", - "美国": "アメリカ", - "加拿大": "カナダ", - "俄罗斯": "ロシア", - "英国": "イギリス", - "德国": "ドイツ", - "意大利": "イタリア", - "法国": "フランス", - "西班牙": "スペイン", - "南非": "南アフリカ", - "沙特阿拉伯": "サウジアラビア", - "土耳其": "トルコ", - "日本": "日本", - "韩国": "韓国", - "新加坡": "シンガポール", - "马来西亚": "マレーシア", - "泰国": "タイ", - "越南": "ベトナム", - "印度": "インド", - "巴基斯坦": "パキスタン", - "菲律宾": "フィリピン", - "印度尼西亚": "インドネシア", - "阿联酋": "アラブ首長国連邦", - "墨西哥": "メキシコ", - "巴西": "ブラジル", - "阿根廷": "アルゼンチン", - "澳大利亚": "オーストラリア", - "新西兰": "ニュージーランド", - "中国香港": "香港、中国", - "中国澳门": "マカオ、中国", - "中国台湾": "台湾、中国", - "埃及": "エジプト", - "希腊": "ギリシャ", - "荷兰": "オランダ", - "比利时": "ベルギー", - "匈牙利": "ハンガリー", - "罗马尼亚": "ルーマニア", - "瑞士": "スイス", - "奥地利": "オーストリア", - "丹麦": "デンマーク", - "瑞典": "スウェーデン", - "挪威": "ノルウェー", - "波兰": "ポーランド", - "秘鲁": "ペルー", - "智利": "チリ", - "哥伦比亚": "コロンビア", - "委内瑞拉": "ベネズエラ", - "葡萄牙": "ポルトガル", - "卢森堡": "ルクセンブルク", - "爱尔兰": "アイルランド", - "冰岛": "アイスランド", - "阿尔巴尼亚": "アルバニア", - "马耳他": "マルタ", - "塞浦路斯": "キプロス", - "芬兰": "フィンランド", - "保加利亚": "ブルガリア", - "立陶宛": "リトアニア", - "拉脱维亚": "ラトビア", - "爱沙尼亚": "エストニア", - "乌克兰": "ウクライナ", - "塞尔维亚": "セルビア", - "克罗地亚": "クロアチア", - "斯洛文尼亚": "スロベニア", - "捷克": "チェコ共和国", - "斯洛伐克": "スロバキア", - "危地马拉": "グアテマラ", - "萨尔瓦多": "エルサルバドル", - "洪都拉斯": "ホンジュラス", - "尼加拉瓜": "ニカラグア", - "哥斯达黎加": "コスタリカ", - "巴拿马": "パナマ", - "海地": "ハイチ", - "玻利维亚": "ボリビア", - "厄瓜多尔": "エクアドル", - "巴拉圭": "パラグアイ", - "乌拉圭": "ウルグアイ", - "摩洛哥": "モロッコ", - "阿尔及利亚": "アルジェリア", - "突尼斯": "チュニジア", - "尼日利亚": "ナイジェリア", - "加纳": "ガーナ", - "埃塞俄比亚": "エチオピア", - "肯尼亚": "ケニア", - "坦桑尼亚": "タンザニア", - "乌干达": "ウガンダ", - "孟加拉国": "バングラデシュ", - "以色列": "イスラエル", - "黎巴嫩": "レバノン", - "约旦": "ヨルダン", - "伊拉克": "イラク", - "科威特": "クウェート", - "巴林": "バーレーン", - "卡塔尔": "カタール", - "阿曼": "オマーン", - "阿富汗": "アフガニスタン", - "斯里兰卡": "スリランカ", - "缅甸": "ミャンマー", - "尼泊尔": "ネパール", - "蒙古": "モンゴル", - "柬埔寨": "カンボジア", - "老挝": "ラオス", - "文莱": "ブルネイ", - "东帝汶": "東ティモール", - "斐济": "フィジー", - "所罗门群岛": "ソロモン諸島", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "翻訳履歴", - "enableRecording": "録音を有効にする", - "viewAudioFiles": "音声ファイルを表示", - "headsetUser": "ヘッドセットユーザー", - "phoneUser": "電話ユーザー", - "selectSourceLanguage": "ソース言語を選択", - "selectTargetLanguage": "ターゲット言語を選択", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "翻訳履歴がありません", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "履歴をクリア", - "clearHistoryConfirm": "すべての翻訳履歴をクリアしてもよろしいですか?この操作は元に戻せません。", - "unknownLanguage": "不明な言語", - "deleteSessionRecord": "セッション記録を削除", - "deleteSessionConfirm": "このセッションのすべての翻訳記録を削除してもよろしいですか?この操作は元に戻せません。", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "音声ファイルを翻訳", - "noAudioFiles": "音声ファイルがありません", - "calculating": "計算中...", - "playing": "再生中...", - "paused": "一時停止", - "clickToPlay": "クリックして再生", - "rename": "名前を変更", - "smartTranscription": "スマート転写", - "renameAudioFile": "音声ファイル名を変更", - "enterNewFileName": "新しいファイル名を入力してください", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "元の記録", - "recordSummary": "記録要約", - "clickToGenerateSummary": "下のボタンをクリックしてセッション要約を生成", - "summaryContent": "要約内容", - "copied": "コピーしました", - "summaryCopiledToClipboard": "要約をクリップボードにコピーしました", - "extractSummary": "要約を抽出", - "summaryGenerated": "要約が生成されました", - "generating": "生成中...", - "regenerate": "再生成", - "summaryTimeoutMessage": - "要約生成リクエストがタイムアウトしました。ネットワークの問題またはサーバーの過負荷が原因の可能性があります。", - "deleteTranslationRecord": "翻訳記録を削除", - "deleteTranslationConfirm": "この翻訳記録を削除してもよろしいですか?この操作は元に戻せません。", - "originalText": "元のテキスト", - "translatedText": "翻訳されたテキスト", - "sessionSummary": "セッション要約", - "cannotShare": "共有できません", - "generateSummaryFirst": "まず要約を生成してください", - "translationSessionRecord": "翻訳セッション記録", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "デバイスペアリング", "connectYourDeepSoundHeadset": "DeepSoundヘッドセットを接続", "bind": "バインド", @@ -1319,14 +1224,11 @@ const Map jaJP = { "autoInputCode": "コードを自動入力", "skipBinding": "バインドをスキップ", "rescan": "再スキャン", - "verifyingDevice": "デバイスを確認中...", "confirmBinding": "バインドを確認", "associatingDevice": "デバイスを関連付け中...", "goToBluetoothSettings": "Bluetooth設定に移動", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "ペアリング準備完了", "preparingPairingEnvironment": "ペアリング環境を準備中...", "connectDeepSoundViaSystemBluetooth": @@ -1335,8 +1237,6 @@ const Map jaJP = { "establishingDeviceAssociation": "デバイス関連付けを確立中...", "waitingCompletePairing": "お待ちください、ペアリングを完了中...", "pairingSuccessRedirecting": "ペアリング成功!ホームページにリダイレクト中...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "接続されたデバイスがDeepSoundであることを確認してください", "deviceAlreadyBoundToOtherAccount": "このデバイスは既に他のアカウントにバインドされています", "deviceAssociationFailed": "デバイス関連付けに失敗しました。再試行してください", @@ -1344,18 +1244,11 @@ const Map jaJP = { "networkError": "ネットワークエラー", "authorizationFailedCheckCode": "承認に失敗しました。承認コードを確認してください", "pairingFailedRetry": "ペアリングに失敗しました。再試行してください", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Bluetoothを有効にしてください', 'deviceDisconnected': 'デバイスが切断されました', 'readyToStartPairing': 'ペアリング開始準備完了', 'checkingEnvironment': '環境を確認中...', 'ensureHeadsetOnAndPairingMode': 'ヘッドセットがオンでペアリングモードであることを確認してください', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'セキュア接続を確立中...', 'needManualBindingAuthCode': '手動バインド承認コードが必要...', 'pairingSuccessful': 'ペアリング成功!', @@ -1374,8 +1267,6 @@ const Map jaJP = { 'blePairingStartupFailed': 'BLEペアリング開始に失敗', 'bleConnectionFailed': 'BLE接続に失敗', 'deviceAuthorizationFailedCheckCode': 'デバイス承認に失敗しました。承認コードを確認してください', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1388,7 +1279,18 @@ const Map jaJP = { 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "フィードバック", 'feedbackInfo': 'フィードバックや提案を提供', 'feedbackDescription': '問題や提案を説明してください', @@ -1426,7 +1328,7 @@ const Map jaJP = { "updateContent": "更新内容", "removeEarbudsEnsureBattery": "両方のイヤホンを取り出し、バッテリーレベルが20%以上であることを確認してください", - // 音乐列表页面 + // 音乐模块 "noMusic": "音楽がありません", // 暂无音乐 "noPlayingMusic": "再生中の音楽がありません", // 暂无播放音乐 "unknownSong": "不明な曲", // 未知歌曲 @@ -1474,22 +1376,122 @@ const Map jaJP = { "波斯语": "ペルシャ語", "斯瓦希里语": "スワヒリ語", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "メールアドレス", + "中国": "中国", + "美国": "アメリカ", + "加拿大": "カナダ", + "俄罗斯": "ロシア", + "英国": "イギリス", + "德国": "ドイツ", + "意大利": "イタリア", + "法国": "フランス", + "西班牙": "スペイン", + "南非": "南アフリカ", + "沙特阿拉伯": "サウジアラビア", + "土耳其": "トルコ", + "日本": "日本", + "韩国": "韓国", + "新加坡": "シンガポール", + "马来西亚": "マレーシア", + "泰国": "タイ", + "越南": "ベトナム", + "印度": "インド", + "巴基斯坦": "パキスタン", + "菲律宾": "フィリピン", + "印度尼西亚": "インドネシア", + "阿联酋": "アラブ首長国連邦", + "墨西哥": "メキシコ", + "巴西": "ブラジル", + "阿根廷": "アルゼンチン", + "澳大利亚": "オーストラリア", + "新西兰": "ニュージーランド", + "中国香港": "香港、中国", + "中国澳门": "マカオ、中国", + "中国台湾": "台湾、中国", + "埃及": "エジプト", + "希腊": "ギリシャ", + "荷兰": "オランダ", + "比利时": "ベルギー", + "匈牙利": "ハンガリー", + "罗马尼亚": "ルーマニア", + "瑞士": "スイス", + "奥地利": "オーストリア", + "丹麦": "デンマーク", + "瑞典": "スウェーデン", + "挪威": "ノルウェー", + "波兰": "ポーランド", + "秘鲁": "ペルー", + "智利": "チリ", + "哥伦比亚": "コロンビア", + "委内瑞拉": "ベネズエラ", + "葡萄牙": "ポルトガル", + "卢森堡": "ルクセンブルク", + "爱尔兰": "アイルランド", + "冰岛": "アイスランド", + "阿尔巴尼亚": "アルバニア", + "马耳他": "マルタ", + "塞浦路斯": "キプロス", + "芬兰": "フィンランド", + "保加利亚": "ブルガリア", + "立陶宛": "リトアニア", + "拉脱维亚": "ラトビア", + "爱沙尼亚": "エストニア", + "乌克兰": "ウクライナ", + "塞尔维亚": "セルビア", + "克罗地亚": "クロアチア", + "斯洛文尼亚": "スロベニア", + "捷克": "チェコ共和国", + "斯洛伐克": "スロバキア", + "危地马拉": "グアテマラ", + "萨尔瓦多": "エルサルバドル", + "洪都拉斯": "ホンジュラス", + "尼加拉瓜": "ニカラグア", + "哥斯达黎加": "コスタリカ", + "巴拿马": "パナマ", + "海地": "ハイチ", + "玻利维亚": "ボリビア", + "厄瓜多尔": "エクアドル", + "巴拉圭": "パラグアイ", + "乌拉圭": "ウルグアイ", + "摩洛哥": "モロッコ", + "阿尔及利亚": "アルジェリア", + "突尼斯": "チュニジア", + "尼日利亚": "ナイジェリア", + "加纳": "ガーナ", + "埃塞俄比亚": "エチオピア", + "肯尼亚": "ケニア", + "坦桑尼亚": "タンザニア", + "乌干达": "ウガンダ", + "孟加拉国": "バングラデシュ", + "以色列": "イスラエル", + "黎巴嫩": "レバノン", + "约旦": "ヨルダン", + "伊拉克": "イラク", + "科威特": "クウェート", + "巴林": "バーレーン", + "卡塔尔": "カタール", + "阿曼": "オマーン", + "阿富汗": "アフガニスタン", + "斯里兰卡": "スリランカ", + "缅甸": "ミャンマー", + "尼泊尔": "ネパール", + "蒙古": "モンゴル", + "柬埔寨": "カンボジア", + "老挝": "ラオス", + "文莱": "ブルネイ", + "东帝汶": "東ティモール", + "斐济": "フィジー", + "所罗门群岛": "ソロモン諸島", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/ko_kr.dart b/lib/core/translations/language/ko_kr.dart index 68aac84bb..d22ad1e84 100644 --- a/lib/core/translations/language/ko_kr.dart +++ b/lib/core/translations/language/ko_kr.dart @@ -1,4 +1,5 @@ const Map koKR = { + // 通用 'continue': '계속', 'confirm': '확인', @@ -18,6 +19,11 @@ const Map koKR = { "unknownError": "알 수 없는 오류", "asrConnectionFailed": "음성 인식 서비스 연결에 실패했습니다. 네트워크를 확인한 후 다시 시도해 주세요.", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "세상을 연결하다, 소리를 넘어서", @@ -28,7 +34,7 @@ const Map koKR = { "explore": "탐색", "settings": "설정", - // 语言 + // 语言列表 "followingSystem": "시스템 설정 따르기", "chinese": "중국어", "english": "영어", @@ -72,7 +78,7 @@ const Map koKR = { "arabic": "아랍어", "persian": "페르시아어", - // 登录页 + // 登录模块 "welcome": "환영합니다", "loginTips": "휴대폰 번호 또는 이메일로 로그인/가입하세요", "accountNumber": "휴대폰 번호 또는 이메일", @@ -99,12 +105,8 @@ const Map koKR = { "resendVerificationCode": "인증 코드 다시 보내기", "login": "로그인", "usePasswordLogin": "비밀번호로 로그인", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans 선언", // Voitrans 声明 "welcomeToThisApp": "Voitrans에 오신 것을 환영합니다. 충분히 읽어주십시오", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", '동의하고 시작하기'를 클릭하면 위 약관을 충분히 읽고 동의한 것으로 간주됩니다. '동의하지 않음'을 클릭하면 앱이 종료됩니다.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "동의하지 않음", // 不同意 @@ -159,7 +161,7 @@ const Map koKR = { 'right': '오른쪽', 'checkConnectionStatusFailed': '연결 상태 확인 실패', -// 发现页 + // 发现页 "searchAi": "AI 기능 검색...", "exploreSlogan": "스마트 이어폰, 무한한 가능성", "exploreSlogan1": "스마트 동반자, 무한한 가능성", @@ -182,6 +184,7 @@ const Map koKR = { "usageStats": "사용 통계", "usageStatsInfo": "사용 통계를 확인하세요", "scene": "상황", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", @@ -202,7 +205,6 @@ const Map koKR = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -219,7 +221,6 @@ const Map koKR = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - // 通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", @@ -228,85 +229,79 @@ const Map koKR = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', 'remaining': 'Remaining', 'featureDescription': 'Feature Description', - // AI 功能卡片 + 'paymentSuccess': '결제 성공', + 'paymentFailed': '결제 실패', + 'gotIt': '확인', + 'paymentFailedTryAgain': '결제에 실패했습니다. 다시 시도해 주세요.', + 'selectPaymentMethod': '결제 수단 선택', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'WeChat Pay 주문 생성에 실패했습니다', + 'alipayOrderCreateFailed': 'Alipay 주문 생성에 실패했습니다', + 'appleOrderCreateFailed': 'Apple 주문 생성에 실패했습니다', + 'googleOrderCreateFailed': 'Google 주문 생성에 실패했습니다', + 'paypalOrderCreateFailed': 'PayPal 주문 생성에 실패했습니다', + 'paymentException': '결제 예외', + 'paymentLaunchFailed': '결제 실행에 실패했습니다', + 'paymentExceptionWithError': '결제 예외: @error', + 'paymentProcessingCheckLater': '주문이 처리 중입니다. 나중에 확인해 주세요.', + 'paymentResultQueryException': '결제 결과 조회에 실패했습니다: @error', + 'orderConfirmedQuotaRefreshed': '주문이 확인되었습니다. 할당량이 갱신되었습니다.', + 'paymentCompletedConfirming': '결제 완료. 확인 중…', + 'paymentCancelled': '결제가 취소되었습니다', + 'paypalOpenedCompleteInBrowser': 'PayPal이 열렸습니다. 브라우저에서 결제를 완료해 주세요.', + 'paypalOpenFailed': 'PayPal 결제 페이지를 열 수 없습니다', + 'paymentTestTitle': '결제 테스트', + 'paymentTestOrderInfo': '테스트 주문 정보', + 'paymentTestProductId': '상품 ID', + 'paymentTestProductDescription': '상품 설명', + 'paymentTestWechatDescription': 'WeChat Pay 결제 테스트', + 'paymentTestAlipayDescription': 'Alipay 결제 테스트', + 'paymentTestAmount': '금액', + 'paymentTestSelectAmount': '테스트 금액 선택', + 'paying': '결제 중...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': '결제 상태', + 'errorInfoWithMessage': '오류: @message', + 'retest': '다시 테스트', + 'paymentTestInstructionsTitle': '안내', + 'paymentTestInstructionsContent': '1. 테스트 금액을 선택하세요 (권장: ¥0.01)\n2. 결제 버튼을 클릭하여 시작\n3. 결제 앱에서 결제를 완료\n4. 돌아와서 결과를 확인', + 'startingWechatPayment': 'WeChat Pay 시작 중...', + 'startingAlipayPayment': 'Alipay 시작 중...', + 'wechatPaymentSuccess': 'WeChat Pay 결제 성공!', + 'wechatPaymentFailed': 'WeChat Pay 결제 실패', + 'wechatPaymentLaunchFailed': 'WeChat Pay 실행에 실패했습니다', + 'cannotLaunchWechatPayment': 'WeChat Pay를 실행할 수 없습니다', + 'wechatPaymentException': 'WeChat Pay 예외', + 'wechatPaymentTestCompleted': 'WeChat Pay 결제 테스트 완료', + 'alipayPaymentSuccess': 'Alipay 결제 성공!', + 'alipayPaymentFailed': 'Alipay 결제 실패', + 'alipayPaymentLaunchFailed': 'Alipay 실행에 실패했습니다', + 'cannotLaunchAlipayPayment': 'Alipay를 실행할 수 없습니다', + 'alipayPaymentException': 'Alipay 예외', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": + 'Insufficient balance, please go to the corresponding recharge page to recharge.', + "recharge": 'Go to Recharge', + "aiMemberExpiredDesc": + 'AI membership expired, please go to the membership recharge page to renew.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': '번역 기본 100', - 'trans_002_name': '번역 기본 500', - 'trans_003_name': '번역 기본 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': '번역 100회 포함(음성/텍스트).', - 'trans_002_desc': '번역 500회 포함(음성/텍스트).', - 'trans_003_desc': '번역 1000회 포함(음성/텍스트).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': '실시간 동시통역과 텍스트 번역, 저지연 음성 방송.', - 'transHeaderDesc2': '여행, 비즈니스, 연설, 교육에 적합합니다.', - 'translateZhEn': '중-영 번역', - 'lowLatencyVoiceBroadcast': '저지연 음성 방송', - 'multiLangTextTranslation': '다국어 텍스트 번역', - 'termOptimizationContextPreserve': '용어 최적화 및 문맥 유지', - 'lexiconTourBusinessLife': '여행/비즈니스/일상 용어집', - 'personalVocabularyMemory': '개인 어휘 메모리', - 'conversationSubtitleLargeText': '대화 자막 / 큰 글자 모드', - 'colorHighContrast': '높은 색 대비', - 'transDisclaimer': '번역 품질은 마이크, 네트워크 지연 및 주변 소음에 따라 달라집니다.', - - // AI 商品页描述 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', 'aiHeaderDesc2': @@ -329,7 +324,43 @@ const Map koKR = { 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Real-time Transcription', + 'sceneLexicon': 'Scenario Glossary', + 'subtitleDisplay': 'Subtitles', + 'transHeaderDesc1': '실시간 동시통역과 텍스트 번역, 저지연 음성 방송.', + 'transHeaderDesc2': '여행, 비즈니스, 연설, 교육에 적합합니다.', + 'translateZhEn': '중-영 번역', + 'lowLatencyVoiceBroadcast': '저지연 음성 방송', + 'multiLangTextTranslation': '다국어 텍스트 번역', + 'termOptimizationContextPreserve': '용어 최적화 및 문맥 유지', + 'lexiconTourBusinessLife': '여행/비즈니스/일상 용어집', + 'personalVocabularyMemory': '개인 어휘 메모리', + 'conversationSubtitleLargeText': '대화 자막 / 큰 글자 모드', + 'colorHighContrast': '높은 색 대비', + 'transDisclaimer': '번역 품질은 마이크, 네트워크 지연 및 주변 소음에 따라 달라집니다.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Meeting Recording', + 'transcriptionAndSummary': 'Transcription & Summary', + 'keywordSearch': 'Keyword Search', + 'collaborationSharing': 'Collaboration & Sharing', + 'meetingHeaderDesc1': + 'Audio recording, transcription, keyword search, and auto summary.', + 'meetingHeaderDesc2': + 'Suitable for business meetings, class notes, and interview minutes.', + 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingSpeakerTagging': 'Speaker labeling', + 'meetingLongAudioTranscription': 'Long audio transcription', + 'meetingKeyPointSummary': 'Key point extraction', + 'meetingTopicNameSearch': 'Search by topic/name', + 'meetingTimelineJump': 'Timeline jump', + 'meetingExportSummary': 'Export minutes', + 'meetingMultiPlatformShare': 'Share across platforms', + 'meetingDisclaimer': + 'Use in quiet environments; performance depends on microphone and network.', + + // 商品模块 - VIP会员页 'benefitsOverview': '혜택 개요', 'higherQuota': '더 높은 사용 한도', 'lowerUnitPrice': '더 낮은 단가', @@ -344,7 +375,32 @@ const Map koKR = { 'crossDeviceSync': '디바이스 간 동기화', 'vipDisclaimer': '실제 혜택은 패키지 세부사항에 따라 달라지며 버전에 따라 변경될 수 있습니다.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': '번역 기본 100', + 'trans_002_name': '번역 기본 500', + 'trans_003_name': '번역 기본 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': '번역 100회 포함(음성/텍스트).', + 'trans_002_desc': '번역 500회 포함(음성/텍스트).', + 'trans_003_desc': '번역 1000회 포함(음성/텍스트).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "건너뛰기", 'next': 'Next', 'sayLilyHint': "Say \"Lily Lily\" to the mic", @@ -355,7 +411,6 @@ const Map koKR = { 'guideAwakenSuccess': "Great! Lily is awake—ask it to help.", 'confirmInput': "Confirm Input", 'guideClickSendPrefix': "Tap send, ", - // AI 引导步骤 'guideWeatherStart': "Tell Lily: “What’s the weather today?”", 'guideWeatherInput': "What’s the weather today?", 'guideWeatherSend': "Lily will report the weather in real time", @@ -382,7 +437,7 @@ const Map koKR = { 'guideSmsSend': "Lily will send the message", 'guideSmsEnd': "Message sent—voice control is convenient", - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "회의 시작", 'edit': '수정', 'delete': '삭제', @@ -394,8 +449,6 @@ const Map koKR = { 'recordingDetails': '녹음 상세 정보', 'aiSummary': 'AI 요약', 'meetingTranscript': '회의 원문', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -446,7 +499,6 @@ const Map koKR = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -455,6 +507,96 @@ const Map koKR = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': '생성', + 'templateDetails': '템플릿 상세', + 'tag': '태그', + 'description': '설명', + 'template': '템플릿', + 'deleteTemplate': '템플릿 삭제', + 'deleteTemplateConfirm': '이 템플릿을 삭제하시겠습니까?', + 'editTemplate': '템플릿 편집', + 'createTemplate': '템플릿 생성', + 'name': '이름', + 'templateContentHint': '템플릿 내용을 입력해 주세요! 팁: 위의 AI 버튼을 클릭하면 입력한 이름과 설명을 기반으로 템플릿 내용을 빠르게 생성할 수 있습니다', + 'inputNameHint': '이름을 입력해 주세요', + 'inputDescHint': '설명을 입력해 주세요', + 'custom': '사용자 정의', + 'pleaseEnter': '입력해 주세요', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': + 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': '마인드맵 저장', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': '내보내기', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': '이 발언자의 모든 문단에 적용', + 'summaryWillBeUpdatedAutomatically': '요약은 템플릿에 따라 자동으로 업데이트됩니다', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -473,7 +615,7 @@ const Map koKR = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -509,8 +651,6 @@ const Map koKR = { 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -539,104 +679,26 @@ const Map koKR = { 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': '이 발언자의 모든 문단에 적용', - 'summaryWillBeUpdatedAutomatically': '요약은 템플릿에 따라 자동으로 업데이트됩니다', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': '분석에 실패했습니다. 나중에 다시 시도해 주세요', + 'transcriptionFailed': '전사에 실패했습니다. 나중에 다시 시도해 주세요', + 'summaryFailed': '요약에 실패했습니다. 나중에 다시 시도해 주세요', + 'summaryFailedShort': '요약 실패', + 'transcriptionFailedShort': '전사 실패', + + // Meeting模块 - 播放器 + 'playerNotReady': '오디오 플레이어가 준비되지 않았습니다. 잠시 기다려 주세요', + 'playFailed': '재생 실패', + 'audioFileNotFound': '오디오 파일을 찾을 수 없습니다', + 'fetchingAudio': '클라우드에서 오디오를 가져오는 중...', + 'playerLoadFailed': '오디오 플레이어를 로드하지 못했습니다', // 设置页 "systemSettings": "시스템 설정", @@ -686,25 +748,14 @@ const Map koKR = { "bleHeadsetFirmwareUpgrade": "BLE 헤드셋 펌웨어 버전 업그레이드", "deviceManagement": "기기 관리", "manageConnectedDevices": "연결된 블루투스 기기 관리", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': '현재 최신 버전입니다 {version}', 'checkUpdateFailed': '업데이트 확인 실패', 'networkErrorRetry': '네트워크 오류, 잠시 후 다시 시도하세요', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "실시간 음성 대화", "realtimeVoiceChatInfo": "지능형 음성 상호작용 기능 체험 (기능 미리보기)", "loading": "로딩 중...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -720,8 +771,7 @@ const Map koKR = { "Are you sure you want to unbind device \"{deviceName}\"?", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "채팅 기록 지우기", "online": "온라인", @@ -751,8 +801,9 @@ const Map koKR = { "swipeUpForMore": "더 보려면 위로 스와이프하세요", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': '활성화 시: AI가 말하는 동안 사용자의 음성으로 중단되지 않으며, 한 번에 하나의 대화 라운드만 처리할 수 있습니다. 새 라운드를 시작하려면 웨이크업 워드를 말하세요.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -764,7 +815,7 @@ const Map koKR = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': '안녕하세요! 저는 **샤오옌**입니다. 다음과 같은 도움을 드릴 수 있습니다:\n\n' '• 질문에 답하고 정보 제공\n\n' '• 실시간 음성 번역\n\n' @@ -780,18 +831,17 @@ const Map koKR = { 'startVoiceInput': '음성 입력 시작', 'startPhoneCallMode': '전화 걸기 모드 시작, 음성 입력 시작', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': '여기에 메시지를 입력하세요...', // 全屏编辑器输入提示 'characterCount': '{count}자', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': '복사', 'copySuccess': '복사 성공', 'report': '신고', 'submitSuccess': '제출 성공', 'submitFailed': '제출 실패', 'reportSubmitted': '신고가 제출되었습니다. 최대한 빨리 처리하겠습니다.', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': '유해/안전하지 않음', 'pornographicVulgar': '음란/저속함', 'misleadingAttack': '오해의 소지가 있는 공격', @@ -800,17 +850,14 @@ const Map koKR = { 'copyrightViolation': '내 저작권, 명예 등을 침해', 'other': '기타', 'reportDescriptionHint': '신고 사유를 알고 싶습니다. 겪으신 문제를 설명해주세요.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'AI가 생성함', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': '추천 음악입니다:', 'playList': '재생 목록', 'moreMusic': '더 많은 음악', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': '시간', // 小时单位 @@ -825,7 +872,7 @@ const Map koKR = { "bicycling": "자전거", "tsransit": "대중교통", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': '날씨 정보 조회 중:', 'highest': '최고', 'lowest': '최저', @@ -846,18 +893,8 @@ const Map koKR = { "friday": "금", "saturday": "토", "sunday": "일", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "맑음", "partlyCloudy": "구름 조금", "partlySunny": "대체로 맑음", @@ -878,7 +915,125 @@ const Map koKR = { "haze": "연무", "strongWind": "강풍", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "번역 기록", + "enableRecording": "녹음 활성화", + "viewAudioFiles": "녹음 파일 보기", + "headsetUser": "헤드셋 사용자", + "phoneUser": "휴대폰 사용자", + "selectSourceLanguage": "원본 언어 선택", + "selectTargetLanguage": "대상 언어 선택", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": + "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "기록 없음", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "기록 지우기", + "clearHistoryConfirm": "모든 번역 기록을 지우시겠습니까? 이 작업은 되돌릴 수 없습니다.", + "unknownLanguage": "알 수 없는 언어", + "deleteSessionRecord": "세션 기록 삭제", + "deleteSessionConfirm": "이 세션의 모든 번역 기록을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": + "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": + "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": + "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": + "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "녹음 파일 번역", + "noAudioFiles": "오디오 파일 없음", + "calculating": "계산 중...", + "playing": "재생 중...", + "paused": "일시 중지됨", + "clickToPlay": "클릭하여 재생", + "rename": "이름 바꾸기", + "smartTranscription": "스마트 받아쓰기", + "renameAudioFile": "오디오 파일 이름 바꾸기", + "enterNewFileName": "새 파일 이름을 입력하세요", + + // 翻译模块 - 翻译详情 + "originalRecord": "원본 기록", + "recordSummary": "기록 요약", + "clickToGenerateSummary": "아래 버튼을 클릭하여 세션 요약 생성", + "summaryContent": "요약 내용", + "copied": "복사됨", + "summaryCopiledToClipboard": "요약이 클립보드에 복사되었습니다", + "extractSummary": "요약 추출", + "summaryGenerated": "요약 생성됨", + "generating": "생성 중...", + "regenerate": "다시 생성", + "summaryTimeoutMessage": "요약 생성 요청 시간 초과, 네트워크 문제 또는 서버 과부하일 수 있습니다.", + "deleteTranslationRecord": "번역 기록 삭제", + "deleteTranslationConfirm": "이 번역 기록을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", + "originalText": "원본 텍스트", + "translatedText": "번역된 텍스트", + "sessionSummary": "세션 요약", + "cannotShare": "공유할 수 없음", + "generateSummaryFirst": "먼저 요약을 생성하세요", + "translationSessionRecord": "번역 세션 기록", + + // 个人资料模块 "editProfile": "개인 정보 수정", "avatar": "아바타", "nickname": "닉네임", @@ -893,8 +1048,6 @@ const Map koKR = { 'deleteAccountTips': '계정을 영구적으로 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': '네트워크 연결 실패, 네트워크 설정을 확인하고 다시 시도하세요', 'serverTemporarilyUnavailable': '서버가 일시적으로 응답하지 않습니다. 잠시 후 다시 시도하세요', 'loginExpiredPleaseRelogin': '로그인이 만료되었습니다. 다시 로그인하세요', @@ -906,10 +1059,6 @@ const Map koKR = { 'serverError': '서버 오류', 'networkConnectionFailedCheckSettings': '네트워크 연결 실패, 네트워크 설정을 확인하세요', 'serverInternalErrorRetryLater': '서버 내부 오류, 잠시 후 다시 시도하세요', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': '이미지 압축 실패', 'avatarUpdateFailed': '아바타 업데이트 실패', 'usernameCannotBeEmpty': '사용자 이름은 비워둘 수 없습니다', @@ -920,8 +1069,6 @@ const Map koKR = { 'logoutFailedRetry': '로그아웃 실패, 다시 시도하세요', 'accountPermanentlyDeleted': '계정이 영구적으로 삭제되었습니다', 'deleteAccountFailedRetry': '계정 삭제 실패, 다시 시도하세요', - - // 账号服务相关 'clearUserDataFailed': '사용자 데이터 지우기 실패', // 清理用户数据失败 'deleteUserDataFailed': '사용자 데이터 삭제 실패', // 删除用户数据失败 'thirdPartyLogoutSuccess': '타사 로그인 로그아웃 성공', // 第三方登录退出成功 @@ -932,7 +1079,12 @@ const Map koKR = { 'allUserDataClearSuccess': '모든 사용자 데이터 지우기 성공', // 所有用户数据清理成功 'accountServiceInitialized': '계정 서비스가 초기화되었습니다', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': + 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', 'getPermissionStatusFailed': '권한 상태 가져오기 실패', 'communicationPermissions': '통신 권한', 'bluetoothPermissions': 'Bluetooth Permissions', @@ -945,7 +1097,6 @@ const Map koKR = { 'phone': '전화', 'sms': '문자', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': '캘린더 쓰기', @@ -992,8 +1143,6 @@ const Map koKR = { 'appNeedsPermissionForFullFunction': '앱이 전체 기능을 제공하려면 이 권한이 필요합니다', 'permanentDenialText': '{permission} 권한을 영구적으로 거부하셨습니다. 앱 설정에서 활성화해주세요', 'goToSettings': '설정으로 이동', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': @@ -1018,7 +1167,6 @@ const Map koKR = { 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', @@ -1028,6 +1176,12 @@ const Map koKR = { 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', 'storagePermissionPermanentDenial': 'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', + 'permissionUtilNeed': 'Need ', + 'permissionUtilPermission': ' Permission', + 'permissionUtilRestricted': ' Permission Restricted', + 'permissionUtilRestrictedMessage': + 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'permissionUtilConfirm': 'OK', // 原生前台服务通知(Android) 'native.notification.appName': 'VOITRANS', // VOITRANS @@ -1044,15 +1198,7 @@ const Map koKR = { 'native.notification.music.pause': '일시정지', // 暂停 'native.notification.qqMusic.playing': '음악 재생 중', // 正在播放音乐 - //permission_util.dart - 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', - 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', - 'permissionUtilConfirm': 'OK', - - // 版本更新对话框 + // 版本更新 'newVersionFound': '새 버전 발견', // 版本更新对话框标题 'remindLater': '나중에 알림', // 稍后提醒按钮 'updateNow': '지금 업데이트', // 立即更新按钮 @@ -1062,248 +1208,7 @@ const Map koKR = { '앱 스토어를 열 수 없습니다. 수동으로 앱 스토어로 이동하여 업데이트하세요', // 无法打开应用商店提示 'updateErrorRetry': '업데이트 중 오류가 발생했습니다. 잠시 후 다시 시도하세요', // 更新错误重试提示 - //国家列表 - "邮箱": "이메일", - "中国": "중국", - "美国": "미국", - "加拿大": "캐나다", - "俄罗斯": "러시아", - "英国": "영국", - "德国": "독일", - "意大利": "이탈리아", - "法国": "프랑스", - "西班牙": "스페인", - "南非": "남아프리카", - "沙特阿拉伯": "사우디아라비아", - "土耳其": "터키", - "日本": "일본", - "韩国": "대한민국", - "新加坡": "싱가포르", - "马来西亚": "말레이시아", - "泰国": "태국", - "越南": "베트남", - "印度": "인도", - "巴基斯坦": "파키스탄", - "菲律宾": "필리핀", - "印度尼西亚": "인도네시아", - "阿联酋": "아랍에미리트", - "墨西哥": "멕시코", - "巴西": "브라질", - "阿根廷": "아르헨티나", - "澳大利亚": "호주", - "新西兰": "뉴질랜드", - "中国香港": "홍콩 (중국)", - "中国澳门": "마카오 (중국)", - "中国台湾": "대만 (중국)", - "埃及": "이집트", - "希腊": "그리스", - "荷兰": "네덜란드", - "比利时": "벨기에", - "匈牙利": "헝가리", - "罗马尼亚": "루마니아", - "瑞士": "스위스", - "奥地利": "오스트리아", - "丹麦": "덴마크", - "瑞典": "스웨덴", - "挪威": "노르웨이", - "波兰": "폴란드", - "秘鲁": "페루", - "智利": "칠레", - "哥伦比亚": "콜롬비아", - "委内瑞拉": "베네수엘라", - "葡萄牙": "포르투갈", - "卢森堡": "룩셈부르크", - "爱尔兰": "아일랜드", - "冰岛": "아이슬란드", - "阿尔巴尼亚": "알바니아", - "马耳他": "몰타", - "塞浦路斯": "키프로스", - "芬兰": "핀란드", - "保加利亚": "불가리아", - "立陶宛": "리투아니아", - "拉脱维亚": "라트비아", - "爱沙尼亚": "에스토니아", - "乌克兰": "우크라이나", - "塞尔维亚": "세르비아", - "克罗地亚": "크로아티아", - "斯洛文尼亚": "슬로베니아", - "捷克": "체코", - "斯洛伐克": "슬로바키아", - "危地马拉": "과테말라", - "萨尔瓦多": "엘살바도르", - "洪都拉斯": "온두라스", - "尼加拉瓜": "니카라과", - "哥斯达黎加": "코스타리카", - "巴拿马": "파나마", - "海地": "아이티", - "玻利维亚": "볼리비아", - "厄瓜多尔": "에콰도르", - "巴拉圭": "파라과이", - "乌拉圭": "우루과이", - "摩洛哥": "모로코", - "阿尔及利亚": "알제리", - "突尼斯": "튀니지", - "尼日利亚": "나이지리아", - "加纳": "가나", - "埃塞俄比亚": "에티오피아", - "肯尼亚": "케냐", - "坦桑尼亚": "탄자니아", - "乌干达": "우간다", - "孟加拉国": "방글라데시", - "以色列": "이스라엘", - "黎巴嫩": "레바논", - "约旦": "요르단", - "伊拉克": "이라크", - "科威特": "쿠웨이트", - "巴林": "바레인", - "卡塔尔": "카타르", - "阿曼": "오만", - "阿富汗": "아프가니스탄", - "斯里兰卡": "스리랑카", - "缅甸": "미얀마", - "尼泊尔": "네팔", - "蒙古": "몽골", - "柬埔寨": "캄보디아", - "老挝": "라오스", - "文莱": "브루나이", - "东帝汶": "동티모르", - "斐济": "피지", - "所罗门群岛": "솔로몬 제도", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "번역 기록", - "enableRecording": "녹음 활성화", - "viewAudioFiles": "녹음 파일 보기", - "headsetUser": "헤드셋 사용자", - "phoneUser": "휴대폰 사용자", - "selectSourceLanguage": "원본 언어 선택", - "selectTargetLanguage": "대상 언어 선택", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "기록 없음", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "기록 지우기", - "clearHistoryConfirm": "모든 번역 기록을 지우시겠습니까? 이 작업은 되돌릴 수 없습니다.", - "unknownLanguage": "알 수 없는 언어", - "deleteSessionRecord": "세션 기록 삭제", - "deleteSessionConfirm": "이 세션의 모든 번역 기록을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "녹음 파일 번역", - "noAudioFiles": "오디오 파일 없음", - "calculating": "계산 중...", - "playing": "재생 중...", - "paused": "일시 중지됨", - "clickToPlay": "클릭하여 재생", - "rename": "이름 바꾸기", - "smartTranscription": "스마트 받아쓰기", - "renameAudioFile": "오디오 파일 이름 바꾸기", - "enterNewFileName": "새 파일 이름을 입력하세요", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "원본 기록", - "recordSummary": "기록 요약", - "clickToGenerateSummary": "아래 버튼을 클릭하여 세션 요약 생성", - "summaryContent": "요약 내용", - "copied": "복사됨", - "summaryCopiledToClipboard": "요약이 클립보드에 복사되었습니다", - "extractSummary": "요약 추출", - "summaryGenerated": "요약 생성됨", - "generating": "생성 중...", - "regenerate": "다시 생성", - "summaryTimeoutMessage": "요약 생성 요청 시간 초과, 네트워크 문제 또는 서버 과부하일 수 있습니다.", - "deleteTranslationRecord": "번역 기록 삭제", - "deleteTranslationConfirm": "이 번역 기록을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", - "originalText": "원본 텍스트", - "translatedText": "번역된 텍스트", - "sessionSummary": "세션 요약", - "cannotShare": "공유할 수 없음", - "generateSummaryFirst": "먼저 요약을 생성하세요", - "translationSessionRecord": "번역 세션 기록", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "기기 페어링", "connectYourDeepSoundHeadset": "Voitrans 헤드셋 연결", "bind": "연결", @@ -1312,14 +1217,11 @@ const Map koKR = { "autoInputCode": "코드 자동 입력", "skipBinding": "연결 건너뛰기", "rescan": "다시 스캔", - "verifyingDevice": "기기 확인 중...", "confirmBinding": "연결 확인", "associatingDevice": "기기 연결 중...", "goToBluetoothSettings": "블루투스 설정으로 이동", 'bluetooth': '블루투스', - - // 配对状态文本 "readyToPair": "페어링 준비 완료", "preparingPairingEnvironment": "페어링 환경 준비 중...", "connectDeepSoundViaSystemBluetooth": "먼저 시스템 블루투스를 통해 Voitrans 기기를 연결하세요", @@ -1327,8 +1229,6 @@ const Map koKR = { "establishingDeviceAssociation": "기기 연결 설정 중...", "waitingCompletePairing": "잠시만 기다려주세요, 페어링을 완료하는 중입니다...", "pairingSuccessRedirecting": "페어링 성공! 홈 화면으로 이동합니다...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Voitrans 기기에 연결되었는지 확인하세요", "deviceAlreadyBoundToOtherAccount": "이 기기는 이미 다른 계정에 연결되어 있습니다", "deviceAssociationFailed": "기기 연결 실패, 다시 시도하세요", @@ -1336,18 +1236,11 @@ const Map koKR = { "networkError": "네트워크 오류", "authorizationFailedCheckCode": "인증 실패, 인증 코드가 올바른지 확인하세요", "pairingFailedRetry": "페어링 실패, 다시 시도하세요", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': '블루투스를 활성화해주세요', 'deviceDisconnected': '기기 연결 해제됨', 'readyToStartPairing': '페어링 시작 준비 완료', 'checkingEnvironment': '환경 확인 중...', 'ensureHeadsetOnAndPairingMode': '헤드셋이 켜져 있고 페어링 모드인지 확인하세요', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': '보안 연결 설정 중...', 'needManualBindingAuthCode': '수동 연결 인증 코드가 필요합니다...', 'pairingSuccessful': '페어링 성공!', @@ -1366,8 +1259,6 @@ const Map koKR = { 'blePairingStartupFailed': 'BLE 페어링 시작 실패', 'bleConnectionFailed': 'BLE 연결 실패', 'deviceAuthorizationFailedCheckCode': '기기 인증 실패, 인증 코드를 확인하세요', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1380,7 +1271,18 @@ const Map koKR = { 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "사용자 피드백", 'feedbackInfo': '피드백 또는 제안 제공', 'feedbackDescription': '겪으신 문제나 제안을 설명해주세요', @@ -1418,7 +1320,7 @@ const Map koKR = { "updateContent": "업데이트 내용", "removeEarbudsEnsureBattery": "양쪽 이어버드를 꺼내고 배터리가 모두 20% 이상인지 확인하세요", - // 音乐列表页面 + // 音乐模块 "noMusic": "음악 없음", // 暂无音乐 "noPlayingMusic": "재생 중인 음악 없음", // 暂无播放音乐 "unknownSong": "알 수 없는 노래", // 未知歌曲 @@ -1466,22 +1368,122 @@ const Map koKR = { "波斯语": "페르시아어", "斯瓦希里语": "스와힐리어", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "이메일", + "中国": "중국", + "美国": "미국", + "加拿大": "캐나다", + "俄罗斯": "러시아", + "英国": "영국", + "德国": "독일", + "意大利": "이탈리아", + "法国": "프랑스", + "西班牙": "스페인", + "南非": "남아프리카", + "沙特阿拉伯": "사우디아라비아", + "土耳其": "터키", + "日本": "일본", + "韩国": "대한민국", + "新加坡": "싱가포르", + "马来西亚": "말레이시아", + "泰国": "태국", + "越南": "베트남", + "印度": "인도", + "巴基斯坦": "파키스탄", + "菲律宾": "필리핀", + "印度尼西亚": "인도네시아", + "阿联酋": "아랍에미리트", + "墨西哥": "멕시코", + "巴西": "브라질", + "阿根廷": "아르헨티나", + "澳大利亚": "호주", + "新西兰": "뉴질랜드", + "中国香港": "홍콩 (중국)", + "中国澳门": "마카오 (중국)", + "中国台湾": "대만 (중국)", + "埃及": "이집트", + "希腊": "그리스", + "荷兰": "네덜란드", + "比利时": "벨기에", + "匈牙利": "헝가리", + "罗马尼亚": "루마니아", + "瑞士": "스위스", + "奥地利": "오스트리아", + "丹麦": "덴마크", + "瑞典": "스웨덴", + "挪威": "노르웨이", + "波兰": "폴란드", + "秘鲁": "페루", + "智利": "칠레", + "哥伦比亚": "콜롬비아", + "委内瑞拉": "베네수엘라", + "葡萄牙": "포르투갈", + "卢森堡": "룩셈부르크", + "爱尔兰": "아일랜드", + "冰岛": "아이슬란드", + "阿尔巴尼亚": "알바니아", + "马耳他": "몰타", + "塞浦路斯": "키프로스", + "芬兰": "핀란드", + "保加利亚": "불가리아", + "立陶宛": "리투아니아", + "拉脱维亚": "라트비아", + "爱沙尼亚": "에스토니아", + "乌克兰": "우크라이나", + "塞尔维亚": "세르비아", + "克罗地亚": "크로아티아", + "斯洛文尼亚": "슬로베니아", + "捷克": "체코", + "斯洛伐克": "슬로바키아", + "危地马拉": "과테말라", + "萨尔瓦多": "엘살바도르", + "洪都拉斯": "온두라스", + "尼加拉瓜": "니카라과", + "哥斯达黎加": "코스타리카", + "巴拿马": "파나마", + "海地": "아이티", + "玻利维亚": "볼리비아", + "厄瓜多尔": "에콰도르", + "巴拉圭": "파라과이", + "乌拉圭": "우루과이", + "摩洛哥": "모로코", + "阿尔及利亚": "알제리", + "突尼斯": "튀니지", + "尼日利亚": "나이지리아", + "加纳": "가나", + "埃塞俄比亚": "에티오피아", + "肯尼亚": "케냐", + "坦桑尼亚": "탄자니아", + "乌干达": "우간다", + "孟加拉国": "방글라데시", + "以色列": "이스라엘", + "黎巴嫩": "레바논", + "约旦": "요르단", + "伊拉克": "이라크", + "科威特": "쿠웨이트", + "巴林": "바레인", + "卡塔尔": "카타르", + "阿曼": "오만", + "阿富汗": "아프가니스탄", + "斯里兰卡": "스리랑카", + "缅甸": "미얀마", + "尼泊尔": "네팔", + "蒙古": "몽골", + "柬埔寨": "캄보디아", + "老挝": "라오스", + "文莱": "브루나이", + "东帝汶": "동티모르", + "斐济": "피지", + "所罗门群岛": "솔로몬 제도", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/lt_lt.dart b/lib/core/translations/language/lt_lt.dart index e22b2fea5..04dcf4c5e 100644 --- a/lib/core/translations/language/lt_lt.dart +++ b/lib/core/translations/language/lt_lt.dart @@ -1,5 +1,5 @@ -// const Map ltLT = { + // 通用 'continue': 'Tęsti', 'confirm': 'Patvirtinti', @@ -19,6 +19,11 @@ const Map ltLT = { "unknownError": "Nežinoma klaida", "asrConnectionFailed": "Nepavyko prisijungti prie kalbos atpažinimo paslaugos. Patikrinkite tinklą arba bandykite vėliau dar kartą.", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "Jungiantis pasaulį, anapus garso", @@ -29,7 +34,7 @@ const Map ltLT = { "explore": "Atrasti", "settings": "Nustatymai", - // 语言 + // 语言列表 "followingSystem": "Sekti sistemą", "chinese": "Kinų", "english": "Anglų", @@ -73,7 +78,7 @@ const Map ltLT = { "arabic": "Arabų", "persian": "Persų", - // 登录页 + // 登录模块 "welcome": "Sveiki atvykę", "loginTips": "Prisijunkite arba užsiregistruokite naudodami savo telefono numerį arba el. paštą", @@ -102,13 +107,9 @@ const Map ltLT = { "resendVerificationCode": "Išsiųsti patvirtinimo kodą iš naujo", "login": "Prisijungti", "usePasswordLogin": "Prisijungti su slaptažodžiu", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans deklaracija", // Voitrans 声明 "welcomeToThisApp": "Sveiki atvykę į Voitrans, prašome atidžiai perskaityti", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", paspaudus 'Sutinku ir tęsti' reiškia, kad jūs visiškai perskaitėte ir sutinkate su aukščiau nurodytomis sutartimis. Paspaudus 'Nesutinku' išeisite iš programos.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Nesutinku", // 不同意 @@ -168,7 +169,7 @@ const Map ltLT = { 'right': 'Dešinė', 'checkConnectionStatusFailed': 'Nepavyko patikrinti ryšio būsenos', -// 发现页 + // 发现页 "searchAi": "Ieškoti AI funkcijų...", "exploreSlogan": "Išmaniosios ausinės, beribės galimybės", "exploreSlogan1": "Išmanus draugas, beribės galimybės", @@ -193,6 +194,7 @@ const Map ltLT = { "usageStats": "Naudojimo statistika", "usageStatsInfo": "Peržiūrėkite jūsų naudojimo statistiką", "scene": "Scenarijus", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", @@ -213,7 +215,6 @@ const Map ltLT = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -230,7 +231,6 @@ const Map ltLT = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - // 通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", @@ -239,88 +239,79 @@ const Map ltLT = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', 'remaining': 'Remaining', 'featureDescription': 'Feature Description', - // AI 功能卡片 + 'paymentSuccess': 'Mokėjimas sėkmingas', + 'paymentFailed': 'Mokėjimas nepavyko', + 'gotIt': 'Supratau', + 'paymentFailedTryAgain': 'Mokėjimas nepavyko. Bandykite dar kartą.', + 'selectPaymentMethod': 'Pasirinkite mokėjimo būdą', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Nepavyko sukurti WeChat Pay užsakymo', + 'alipayOrderCreateFailed': 'Nepavyko sukurti Alipay užsakymo', + 'appleOrderCreateFailed': 'Nepavyko sukurti Apple užsakymo', + 'googleOrderCreateFailed': 'Nepavyko sukurti Google užsakymo', + 'paypalOrderCreateFailed': 'Nepavyko sukurti PayPal užsakymo', + 'paymentException': 'Mokėjimo išimtis', + 'paymentLaunchFailed': 'Mokėjimo paleidimas nepavyko', + 'paymentExceptionWithError': 'Mokėjimo išimtis: @error', + 'paymentProcessingCheckLater': 'Jūsų užsakymas apdorojamas. Patikrinkite vėliau.', + 'paymentResultQueryException': 'Nepavyko užklausti mokėjimo rezultato: @error', + 'orderConfirmedQuotaRefreshed': 'Užsakymas patvirtintas. Jūsų kvota buvo atnaujinta.', + 'paymentCompletedConfirming': 'Mokėjimas baigtas. Patvirtinama…', + 'paymentCancelled': 'Mokėjimas atšauktas', + 'paypalOpenedCompleteInBrowser': 'PayPal atidarytas. Užbaikite mokėjimą naršyklėje.', + 'paypalOpenFailed': 'Nepavyko atidaryti PayPal mokėjimo puslapio', + 'paymentTestTitle': 'Mokėjimo testas', + 'paymentTestOrderInfo': 'Testinio užsakymo informacija', + 'paymentTestProductId': 'Produkto ID', + 'paymentTestProductDescription': 'Produkto aprašymas', + 'paymentTestWechatDescription': 'WeChat Pay mokėjimo testas', + 'paymentTestAlipayDescription': 'Alipay mokėjimo testas', + 'paymentTestAmount': 'Suma', + 'paymentTestSelectAmount': 'Pasirinkite testo sumą', + 'paying': 'Mokama...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Mokėjimo būsena', + 'errorInfoWithMessage': 'Klaida: @message', + 'retest': 'Pakartotinis testas', + 'paymentTestInstructionsTitle': 'Instrukcijos', + 'paymentTestInstructionsContent': '1. Pasirinkite testo sumą (rekomenduojama: ¥0,01)\n2. Spustelėkite mokėjimo mygtuką, kad pradėtumėte\n3. Užbaikite mokėjimą mokėjimo programoje\n4. Grįžkite patikrinti rezultatą', + 'startingWechatPayment': 'Paleidžiamas WeChat Pay...', + 'startingAlipayPayment': 'Paleidžiamas Alipay...', + 'wechatPaymentSuccess': 'WeChat Pay sėkmingas!', + 'wechatPaymentFailed': 'WeChat Pay nepavyko', + 'wechatPaymentLaunchFailed': 'Nepavyko paleisti WeChat Pay', + 'cannotLaunchWechatPayment': 'Nepavyko paleisti WeChat Pay', + 'wechatPaymentException': 'WeChat Pay išimtis', + 'wechatPaymentTestCompleted': 'WeChat Pay testas baigtas', + 'alipayPaymentSuccess': 'Alipay sėkmingas!', + 'alipayPaymentFailed': 'Alipay nepavyko', + 'alipayPaymentLaunchFailed': 'Nepavyko paleisti Alipay', + 'cannotLaunchAlipayPayment': 'Nepavyko paleisti Alipay', + 'alipayPaymentException': 'Alipay išimtis', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": + 'Insufficient balance, please go to the corresponding recharge page to recharge.', + "recharge": 'Go to Recharge', + "aiMemberExpiredDesc": + 'AI membership expired, please go to the membership recharge page to renew.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', 'aiHeaderDesc2': @@ -343,7 +334,46 @@ const Map ltLT = { 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Real-time Transcription', + 'sceneLexicon': 'Scenario Glossary', + 'subtitleDisplay': 'Subtitles', + 'transHeaderDesc1': + 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', + 'translateZhEn': 'Chinese-English translation', + 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', + 'multiLangTextTranslation': 'Multilingual text translation', + 'termOptimizationContextPreserve': + 'Terminology optimization and context preservation', + 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', + 'personalVocabularyMemory': 'Personal vocabulary memory', + 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', + 'colorHighContrast': 'High color contrast', + 'transDisclaimer': + 'Translation performance depends on microphone, network latency, and ambient noise.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Meeting Recording', + 'transcriptionAndSummary': 'Transcription & Summary', + 'keywordSearch': 'Keyword Search', + 'collaborationSharing': 'Collaboration & Sharing', + 'meetingHeaderDesc1': + 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'meetingHeaderDesc2': + 'Suitable for business meetings, class notes, and interview minutes.', + 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingSpeakerTagging': 'Speaker labeling', + 'meetingLongAudioTranscription': 'Long audio transcription', + 'meetingKeyPointSummary': 'Key point extraction', + 'meetingTopicNameSearch': 'Search by topic/name', + 'meetingTimelineJump': 'Timeline jump', + 'meetingExportSummary': 'Export minutes', + 'meetingMultiPlatformShare': 'Share across platforms', + 'meetingDisclaimer': + 'Use in quiet environments; performance depends on microphone and network.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', 'higherQuota': 'Higher usage quota', 'lowerUnitPrice': 'Lower unit price', @@ -359,7 +389,32 @@ const Map ltLT = { 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Translation Basic 100', + 'trans_002_name': 'Translation Basic 500', + 'trans_003_name': 'Translation Basic 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': 'Includes 100 translations (voice/text).', + 'trans_002_desc': 'Includes 500 translations (voice/text).', + 'trans_003_desc': 'Includes 1000 translations (voice/text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "Praleisti", 'next': 'Next', 'sayLilyHint': 'Say "Lily Lily" to the mic', @@ -370,7 +425,6 @@ const Map ltLT = { 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', 'confirmInput': 'Confirm Input', 'guideClickSendPrefix': 'Tap send, ', - // AI 引导步骤 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', 'guideWeatherInput': 'What’s the weather today?', 'guideWeatherSend': 'Lily will report the weather in real time', @@ -397,7 +451,7 @@ const Map ltLT = { 'guideSmsSend': 'Lily will send the message', 'guideSmsEnd': 'Message sent—voice control is convenient', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Pradėti susitikimą", 'edit': 'Redaguoti', 'delete': 'Ištrinti', @@ -409,8 +463,6 @@ const Map ltLT = { 'recordingDetails': 'Įrašo detalės', 'aiSummary': 'AI santrauka', 'meetingTranscript': 'Susitikimo stenograma', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -461,7 +513,6 @@ const Map ltLT = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -470,6 +521,97 @@ const Map ltLT = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': 'Sukurti', + 'templateDetails': 'Šablono informacija', + 'tag': 'Žyma', + 'description': 'Aprašymas', + 'template': 'Šablonas', + 'deleteTemplate': 'Ištrinti šabloną', + 'deleteTemplateConfirm': 'Ar tikrai norite ištrinti šį šabloną?', + 'editTemplate': 'Redaguoti šabloną', + 'createTemplate': 'Sukurti šabloną', + 'name': 'Pavadinimas', + 'templateContentHint': 'Prašome įvesti šablono turinį! Patarimas: Spustelėkite AI mygtuką viršuje, kad greitai sugeneruotumėte šablono turinį pagal įvestą pavadinimą ir aprašymą', + 'inputNameHint': 'Prašome įvesti pavadinimą', + 'inputDescHint': 'Prašome įvesti aprašymą', + 'custom': 'Pasirinktinis', + 'pleaseEnter': 'Prašome įvesti', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': + 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Išsaugoti minčių žemėlapį', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'Eksportuoti', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Taikyti visoms šio kalbėtojo pastraipoms', + 'summaryWillBeUpdatedAutomatically': + 'Santrauka bus automatiškai atnaujinama pagal šabloną', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -488,7 +630,7 @@ const Map ltLT = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -524,8 +666,6 @@ const Map ltLT = { 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -554,105 +694,26 @@ const Map ltLT = { 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Taikyti visoms šio kalbėtojo pastraipoms', - 'summaryWillBeUpdatedAutomatically': - 'Santrauka bus automatiškai atnaujinama pagal šabloną', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': 'Analizė nepavyko, bandykite dar kartą vėliau', + 'transcriptionFailed': 'Transkripcija nepavyko, bandykite dar kartą vėliau', + 'summaryFailed': 'Santrauka nepavyko, bandykite dar kartą vėliau', + 'summaryFailedShort': 'Santrauka nepavyko', + 'transcriptionFailedShort': 'Transkripcija nepavyko', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Garso grotuvas neparuoštas, palaukite', + 'playFailed': 'Atkūrimas nepavyko', + 'audioFileNotFound': 'Garso failas nerastas', + 'fetchingAudio': 'Gaunamas garso įrašas iš debesies...', + 'playerLoadFailed': 'Garso grotuvo įkėlimas nepavyko', // 设置页 "systemSettings": "Sistemos nustatymai", @@ -706,26 +767,15 @@ const Map ltLT = { "BLE ausinių programinės įrangos versijos atnaujinimas", "deviceManagement": "Įrenginių valdymas", "manageConnectedDevices": "Valdyti prijungtus Bluetooth įrenginius", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Šiuo metu turite naujausią versiją {version}', 'checkUpdateFailed': 'Nepavyko patikrinti atnaujinimų', 'networkErrorRetry': 'Tinklo klaida, bandykite dar kartą vėliau', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Balso pokalbis realiuoju laiku", "realtimeVoiceChatInfo": "Išbandykite išmaniosios balso sąveikos funkciją (funkcijos peržiūra)", "loading": "Įkeliama...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -741,8 +791,7 @@ const Map ltLT = { "Are you sure you want to unbind device \"{deviceName}\"?", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Išvalyti pokalbių istoriją", "online": "Prisijungęs", @@ -773,8 +822,9 @@ const Map ltLT = { "swipeUpForMore": "Braukite aukštyn, kad pamatytumėte daugiau", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': 'Kai įjungta: AI nebus pertraukiamas jūsų balsu kalbėdamas ir gali apdoroti tik vieną pokalbio raundą vienu metu. Norėdami pradėti naują raundą, tiesiog pasakykite pažadinimo žodį.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -786,7 +836,7 @@ const Map ltLT = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Sveiki! Aš esu **Lily**, galiu jums padėti:\n\n' '• Atsakyti į klausimus ir pateikti informaciją\n\n' '• Balso vertimas realiuoju laiku\n\n' @@ -806,18 +856,17 @@ const Map ltLT = { 'startVoiceInput': 'Pradėti balso įvestį', 'startPhoneCallMode': 'Pradėti skambinimo režimą, pradėti balso įvestį', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Įveskite savo žinutę čia...', // 全屏编辑器输入提示 'characterCount': '{count} simbolių', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopijuoti', 'copySuccess': 'Sėkmingai nukopijuota', 'report': 'Pranešti', 'submitSuccess': 'Sėkmingai pateikta', 'submitFailed': 'Pateikimas nepavyko', 'reportSubmitted': 'Pranešimas pateiktas, mes jį apdorosime kuo greičiau', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Žalingas/Nesaugus', 'pornographicVulgar': 'Pornografinis/Vulgarus', 'misleadingAttack': 'Klaidinantis/Užpuolimas', @@ -827,17 +876,14 @@ const Map ltLT = { 'other': 'Kita', 'reportDescriptionHint': 'Norėtume sužinoti, kodėl pranešate, galite aprašyti problemą, su kuria susidūrėte.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Sugeneruota AI', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'Štai keletas rekomenduojamų dainų:', 'playList': 'Grojaraštis', 'moreMusic': 'Daugiau muzikos', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'val.', // 小时单位 @@ -852,7 +898,7 @@ const Map ltLT = { "bicycling": "Važiavimas dviračiu", "tsransit": "Viešasis transportas", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Užklausa apie oro sąlygas:', 'highest': 'Aukščiausia', 'lowest': 'Žemiausia', @@ -882,18 +928,8 @@ const Map ltLT = { "friday": "Penkt", "saturday": "Šešt", "sunday": "Sekm", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Saulėta", "partlyCloudy": "Mažai debesuota", "partlySunny": "Iš dalies saulėta", @@ -914,7 +950,130 @@ const Map ltLT = { "haze": "Migla", "strongWind": "Stiprus vėjas", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "Vertimų istorija", + "enableRecording": "Įjungti įrašymą", + "viewAudioFiles": "Peržiūrėti garso failus", + "headsetUser": "Ausinių naudotojas", + "phoneUser": "Telefono naudotojas", + "selectSourceLanguage": "Pasirinkite šaltinio kalbą", + "selectTargetLanguage": "Pasirinkite tikslo kalbą", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": + "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Dar nėra istorijos", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "Išvalyti istoriją", + "clearHistoryConfirm": + "Ar tikrai norite išvalyti visą vertimų istoriją? Šio veiksmo negalima atšaukti.", + "unknownLanguage": "Nežinoma kalba", + "deleteSessionRecord": "Ištrinti sesijos įrašą", + "deleteSessionConfirm": + "Ar tikrai norite ištrinti visus šios sesijos vertimų įrašus? Šio veiksmo negalima atšaukti.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": + "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": + "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": + "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": + "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Versti garso failus", + "noAudioFiles": "Dar nėra garso failų", + "calculating": "Skaičiuojama...", + "playing": "Grojama...", + "paused": "Pristabdyta", + "clickToPlay": "Spustelėkite, kad paleistumėte", + "rename": "Pervadinti", + "smartTranscription": "Išmanioji transkripcija", + "renameAudioFile": "Pervadinti garso failą", + "enterNewFileName": "Įveskite naują failo pavadinimą", + + // 翻译模块 - 翻译详情 + "originalRecord": "Originalus įrašas", + "recordSummary": "Įrašo santrauka", + "clickToGenerateSummary": + "Spustelėkite mygtuką žemiau, kad sugeneruotumėte sesijos santrauką", + "summaryContent": "Santraukos turinys", + "copied": "Nukopijuota", + "summaryCopiledToClipboard": "Santrauka nukopijuota į iškarpinę", + "extractSummary": "Išgauti santrauką", + "summaryGenerated": "Santrauka sugeneruota", + "generating": "Generuojama...", + "regenerate": "Generuoti iš naujo", + "summaryTimeoutMessage": + "Santraukos generavimo užklausa baigėsi, galbūt dėl tinklo problemų ar užimto serverio.", + "deleteTranslationRecord": "Ištrinti vertimo įrašą", + "deleteTranslationConfirm": + "Ar tikrai norite ištrinti šį vertimo įrašą? Šio veiksmo negalima atšaukti.", + "originalText": "Originalus tekstas", + "translatedText": "Išverstas tekstas", + "sessionSummary": "Sesijos santrauka", + "cannotShare": "Negalima bendrinti", + "generateSummaryFirst": "Pirmiausia sugeneruokite santrauką", + "translationSessionRecord": "Vertimo sesijos įrašas", + + // 个人资料模块 "editProfile": "Redaguoti asmeninę informaciją", "avatar": "Avataras", "nickname": "Slapyvardis", @@ -930,8 +1089,6 @@ const Map ltLT = { 'Ar tikrai norite visam laikui ištrinti savo paskyrą? Šio veiksmo negalima atšaukti.', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'Tinklo ryšio klaida, patikrinkite tinklo nustatymus ir bandykite dar kartą', 'serverTemporarilyUnavailable': @@ -949,10 +1106,6 @@ const Map ltLT = { 'Tinklo ryšio klaida, patikrinkite tinklo nustatymus', 'serverInternalErrorRetryLater': 'Vidinė serverio klaida, bandykite dar kartą vėliau', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Vaizdo suspaudimas nepavyko', 'avatarUpdateFailed': 'Avataro atnaujinimas nepavyko', 'usernameCannotBeEmpty': 'Vartotojo vardas negali būti tuščias', @@ -964,8 +1117,6 @@ const Map ltLT = { 'accountPermanentlyDeleted': 'Paskyra visam laikui ištrinta', 'deleteAccountFailedRetry': 'Paskyros ištrynimas nepavyko, bandykite dar kartą', - - // 账号服务相关 'clearUserDataFailed': 'Nepavyko išvalyti vartotojo duomenų', // 清理用户数据失败 'deleteUserDataFailed': 'Nepavyko ištrinti vartotojo duomenų', // 删除用户数据失败 'thirdPartyLogoutSuccess': @@ -981,7 +1132,12 @@ const Map ltLT = { 'accountServiceInitialized': 'Paskyros paslauga inicijuota', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': + 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', 'getPermissionStatusFailed': 'Nepavyko gauti leidimo būsenos', 'communicationPermissions': 'Komunikacijos leidimai', 'bluetoothPermissions': 'Bluetooth Permissions', @@ -994,7 +1150,6 @@ const Map ltLT = { 'phone': 'Telefonas', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'Rašyti į kalendorių', @@ -1049,8 +1204,6 @@ const Map ltLT = { 'permanentDenialText': 'Jūs visam laikui atmetėte {permission} leidimą, eikite į programos nustatymus, kad jį įjungtumėte', 'goToSettings': 'Eiti į nustatymus', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': @@ -1075,7 +1228,6 @@ const Map ltLT = { 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', @@ -1085,8 +1237,6 @@ const Map ltLT = { 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', 'storagePermissionPermanentDenial': 'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', - - //permission_util.dart 'permissionUtilNeed': 'Need ', 'permissionUtilPermission': ' Permission', 'permissionUtilRestricted': ' Permission Restricted', @@ -1094,7 +1244,20 @@ const Map ltLT = { 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigacija vyksta', + 'native.notification.navigation.keepRunning': 'Navigacija, laikykite programą atidarytą', + 'native.notification.bleAgent.running': 'Balso asistento agentas veikia', + 'native.notification.audioRecording.recording': 'Garso įrašas, bakstelėkite, kad grįžtumėte į programą', + 'native.notification.music.waiting': 'Laukiama grojimo', + 'native.notification.music.previous': 'Ankstesnis', + 'native.notification.music.next': 'Kitas', + 'native.notification.music.play': 'Groti', + 'native.notification.music.pause': 'Pauzė', + 'native.notification.qqMusic.playing': 'Grojama muzika', + + // 版本更新 'newVersionFound': 'Rasta nauja versija', // 版本更新对话框标题 'remindLater': 'Priminti vėliau', // 稍后提醒按钮 'updateNow': 'Atnaujinti dabar', // 立即更新按钮 @@ -1105,253 +1268,7 @@ const Map ltLT = { 'updateErrorRetry': 'Atnaujinimo metu įvyko klaida, bandykite dar kartą vėliau', // 更新错误重试提示 - //国家列表 - "邮箱": "El. paštas", - "中国": "Kinija", - "美国": "JAV", - "加拿大": "Kanada", - "俄罗斯": "Rusija", - "英国": "Jungtinė Karalystė", - "德国": "Vokietija", - "意大利": "Italija", - "法国": "Prancūzija", - "西班牙": "Ispanija", - "南非": "Pietų Afrika", - "沙特阿拉伯": "Saudo Arabija", - "土耳其": "Turkija", - "日本": "Japonija", - "韩国": "Pietų Korėja", - "新加坡": "Singapūras", - "马来西亚": "Malaizija", - "泰国": "Tailandas", - "越南": "Vietnamas", - "印度": "Indija", - "巴基斯坦": "Pakistanas", - "菲律宾": "Filipinai", - "印度尼西亚": "Indonezija", - "阿联酋": "JAE", - "墨西哥": "Meksika", - "巴西": "Brazilija", - "阿根廷": "Argentina", - "澳大利亚": "Australija", - "新西兰": "Naujoji Zelandija", - "中国香港": "Honkongas (Kinija)", - "中国澳门": "Makao (Kinija)", - "中国台湾": "Taivanas (Kinija)", - "埃及": "Egiptas", - "希腊": "Graikija", - "荷兰": "Nyderlandai", - "比利时": "Belgija", - "匈牙利": "Vengrija", - "罗马尼亚": "Rumunija", - "瑞士": "Šveicarija", - "奥地利": "Austrija", - "丹麦": "Danija", - "瑞典": "Švedija", - "挪威": "Norvegija", - "波兰": "Lenkija", - "秘鲁": "Peru", - "智利": "Čilė", - "哥伦比亚": "Kolumbija", - "委内瑞拉": "Venesuela", - "葡萄牙": "Portugalija", - "卢森堡": "Liuksemburgas", - "爱尔兰": "Airija", - "冰岛": "Islandija", - "阿尔巴尼亚": "Albanija", - "马耳他": "Malta", - "塞浦路斯": "Kipras", - "芬兰": "Suomija", - "保加利亚": "Bulgarija", - "立陶宛": "Lietuva", - "拉脱维亚": "Latvija", - "爱沙尼亚": "Estija", - "乌克兰": "Ukraina", - "塞尔维亚": "Serbija", - "克罗地亚": "Kroatija", - "斯洛文尼亚": "Slovėnija", - "捷克": "Čekija", - "斯洛伐克": "Slovakija", - "危地马拉": "Gvatemala", - "萨尔瓦多": "Salvadoras", - "洪都拉斯": "Hondūras", - "尼加拉瓜": "Nikaragva", - "哥斯达黎加": "Kosta Rika", - "巴拿马": "Panama", - "海地": "Haitis", - "玻利维亚": "Bolivija", - "厄瓜多尔": "Ekvadoras", - "巴拉圭": "Paragvajus", - "乌拉圭": "Urugvajus", - "摩洛哥": "Marokas", - "阿尔及利亚": "Alžyras", - "突尼斯": "Tunisas", - "尼日利亚": "Nigerija", - "加纳": "Gana", - "埃塞俄比亚": "Etiopija", - "肯尼亚": "Kenija", - "坦桑尼亚": "Tanzanija", - "乌干达": "Uganda", - "孟加拉国": "Bangladešas", - "以色列": "Izraelis", - "黎巴嫩": "Libanas", - "约旦": "Jordanija", - "伊拉克": "Irakas", - "科威特": "Kuveitas", - "巴林": "Bahreinas", - "卡塔尔": "Kataras", - "阿曼": "Omanas", - "阿富汗": "Afganistanas", - "斯里兰卡": "Šri Lanka", - "缅甸": "Mianmaras", - "尼泊尔": "Nepalas", - "蒙古": "Mongolija", - "柬埔寨": "Kambodža", - "老挝": "Laosas", - "文莱": "Brunėjus", - "东帝汶": "Rytų Timoras", - "斐济": "Fidžis", - "所罗门群岛": "Saliamono Salos", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Vertimų istorija", - "enableRecording": "Įjungti įrašymą", - "viewAudioFiles": "Peržiūrėti garso failus", - "headsetUser": "Ausinių naudotojas", - "phoneUser": "Telefono naudotojas", - "selectSourceLanguage": "Pasirinkite šaltinio kalbą", - "selectTargetLanguage": "Pasirinkite tikslo kalbą", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Dar nėra istorijos", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Išvalyti istoriją", - "clearHistoryConfirm": - "Ar tikrai norite išvalyti visą vertimų istoriją? Šio veiksmo negalima atšaukti.", - "unknownLanguage": "Nežinoma kalba", - "deleteSessionRecord": "Ištrinti sesijos įrašą", - "deleteSessionConfirm": - "Ar tikrai norite ištrinti visus šios sesijos vertimų įrašus? Šio veiksmo negalima atšaukti.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Versti garso failus", - "noAudioFiles": "Dar nėra garso failų", - "calculating": "Skaičiuojama...", - "playing": "Grojama...", - "paused": "Pristabdyta", - "clickToPlay": "Spustelėkite, kad paleistumėte", - "rename": "Pervadinti", - "smartTranscription": "Išmanioji transkripcija", - "renameAudioFile": "Pervadinti garso failą", - "enterNewFileName": "Įveskite naują failo pavadinimą", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Originalus įrašas", - "recordSummary": "Įrašo santrauka", - "clickToGenerateSummary": - "Spustelėkite mygtuką žemiau, kad sugeneruotumėte sesijos santrauką", - "summaryContent": "Santraukos turinys", - "copied": "Nukopijuota", - "summaryCopiledToClipboard": "Santrauka nukopijuota į iškarpinę", - "extractSummary": "Išgauti santrauką", - "summaryGenerated": "Santrauka sugeneruota", - "generating": "Generuojama...", - "regenerate": "Generuoti iš naujo", - "summaryTimeoutMessage": - "Santraukos generavimo užklausa baigėsi, galbūt dėl tinklo problemų ar užimto serverio.", - "deleteTranslationRecord": "Ištrinti vertimo įrašą", - "deleteTranslationConfirm": - "Ar tikrai norite ištrinti šį vertimo įrašą? Šio veiksmo negalima atšaukti.", - "originalText": "Originalus tekstas", - "translatedText": "Išverstas tekstas", - "sessionSummary": "Sesijos santrauka", - "cannotShare": "Negalima bendrinti", - "generateSummaryFirst": "Pirmiausia sugeneruokite santrauką", - "translationSessionRecord": "Vertimo sesijos įrašas", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Įrenginio susiejimas", "connectYourDeepSoundHeadset": "Prijunkite savo Voitrans ausines", "bind": "Susieti", @@ -1360,14 +1277,11 @@ const Map ltLT = { "autoInputCode": "Automatinis kodo įvedimas", "skipBinding": "Praleisti susiejimą", "rescan": "Nuskaityti iš naujo", - "verifyingDevice": "Tikrinamas įrenginys...", "confirmBinding": "Patvirtinti susiejimą", "associatingDevice": "Asocijuojamas įrenginys...", "goToBluetoothSettings": "Eiti į Bluetooth nustatymus", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Pasiruošta susiejimui", "preparingPairingEnvironment": "Ruošiama susiejimo aplinka...", "connectDeepSoundViaSystemBluetooth": @@ -1377,8 +1291,6 @@ const Map ltLT = { "waitingCompletePairing": "Prašome palaukti, baigiamas susiejimas...", "pairingSuccessRedirecting": "Susiejimas sėkmingas! Nukreipiama į pagrindinį puslapį...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Įsitikinkite, kad esate prisijungę prie Voitrans įrenginio", "deviceAlreadyBoundToOtherAccount": @@ -1391,19 +1303,12 @@ const Map ltLT = { "authorizationFailedCheckCode": "Autorizacija nepavyko, patikrinkite, ar autorizacijos kodas yra teisingas", "pairingFailedRetry": "Susiejimas nepavyko, bandykite dar kartą", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Įjunkite Bluetooth', 'deviceDisconnected': 'Įrenginys atjungtas', 'readyToStartPairing': 'Pasiruošta pradėti susiejimą', 'checkingEnvironment': 'Tikrinama aplinka...', 'ensureHeadsetOnAndPairingMode': 'Įsitikinkite, kad ausinės įjungtos ir yra susiejimo režime', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Kuriama saugi jungtis...', 'needManualBindingAuthCode': 'Reikalingas rankinio susiejimo autorizacijos kodas...', @@ -1425,8 +1330,6 @@ const Map ltLT = { 'bleConnectionFailed': 'BLE ryšys nepavyko', 'deviceAuthorizationFailedCheckCode': 'Įrenginio autorizacija nepavyko, patikrinkite autorizacijos kodą', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1439,7 +1342,18 @@ const Map ltLT = { 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Vartotojų atsiliepimai", 'feedbackInfo': 'Pateikite atsiliepimą ar pasiūlymą', 'feedbackDescription': @@ -1483,7 +1397,7 @@ const Map ltLT = { "removeEarbudsEnsureBattery": "Išimkite abi ausines ir įsitikinkite, kad abiejų baterijos lygis yra didesnis nei 20%", - // 音乐列表页面 + // 音乐模块 "noMusic": "Nėra muzikos", // 暂无音乐 "noPlayingMusic": "Negrojama jokia muzika", // 暂无播放音乐 "unknownSong": "Nežinoma daina", // 未知歌曲 @@ -1531,22 +1445,122 @@ const Map ltLT = { "波斯语": "Persų", "斯瓦希里语": "Svahilių", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "El. paštas", + "中国": "Kinija", + "美国": "JAV", + "加拿大": "Kanada", + "俄罗斯": "Rusija", + "英国": "Jungtinė Karalystė", + "德国": "Vokietija", + "意大利": "Italija", + "法国": "Prancūzija", + "西班牙": "Ispanija", + "南非": "Pietų Afrika", + "沙特阿拉伯": "Saudo Arabija", + "土耳其": "Turkija", + "日本": "Japonija", + "韩国": "Pietų Korėja", + "新加坡": "Singapūras", + "马来西亚": "Malaizija", + "泰国": "Tailandas", + "越南": "Vietnamas", + "印度": "Indija", + "巴基斯坦": "Pakistanas", + "菲律宾": "Filipinai", + "印度尼西亚": "Indonezija", + "阿联酋": "JAE", + "墨西哥": "Meksika", + "巴西": "Brazilija", + "阿根廷": "Argentina", + "澳大利亚": "Australija", + "新西兰": "Naujoji Zelandija", + "中国香港": "Honkongas (Kinija)", + "中国澳门": "Makao (Kinija)", + "中国台湾": "Taivanas (Kinija)", + "埃及": "Egiptas", + "希腊": "Graikija", + "荷兰": "Nyderlandai", + "比利时": "Belgija", + "匈牙利": "Vengrija", + "罗马尼亚": "Rumunija", + "瑞士": "Šveicarija", + "奥地利": "Austrija", + "丹麦": "Danija", + "瑞典": "Švedija", + "挪威": "Norvegija", + "波兰": "Lenkija", + "秘鲁": "Peru", + "智利": "Čilė", + "哥伦比亚": "Kolumbija", + "委内瑞拉": "Venesuela", + "葡萄牙": "Portugalija", + "卢森堡": "Liuksemburgas", + "爱尔兰": "Airija", + "冰岛": "Islandija", + "阿尔巴尼亚": "Albanija", + "马耳他": "Malta", + "塞浦路斯": "Kipras", + "芬兰": "Suomija", + "保加利亚": "Bulgarija", + "立陶宛": "Lietuva", + "拉脱维亚": "Latvija", + "爱沙尼亚": "Estija", + "乌克兰": "Ukraina", + "塞尔维亚": "Serbija", + "克罗地亚": "Kroatija", + "斯洛文尼亚": "Slovėnija", + "捷克": "Čekija", + "斯洛伐克": "Slovakija", + "危地马拉": "Gvatemala", + "萨尔瓦多": "Salvadoras", + "洪都拉斯": "Hondūras", + "尼加拉瓜": "Nikaragva", + "哥斯达黎加": "Kosta Rika", + "巴拿马": "Panama", + "海地": "Haitis", + "玻利维亚": "Bolivija", + "厄瓜多尔": "Ekvadoras", + "巴拉圭": "Paragvajus", + "乌拉圭": "Urugvajus", + "摩洛哥": "Marokas", + "阿尔及利亚": "Alžyras", + "突尼斯": "Tunisas", + "尼日利亚": "Nigerija", + "加纳": "Gana", + "埃塞俄比亚": "Etiopija", + "肯尼亚": "Kenija", + "坦桑尼亚": "Tanzanija", + "乌干达": "Uganda", + "孟加拉国": "Bangladešas", + "以色列": "Izraelis", + "黎巴嫩": "Libanas", + "约旦": "Jordanija", + "伊拉克": "Irakas", + "科威特": "Kuveitas", + "巴林": "Bahreinas", + "卡塔尔": "Kataras", + "阿曼": "Omanas", + "阿富汗": "Afganistanas", + "斯里兰卡": "Šri Lanka", + "缅甸": "Mianmaras", + "尼泊尔": "Nepalas", + "蒙古": "Mongolija", + "柬埔寨": "Kambodža", + "老挝": "Laosas", + "文莱": "Brunėjus", + "东帝汶": "Rytų Timoras", + "斐济": "Fidžis", + "所罗门群岛": "Saliamono Salos", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/lv_lv.dart b/lib/core/translations/language/lv_lv.dart index b8f239467..1fd98eedd 100644 --- a/lib/core/translations/language/lv_lv.dart +++ b/lib/core/translations/language/lv_lv.dart @@ -1,4 +1,5 @@ const Map lvLV = { + // 通用 'continue': 'Turpināt', 'confirm': 'Apstiprināt', @@ -18,6 +19,11 @@ const Map lvLV = { "unknownError": "Nezināma kļūda", "asrConnectionFailed": "Neizdevās izveidot savienojumu ar runas atpazīšanas pakalpojumu. Pārbaudiet tīklu vai mēģiniet vēlreiz vēlāk.", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "Pasaules savienošana, pāri skaņai", @@ -28,7 +34,7 @@ const Map lvLV = { "explore": "Izpētīt", "settings": "Iestatījumi", - // 语言 + // 语言列表 "followingSystem": "Sekot sistēmai", "chinese": "Ķīniešu", "english": "Angļu", @@ -72,7 +78,7 @@ const Map lvLV = { "arabic": "Arabiešu", "persian": "Persiešu", - // 登录页 + // 登录模块 "welcome": "Laipni lūdzam", "loginTips": "Piesakieties vai reģistrējieties ar savu tālruņa numuru vai e-pastu", @@ -101,13 +107,9 @@ const Map lvLV = { "resendVerificationCode": "Nosūtīt verifikācijas kodu vēlreiz", "login": "Pieteikties", "usePasswordLogin": "Pieteikties ar paroli", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans deklarācija", // Voitrans 声明 "welcomeToThisApp": "Laipni lūdzam Voitrans, lūdzu, uzmanīgi izlasiet", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", noklikšķinot uz 'Piekrītu un ienākt', jūs apliecināt, ka esat pilnībā izlasījis un piekrītat iepriekš minētajiem līgumiem. Noklikšķinot uz 'Nepiekrītu', jūs iziesiet no lietotnes.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Nepiekrītu", // 不同意 @@ -168,7 +170,7 @@ const Map lvLV = { 'right': 'Labais', 'checkConnectionStatusFailed': 'Savienojuma statusa pārbaude neizdevās', -// 发现页 + // 发现页 "searchAi": "Meklēt AI funkcijas...", "exploreSlogan": "Viedās austiņas, bezgalīgas iespējas", "exploreSlogan1": "Viedais pavadonis, bezgalīgas iespējas", @@ -192,6 +194,7 @@ const Map lvLV = { "usageStats": "Pārskatījumu statistika", "usageStatsInfo": "Pārskatiet jūsu lietotāja pārskatījumu statistiku", "scene": "Scenārijs", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", @@ -212,7 +215,6 @@ const Map lvLV = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -229,7 +231,6 @@ const Map lvLV = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - // 通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", @@ -238,88 +239,79 @@ const Map lvLV = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', 'remaining': 'Remaining', 'featureDescription': 'Feature Description', - // AI 功能卡片 + 'paymentSuccess': 'Maksājums veiksmīgs', + 'paymentFailed': 'Maksājums neizdevās', + 'gotIt': 'Sapratu', + 'paymentFailedTryAgain': 'Maksājums neizdevās. Lūdzu, mēģiniet vēlreiz.', + 'selectPaymentMethod': 'Izvēlieties maksājuma veidu', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Neizdevās izveidot WeChat Pay pasūtījumu', + 'alipayOrderCreateFailed': 'Neizdevās izveidot Alipay pasūtījumu', + 'appleOrderCreateFailed': 'Neizdevās izveidot Apple pasūtījumu', + 'googleOrderCreateFailed': 'Neizdevās izveidot Google pasūtījumu', + 'paypalOrderCreateFailed': 'Neizdevās izveidot PayPal pasūtījumu', + 'paymentException': 'Maksājuma izņēmums', + 'paymentLaunchFailed': 'Maksājuma palaišana neizdevās', + 'paymentExceptionWithError': 'Maksājuma izņēmums: @error', + 'paymentProcessingCheckLater': 'Jūsu pasūtījums tiek apstrādāts. Lūdzu, pārbaudiet vēlāk.', + 'paymentResultQueryException': 'Neizdevās pieprasīt maksājuma rezultātu: @error', + 'orderConfirmedQuotaRefreshed': 'Pasūtījums apstiprināts. Jūsu kvota ir atjaunināta.', + 'paymentCompletedConfirming': 'Maksājums pabeigts. Apstiprina…', + 'paymentCancelled': 'Maksājums atcelts', + 'paypalOpenedCompleteInBrowser': 'PayPal atvērts. Lūdzu, pabeidziet maksājumu pārlūkprogrammā.', + 'paypalOpenFailed': 'Nevar atvērt PayPal maksājuma lapu', + 'paymentTestTitle': 'Maksājuma tests', + 'paymentTestOrderInfo': 'Testa pasūtījuma informācija', + 'paymentTestProductId': 'Produkta ID', + 'paymentTestProductDescription': 'Produkta apraksts', + 'paymentTestWechatDescription': 'WeChat Pay maksājuma tests', + 'paymentTestAlipayDescription': 'Alipay maksājuma tests', + 'paymentTestAmount': 'Summa', + 'paymentTestSelectAmount': 'Izvēlieties testa summu', + 'paying': 'Maksā...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Maksājuma statuss', + 'errorInfoWithMessage': 'Kļūda: @message', + 'retest': 'Atkārtots tests', + 'paymentTestInstructionsTitle': 'Instrukcijas', + 'paymentTestInstructionsContent': '1. Izvēlieties testa summu (ieteicams: ¥0,01)\n2. Noklikšķiniet uz maksājuma pogas, lai sāktu\n3. Pabeidziet maksājumu maksājuma lietotnē\n4. Atgriezieties, lai pārbaudītu rezultātu', + 'startingWechatPayment': 'Palaižam WeChat Pay...', + 'startingAlipayPayment': 'Palaižam Alipay...', + 'wechatPaymentSuccess': 'WeChat Pay veiksmīgs!', + 'wechatPaymentFailed': 'WeChat Pay neizdevās', + 'wechatPaymentLaunchFailed': 'Neizdevās palaist WeChat Pay', + 'cannotLaunchWechatPayment': 'Nevar palaist WeChat Pay', + 'wechatPaymentException': 'WeChat Pay izņēmums', + 'wechatPaymentTestCompleted': 'WeChat Pay tests pabeigts', + 'alipayPaymentSuccess': 'Alipay veiksmīgs!', + 'alipayPaymentFailed': 'Alipay neizdevās', + 'alipayPaymentLaunchFailed': 'Neizdevās palaist Alipay', + 'cannotLaunchAlipayPayment': 'Nevar palaist Alipay', + 'alipayPaymentException': 'Alipay izņēmums', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": + 'Insufficient balance, please go to the corresponding recharge page to recharge.', + "recharge": 'Go to Recharge', + "aiMemberExpiredDesc": + 'AI membership expired, please go to the membership recharge page to renew.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', 'aiHeaderDesc2': @@ -342,7 +334,46 @@ const Map lvLV = { 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Real-time Transcription', + 'sceneLexicon': 'Scenario Glossary', + 'subtitleDisplay': 'Subtitles', + 'transHeaderDesc1': + 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', + 'translateZhEn': 'Chinese-English translation', + 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', + 'multiLangTextTranslation': 'Multilingual text translation', + 'termOptimizationContextPreserve': + 'Terminology optimization and context preservation', + 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', + 'personalVocabularyMemory': 'Personal vocabulary memory', + 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', + 'colorHighContrast': 'High color contrast', + 'transDisclaimer': + 'Translation performance depends on microphone, network latency, and ambient noise.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Meeting Recording', + 'transcriptionAndSummary': 'Transcription & Summary', + 'keywordSearch': 'Keyword Search', + 'collaborationSharing': 'Collaboration & Sharing', + 'meetingHeaderDesc1': + 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'meetingHeaderDesc2': + 'Suitable for business meetings, class notes, and interview minutes.', + 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingSpeakerTagging': 'Speaker labeling', + 'meetingLongAudioTranscription': 'Long audio transcription', + 'meetingKeyPointSummary': 'Key point extraction', + 'meetingTopicNameSearch': 'Search by topic/name', + 'meetingTimelineJump': 'Timeline jump', + 'meetingExportSummary': 'Export minutes', + 'meetingMultiPlatformShare': 'Share across platforms', + 'meetingDisclaimer': + 'Use in quiet environments; performance depends on microphone and network.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', 'higherQuota': 'Higher usage quota', 'lowerUnitPrice': 'Lower unit price', @@ -358,7 +389,32 @@ const Map lvLV = { 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Translation Basic 100', + 'trans_002_name': 'Translation Basic 500', + 'trans_003_name': 'Translation Basic 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': 'Includes 100 translations (voice/text).', + 'trans_002_desc': 'Includes 500 translations (voice/text).', + 'trans_003_desc': 'Includes 1000 translations (voice/text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "Izlaist", 'next': 'Next', 'sayLilyHint': 'Say "Lily Lily" to the mic', @@ -369,7 +425,6 @@ const Map lvLV = { 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', 'confirmInput': 'Confirm Input', 'guideClickSendPrefix': 'Tap send, ', - // AI 引导步骤 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', 'guideWeatherInput': 'What’s the weather today?', 'guideWeatherSend': 'Lily will report the weather in real time', @@ -396,7 +451,7 @@ const Map lvLV = { 'guideSmsSend': 'Lily will send the message', 'guideSmsEnd': 'Message sent—voice control is convenient', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Sākt sapulci", 'edit': 'Rediģēt', 'delete': 'Dzēst', @@ -408,8 +463,6 @@ const Map lvLV = { 'recordingDetails': 'Ieraksta detaļas', 'aiSummary': 'AI kopsavilkums', 'meetingTranscript': 'Sapulces atšifrējums', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -460,7 +513,6 @@ const Map lvLV = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -469,6 +521,97 @@ const Map lvLV = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': 'Izveidot', + 'templateDetails': 'Veidnes informācija', + 'tag': 'Birka', + 'description': 'Apraksts', + 'template': 'Veidne', + 'deleteTemplate': 'Dzēst veidni', + 'deleteTemplateConfirm': 'Vai esat pārliecināts, ka vēlaties dzēst šo veidni?', + 'editTemplate': 'Rediģēt veidni', + 'createTemplate': 'Izveidot veidni', + 'name': 'Nosaukums', + 'templateContentHint': 'Lūdzu, ievadiet veidnes saturu! Padoms: Noklikšķiniet uz AI pogas augšpusē, lai ātri ģenerētu veidnes saturu, pamatojoties uz ievadīto nosaukumu un aprakstu', + 'inputNameHint': 'Lūdzu, ievadiet nosaukumu', + 'inputDescHint': 'Lūdzu, ievadiet aprakstu', + 'custom': 'Pielāgots', + 'pleaseEnter': 'Lūdzu ievadiet', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': + 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Saglabāt domu karti', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'Eksportēt', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Piemērot visām šī runātāja rindkopām', + 'summaryWillBeUpdatedAutomatically': + 'Kopsavilkums tiks automātiski atjaunināts, pamatojoties uz veidni', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -487,7 +630,7 @@ const Map lvLV = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -523,8 +666,6 @@ const Map lvLV = { 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -553,105 +694,26 @@ const Map lvLV = { 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Piemērot visām šī runātāja rindkopām', - 'summaryWillBeUpdatedAutomatically': - 'Kopsavilkums tiks automātiski atjaunināts, pamatojoties uz veidni', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': 'Analīze neizdevās, lūdzu, mēģiniet vēlreiz vēlāk', + 'transcriptionFailed': 'Transkripcija neizdevās, lūdzu, mēģiniet vēlreiz vēlāk', + 'summaryFailed': 'Kopsavilkums neizdevās, lūdzu, mēģiniet vēlreiz vēlāk', + 'summaryFailedShort': 'Kopsavilkums neizdevās', + 'transcriptionFailedShort': 'Transkripcija neizdevās', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Audio atskaņotājs nav gatavs, lūdzu, uzgaidiet', + 'playFailed': 'Atskaņošana neizdevās', + 'audioFileNotFound': 'Audio fails nav atrasts', + 'fetchingAudio': 'Iegūst audio no mākoņa...', + 'playerLoadFailed': 'Audio atskaņotāja ielāde neizdevās', // 设置页 "systemSettings": "Sistēmas iestatījumi", @@ -705,26 +767,15 @@ const Map lvLV = { "BLE austiņu programmaparatūras versijas jaunināšana", "deviceManagement": "Ierīču pārvaldība", "manageConnectedDevices": "Pārvaldīt savienotās Bluetooth ierīces", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Pašlaik jums ir jaunākā versija {version}', 'checkUpdateFailed': 'Neizdevās pārbaudīt atjauninājumus', 'networkErrorRetry': 'Tīkla kļūda, lūdzu, mēģiniet vēlreiz vēlāk', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Reāllaika balss tērzēšana", "realtimeVoiceChatInfo": "Izbaudiet inteliģentās balss mijiedarbības funkciju (funkcijas priekšskatījums)", "loading": "Ielādē...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -740,8 +791,7 @@ const Map lvLV = { "Are you sure you want to unbind device \"{deviceName}\"?", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Notīrīt tērzēšanas vēsturi", "online": "Tiešsaistē", @@ -772,8 +822,9 @@ const Map lvLV = { "swipeUpForMore": "Velciet uz augšu, lai redzētu vairāk", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': 'Kad iespējots: AI netiks pārtraukts ar jūsu balsi, kamēr tas runā, un var apstrādāt tikai vienu sarunas kārtu vienlaicīgi. Lai sāktu jaunu kārtu, vienkārši pasakiet modināšanas vārdu.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -785,7 +836,7 @@ const Map lvLV = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Sveiki! Esmu **SjaoJaņ**, es varu jums palīdzēt:\n\n' '• Atbildēt uz jautājumiem un sniegt informāciju\n\n' '• Reāllaika balss tulkošana\n\n' @@ -805,11 +856,11 @@ const Map lvLV = { 'startVoiceInput': 'Sākt balss ievadi', 'startPhoneCallMode': 'Sākt zvanīšanas režīmu, sākt balss ievadi', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Ievadiet savu ziņu šeit...', // 全屏编辑器输入提示 'characterCount': '{count} rakstzīmes', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopēt', 'copySuccess': 'Veiksmīgi nokopēts', 'report': 'Ziņot', @@ -817,7 +868,6 @@ const Map lvLV = { 'submitFailed': 'Iesniegšana neizdevās', 'reportSubmitted': 'Ziņojums iesniegts, mēs to apstrādāsim pēc iespējas ātrāk', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Kaitīgs/Nedrošs', 'pornographicVulgar': 'Pornogrāfisks/Vulgārs', 'misleadingAttack': 'Maldinošs/Uzbrukums', @@ -827,17 +877,14 @@ const Map lvLV = { 'other': 'Cits', 'reportDescriptionHint': 'Mēs vēlamies zināt, kāpēc jūs ziņojat, jūs varat aprakstīt problēmu, ar kuru saskārāties.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Ģenerējis AI', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'Šeit ir dažas ieteicamās dziesmas:', 'playList': 'Atskaņošanas saraksts', 'moreMusic': 'Vairāk mūzikas', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'stundas', // 小时单位 @@ -852,7 +899,7 @@ const Map lvLV = { "bicycling": "Riteņbraukšana", "tsransit": "Sabiedriskais transports", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Laikapstākļu pieprasījums:', 'highest': 'Augstākā', 'lowest': 'Zemākā', @@ -882,18 +929,8 @@ const Map lvLV = { "friday": "Piekt.", "saturday": "Sest.", "sunday": "Svēt.", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Saulains", "partlyCloudy": "Daļēji apmācies", "partlySunny": "Daļēji saulains", @@ -914,7 +951,130 @@ const Map lvLV = { "haze": "Dūmaka", "strongWind": "Stiprs vējš", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "Tulkošanas vēsture", + "enableRecording": "Iespējot ierakstīšanu", + "viewAudioFiles": "Skatīt audio failus", + "headsetUser": "Austiņu lietotājs", + "phoneUser": "Tālruņa lietotājs", + "selectSourceLanguage": "Izvēlēties avota valodu", + "selectTargetLanguage": "Izvēlēties mērķa valodu", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": + "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Vēl nav vēstures", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "Notīrīt vēsturi", + "clearHistoryConfirm": + "Vai esat pārliecināts, ka vēlaties notīrīt visu tulkošanas vēsturi? Šī darbība nav atgriezeniska.", + "unknownLanguage": "Nezināma valoda", + "deleteSessionRecord": "Dzēst sesijas ierakstu", + "deleteSessionConfirm": + "Vai esat pārliecināts, ka vēlaties dzēst visus šīs sesijas tulkošanas ierakstus? Šī darbība nav atgriezeniska.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": + "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": + "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": + "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": + "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Tulkot audio failus", + "noAudioFiles": "Vēl nav audio failu", + "calculating": "Aprēķina...", + "playing": "Atskaņo...", + "paused": "Pauzēts", + "clickToPlay": "Noklikšķiniet, lai atskaņotu", + "rename": "Pārdēvēt", + "smartTranscription": "Viedā transkripcija", + "renameAudioFile": "Pārdēvēt audio failu", + "enterNewFileName": "Lūdzu, ievadiet jaunu faila nosaukumu", + + // 翻译模块 - 翻译详情 + "originalRecord": "Oriģinālais ieraksts", + "recordSummary": "Ieraksta kopsavilkums", + "clickToGenerateSummary": + "Noklikšķiniet uz pogas zemāk, lai ģenerētu sesijas kopsavilkumu", + "summaryContent": "Kopsavilkuma saturs", + "copied": "Nokopēts", + "summaryCopiledToClipboard": "Kopsavilkums nokopēts starpliktuvē", + "extractSummary": "Izvilkt kopsavilkumu", + "summaryGenerated": "Kopsavilkums ģenerēts", + "generating": "Ģenerē...", + "regenerate": "Ģenerēt no jauna", + "summaryTimeoutMessage": + "Kopsavilkuma ģenerēšanas pieprasījums ir beidzies, iespējams, tīkla problēmu vai aizņemta servera dēļ.", + "deleteTranslationRecord": "Dzēst tulkošanas ierakstu", + "deleteTranslationConfirm": + "Vai esat pārliecināts, ka vēlaties dzēst šo tulkošanas ierakstu? Šī darbība nav atgriezeniska.", + "originalText": "Oriģinālais teksts", + "translatedText": "Tulkotais teksts", + "sessionSummary": "Sesijas kopsavilkums", + "cannotShare": "Nevar dalīties", + "generateSummaryFirst": "Lūdzu, vispirms ģenerējiet kopsavilkumu", + "translationSessionRecord": "Tulkošanas sesijas ieraksts", + + // 个人资料模块 "editProfile": "Rediģēt personisko informāciju", "avatar": "Avatars", "nickname": "Segvārds", @@ -931,8 +1091,6 @@ const Map lvLV = { 'Vai esat pārliecināts, ka vēlaties neatgriezeniski dzēst savu kontu? Šī darbība nav atgriezeniska.', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'Tīkla savienojuma kļūda, lūdzu, pārbaudiet tīkla iestatījumus un mēģiniet vēlreiz', 'serverTemporarilyUnavailable': @@ -950,10 +1108,6 @@ const Map lvLV = { 'Tīkla savienojuma kļūda, lūdzu, pārbaudiet tīkla iestatījumus', 'serverInternalErrorRetryLater': 'Iekšēja servera kļūda, lūdzu, mēģiniet vēlreiz vēlāk', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Attēla saspiešana neizdevās', 'avatarUpdateFailed': 'Avatara atjaunināšana neizdevās', 'usernameCannotBeEmpty': 'Lietotājvārds nevar būt tukšs', @@ -965,8 +1119,6 @@ const Map lvLV = { 'accountPermanentlyDeleted': 'Konts ir neatgriezeniski dzēsts', 'deleteAccountFailedRetry': 'Konta dzēšana neizdevās, lūdzu, mēģiniet vēlreiz', - - // 账号服务相关 'clearUserDataFailed': 'Neizdevās notīrīt lietotāja datus', // 清理用户数据失败 'deleteUserDataFailed': 'Neizdevās dzēst lietotāja datus', // 删除用户数据失败 'thirdPartyLogoutSuccess': @@ -981,7 +1133,12 @@ const Map lvLV = { 'accountServiceInitialized': 'Konta pakalpojums ir inicializēts', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': + 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', 'getPermissionStatusFailed': 'Neizdevās iegūt atļaujas statusu', 'communicationPermissions': 'Komunikācijas atļaujas', 'bluetoothPermissions': 'Bluetooth Permissions', @@ -994,7 +1151,6 @@ const Map lvLV = { 'phone': 'Tālrunis', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'Rakstīt kalendārā', @@ -1050,8 +1206,6 @@ const Map lvLV = { 'permanentDenialText': 'Jūs esat neatgriezeniski atteicis {permission} atļauju, lūdzu, dodieties uz lietotnes iestatījumiem, lai to iespējotu', 'goToSettings': 'Doties uz iestatījumiem', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': @@ -1076,7 +1230,6 @@ const Map lvLV = { 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', @@ -1086,8 +1239,6 @@ const Map lvLV = { 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', 'storagePermissionPermanentDenial': 'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', - - //permission_util.dart 'permissionUtilNeed': 'Need ', 'permissionUtilPermission': ' Permission', 'permissionUtilRestricted': ' Permission Restricted', @@ -1095,7 +1246,20 @@ const Map lvLV = { 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigācija notiek', + 'native.notification.navigation.keepRunning': 'Notiek navigācija, turiet lietotni atvērtu', + 'native.notification.bleAgent.running': 'Balss asistenta aģents darbojas', + 'native.notification.audioRecording.recording': 'Notiek audio ierakstīšana, pieskarieties, lai atgrieztos lietotnē', + 'native.notification.music.waiting': 'Gaida atskaņošanu', + 'native.notification.music.previous': 'Iepriekšējais', + 'native.notification.music.next': 'Nākamais', + 'native.notification.music.play': 'Atskaņot', + 'native.notification.music.pause': 'Pauze', + 'native.notification.qqMusic.playing': 'Atskaņo mūziku', + + // 版本更新 'newVersionFound': 'Atrasta jauna versija', // 版本更新对话框标题 'remindLater': 'Atgādināt vēlāk', // 稍后提醒按钮 'updateNow': 'Atjaunināt tagad', // 立即更新按钮 @@ -1106,253 +1270,7 @@ const Map lvLV = { 'updateErrorRetry': 'Atjaunināšanas laikā radās kļūda, lūdzu, mēģiniet vēlreiz vēlāk', // 更新错误重试提示 - //国家列表 - "邮箱": "E-pasts", - "中国": "Ķīna", - "美国": "ASV", - "加拿大": "Kanāda", - "俄罗斯": "Krievija", - "英国": "Apvienotā Karaliste", - "德国": "Vācija", - "意大利": "Itālija", - "法国": "Francija", - "西班牙": "Spānija", - "南非": "Dienvidāfrika", - "沙特阿拉伯": "Saūda Arābija", - "土耳其": "Turcija", - "日本": "Japāna", - "韩国": "Dienvidkoreja", - "新加坡": "Singapūra", - "马来西亚": "Malaizija", - "泰国": "Taizeme", - "越南": "Vjetnama", - "印度": "Indija", - "巴基斯坦": "Pakistāna", - "菲律宾": "Filipīnas", - "印度尼西亚": "Indonēzija", - "阿联酋": "AAE", - "墨西哥": "Meksika", - "巴西": "Brazīlija", - "阿根廷": "Argentīna", - "澳大利亚": "Austrālija", - "新西兰": "Jaunzēlande", - "中国香港": "Honkonga (Ķīna)", - "中国澳门": "Makao (Ķīna)", - "中国台湾": "Taivāna (Ķīna)", - "埃及": "Ēģipte", - "希腊": "Grieķija", - "荷兰": "Nīderlande", - "比利时": "Beļģija", - "匈牙利": "Ungārija", - "罗马尼亚": "Rumānija", - "瑞士": "Šveice", - "奥地利": "Austrija", - "丹麦": "Dānija", - "瑞典": "Zviedrija", - "挪威": "Norvēģija", - "波兰": "Polija", - "秘鲁": "Peru", - "智利": "Čīle", - "哥伦比亚": "Kolumbija", - "委内瑞拉": "Venecuēla", - "葡萄牙": "Portugāle", - "卢森堡": "Luksemburga", - "爱尔兰": "Īrija", - "冰岛": "Islande", - "阿尔巴尼亚": "Albānija", - "马耳他": "Malta", - "塞浦路斯": "Kipra", - "芬兰": "Somija", - "保加利亚": "Bulgārija", - "立陶宛": "Lietuva", - "拉脱维亚": "Latvija", - "爱沙尼亚": "Igaunija", - "乌克兰": "Ukraina", - "塞尔维亚": "Serbija", - "克罗地亚": "Horvātija", - "斯洛文尼亚": "Slovēnija", - "捷克": "Čehija", - "斯洛伐克": "Slovākija", - "危地马拉": "Gvatemala", - "萨尔瓦多": "Salvadora", - "洪都拉斯": "Hondurasa", - "尼加拉瓜": "Nikaragva", - "哥斯达黎加": "Kostarika", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolīvija", - "厄瓜多尔": "Ekvadora", - "巴拉圭": "Paragvaja", - "乌拉圭": "Urugvaja", - "摩洛哥": "Maroka", - "阿尔及利亚": "Alžīrija", - "突尼斯": "Tunisija", - "尼日利亚": "Nigērija", - "加纳": "Gana", - "埃塞俄比亚": "Etiopija", - "肯尼亚": "Kenija", - "坦桑尼亚": "Tanzānija", - "乌干达": "Uganda", - "孟加拉国": "Bangladeša", - "以色列": "Izraēla", - "黎巴嫩": "Libāna", - "约旦": "Jordānija", - "伊拉克": "Irāka", - "科威特": "Kuveita", - "巴林": "Bahreina", - "卡塔尔": "Katara", - "阿曼": "Omāna", - "阿富汗": "Afganistāna", - "斯里兰卡": "Šrilanka", - "缅甸": "Mjanma", - "尼泊尔": "Nepāla", - "蒙古": "Mongolija", - "柬埔寨": "Kambodža", - "老挝": "Laosa", - "文莱": "Bruneja", - "东帝汶": "Austrumtimora", - "斐济": "Fidži", - "所罗门群岛": "Zālamana Salas", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Tulkošanas vēsture", - "enableRecording": "Iespējot ierakstīšanu", - "viewAudioFiles": "Skatīt audio failus", - "headsetUser": "Austiņu lietotājs", - "phoneUser": "Tālruņa lietotājs", - "selectSourceLanguage": "Izvēlēties avota valodu", - "selectTargetLanguage": "Izvēlēties mērķa valodu", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Vēl nav vēstures", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Notīrīt vēsturi", - "clearHistoryConfirm": - "Vai esat pārliecināts, ka vēlaties notīrīt visu tulkošanas vēsturi? Šī darbība nav atgriezeniska.", - "unknownLanguage": "Nezināma valoda", - "deleteSessionRecord": "Dzēst sesijas ierakstu", - "deleteSessionConfirm": - "Vai esat pārliecināts, ka vēlaties dzēst visus šīs sesijas tulkošanas ierakstus? Šī darbība nav atgriezeniska.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Tulkot audio failus", - "noAudioFiles": "Vēl nav audio failu", - "calculating": "Aprēķina...", - "playing": "Atskaņo...", - "paused": "Pauzēts", - "clickToPlay": "Noklikšķiniet, lai atskaņotu", - "rename": "Pārdēvēt", - "smartTranscription": "Viedā transkripcija", - "renameAudioFile": "Pārdēvēt audio failu", - "enterNewFileName": "Lūdzu, ievadiet jaunu faila nosaukumu", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Oriģinālais ieraksts", - "recordSummary": "Ieraksta kopsavilkums", - "clickToGenerateSummary": - "Noklikšķiniet uz pogas zemāk, lai ģenerētu sesijas kopsavilkumu", - "summaryContent": "Kopsavilkuma saturs", - "copied": "Nokopēts", - "summaryCopiledToClipboard": "Kopsavilkums nokopēts starpliktuvē", - "extractSummary": "Izvilkt kopsavilkumu", - "summaryGenerated": "Kopsavilkums ģenerēts", - "generating": "Ģenerē...", - "regenerate": "Ģenerēt no jauna", - "summaryTimeoutMessage": - "Kopsavilkuma ģenerēšanas pieprasījums ir beidzies, iespējams, tīkla problēmu vai aizņemta servera dēļ.", - "deleteTranslationRecord": "Dzēst tulkošanas ierakstu", - "deleteTranslationConfirm": - "Vai esat pārliecināts, ka vēlaties dzēst šo tulkošanas ierakstu? Šī darbība nav atgriezeniska.", - "originalText": "Oriģinālais teksts", - "translatedText": "Tulkotais teksts", - "sessionSummary": "Sesijas kopsavilkums", - "cannotShare": "Nevar dalīties", - "generateSummaryFirst": "Lūdzu, vispirms ģenerējiet kopsavilkumu", - "translationSessionRecord": "Tulkošanas sesijas ieraksts", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Ierīces savienošana pārī", "connectYourDeepSoundHeadset": "Savienojiet savas Voitrans austiņas", "bind": "Saistīt", @@ -1361,14 +1279,11 @@ const Map lvLV = { "autoInputCode": "Automātiska koda ievade", "skipBinding": "Izlaist saistīšanu", "rescan": "Skenēt vēlreiz", - "verifyingDevice": "Pārbauda ierīci...", "confirmBinding": "Apstiprināt saistīšanu", "associatingDevice": "Asociē ierīci...", "goToBluetoothSettings": "Doties uz Bluetooth iestatījumiem", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Gatavs savienošanai pārī", "preparingPairingEnvironment": "Sagatavo vidi savienošanai pārī...", "connectDeepSoundViaSystemBluetooth": @@ -1378,8 +1293,6 @@ const Map lvLV = { "waitingCompletePairing": "Lūdzu, uzgaidiet, pabeidz savienošanu pārī...", "pairingSuccessRedirecting": "Savienošana pārī veiksmīga! Pāradresē uz sākumlapu...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Lūdzu, pārliecinieties, ka esat savienots ar Voitrans ierīci", "deviceAlreadyBoundToOtherAccount": "Šī ierīce jau ir saistīta ar citu kontu", @@ -1391,19 +1304,12 @@ const Map lvLV = { "authorizationFailedCheckCode": "Autorizācija neizdevās, lūdzu, pārbaudiet, vai autorizācijas kods ir pareizs", "pairingFailedRetry": "Savienošana pārī neizdevās, lūdzu, mēģiniet vēlreiz", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Lūdzu, iespējojiet Bluetooth', 'deviceDisconnected': 'Ierīce atvienota', 'readyToStartPairing': 'Gatavs sākt savienošanu pārī', 'checkingEnvironment': 'Pārbauda vidi...', 'ensureHeadsetOnAndPairingMode': 'Lūdzu, pārliecinieties, ka austiņas ir ieslēgtas un savienošanas pārī režīmā', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Izveido drošu savienojumu...', 'needManualBindingAuthCode': 'Nepieciešams manuālas saistīšanas autorizācijas kods...', @@ -1426,8 +1332,6 @@ const Map lvLV = { 'bleConnectionFailed': 'BLE savienojums neizdevās', 'deviceAuthorizationFailedCheckCode': 'Ierīces autorizācija neizdevās, lūdzu, pārbaudiet autorizācijas kodu', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1440,7 +1344,18 @@ const Map lvLV = { 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Lietotāju atsauksmes", 'feedbackInfo': 'Sniedziet atsauksmes vai ieteikumus', 'feedbackDescription': @@ -1483,7 +1398,7 @@ const Map lvLV = { "removeEarbudsEnsureBattery": "Izņemiet abas austiņas un pārliecinieties, ka abu baterijas līmenis ir virs 20%", - // 音乐列表页面 + // 音乐模块 "noMusic": "Nav mūzikas", // 暂无音乐 "noPlayingMusic": "Netiek atskaņota mūzika", // 暂无播放音乐 "unknownSong": "Nezināma dziesma", // 未知歌曲 @@ -1531,22 +1446,122 @@ const Map lvLV = { "波斯语": "Persiešu", "斯瓦希里语": "Svahili", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "E-pasts", + "中国": "Ķīna", + "美国": "ASV", + "加拿大": "Kanāda", + "俄罗斯": "Krievija", + "英国": "Apvienotā Karaliste", + "德国": "Vācija", + "意大利": "Itālija", + "法国": "Francija", + "西班牙": "Spānija", + "南非": "Dienvidāfrika", + "沙特阿拉伯": "Saūda Arābija", + "土耳其": "Turcija", + "日本": "Japāna", + "韩国": "Dienvidkoreja", + "新加坡": "Singapūra", + "马来西亚": "Malaizija", + "泰国": "Taizeme", + "越南": "Vjetnama", + "印度": "Indija", + "巴基斯坦": "Pakistāna", + "菲律宾": "Filipīnas", + "印度尼西亚": "Indonēzija", + "阿联酋": "AAE", + "墨西哥": "Meksika", + "巴西": "Brazīlija", + "阿根廷": "Argentīna", + "澳大利亚": "Austrālija", + "新西兰": "Jaunzēlande", + "中国香港": "Honkonga (Ķīna)", + "中国澳门": "Makao (Ķīna)", + "中国台湾": "Taivāna (Ķīna)", + "埃及": "Ēģipte", + "希腊": "Grieķija", + "荷兰": "Nīderlande", + "比利时": "Beļģija", + "匈牙利": "Ungārija", + "罗马尼亚": "Rumānija", + "瑞士": "Šveice", + "奥地利": "Austrija", + "丹麦": "Dānija", + "瑞典": "Zviedrija", + "挪威": "Norvēģija", + "波兰": "Polija", + "秘鲁": "Peru", + "智利": "Čīle", + "哥伦比亚": "Kolumbija", + "委内瑞拉": "Venecuēla", + "葡萄牙": "Portugāle", + "卢森堡": "Luksemburga", + "爱尔兰": "Īrija", + "冰岛": "Islande", + "阿尔巴尼亚": "Albānija", + "马耳他": "Malta", + "塞浦路斯": "Kipra", + "芬兰": "Somija", + "保加利亚": "Bulgārija", + "立陶宛": "Lietuva", + "拉脱维亚": "Latvija", + "爱沙尼亚": "Igaunija", + "乌克兰": "Ukraina", + "塞尔维亚": "Serbija", + "克罗地亚": "Horvātija", + "斯洛文尼亚": "Slovēnija", + "捷克": "Čehija", + "斯洛伐克": "Slovākija", + "危地马拉": "Gvatemala", + "萨尔瓦多": "Salvadora", + "洪都拉斯": "Hondurasa", + "尼加拉瓜": "Nikaragva", + "哥斯达黎加": "Kostarika", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Bolīvija", + "厄瓜多尔": "Ekvadora", + "巴拉圭": "Paragvaja", + "乌拉圭": "Urugvaja", + "摩洛哥": "Maroka", + "阿尔及利亚": "Alžīrija", + "突尼斯": "Tunisija", + "尼日利亚": "Nigērija", + "加纳": "Gana", + "埃塞俄比亚": "Etiopija", + "肯尼亚": "Kenija", + "坦桑尼亚": "Tanzānija", + "乌干达": "Uganda", + "孟加拉国": "Bangladeša", + "以色列": "Izraēla", + "黎巴嫩": "Libāna", + "约旦": "Jordānija", + "伊拉克": "Irāka", + "科威特": "Kuveita", + "巴林": "Bahreina", + "卡塔尔": "Katara", + "阿曼": "Omāna", + "阿富汗": "Afganistāna", + "斯里兰卡": "Šrilanka", + "缅甸": "Mjanma", + "尼泊尔": "Nepāla", + "蒙古": "Mongolija", + "柬埔寨": "Kambodža", + "老挝": "Laosa", + "文莱": "Bruneja", + "东帝汶": "Austrumtimora", + "斐济": "Fidži", + "所罗门群岛": "Zālamana Salas", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/ms_my.dart b/lib/core/translations/language/ms_my.dart index 74822d50e..1bc3ff392 100644 --- a/lib/core/translations/language/ms_my.dart +++ b/lib/core/translations/language/ms_my.dart @@ -1,4 +1,5 @@ const Map msMY = { + // 通用 'continue': 'Teruskan', 'confirm': 'Sahkan', @@ -18,6 +19,11 @@ const Map msMY = { "unknownError": "Ralat tidak diketahui", "asrConnectionFailed": "Sambungan ke perkhidmatan pengecaman suara gagal. Sila semak rangkaian atau cuba lagi nanti.", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "Menghubungkan dunia, melampaui suara", @@ -28,7 +34,7 @@ const Map msMY = { "explore": "Teroka", "settings": "Tetapan", - // 语言 + // 语言列表 "followingSystem": "Ikut Sistem", "chinese": "Bahasa Cina", "english": "Bahasa Inggeris", @@ -72,7 +78,7 @@ const Map msMY = { "arabic": "Bahasa Arab", "persian": "Bahasa Persian", - // 登录页 + // 登录模块 "welcome": "Selamat Datang", "loginTips": "Sila log masuk atau daftar dengan nombor telefon atau e-mel anda", @@ -101,13 +107,9 @@ const Map msMY = { "resendVerificationCode": "Hantar semula kod pengesahan", "login": "Log Masuk", "usePasswordLogin": "Log masuk dengan kata laluan", - - // 隐私政策弹窗 "loginDeclaration": "Pengisytiharan Voitrans", // Voitrans 声明 "welcomeToThisApp": "Selamat datang ke Voitrans, sila baca dengan teliti", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", dengan mengklik 'Setuju dan Masuk' bermakna anda telah membaca sepenuhnya dan bersetuju dengan perjanjian di atas. Mengklik 'Tidak Setuju' akan keluar dari aplikasi.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Tidak Setuju", // 不同意 @@ -167,7 +169,7 @@ const Map msMY = { 'right': 'Kanan', 'checkConnectionStatusFailed': 'Gagal menyemak status sambungan', -// 发现页 + // 发现页 "searchAi": "Cari fungsi AI...", "exploreSlogan": "Fon telinga pintar, kemungkinan tanpa had", "exploreSlogan1": "Teman pintar, kemungkinan tanpa had", @@ -191,6 +193,7 @@ const Map msMY = { "usageStats": "Statistik Penggunaan", "usageStatsInfo": "Lihat statistik penggunaan aplikasi", "scene": "Senario", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", @@ -211,7 +214,6 @@ const Map msMY = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -228,7 +230,6 @@ const Map msMY = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - // 通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", @@ -237,88 +238,79 @@ const Map msMY = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', 'remaining': 'Remaining', 'featureDescription': 'Feature Description', - // AI 功能卡片 + 'paymentSuccess': 'Pembayaran berjaya', + 'paymentFailed': 'Pembayaran gagal', + 'gotIt': 'Faham', + 'paymentFailedTryAgain': 'Pembayaran gagal. Sila cuba lagi.', + 'selectPaymentMethod': 'Pilih kaedah pembayaran', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Gagal mencipta pesanan WeChat', + 'alipayOrderCreateFailed': 'Gagal mencipta pesanan Alipay', + 'appleOrderCreateFailed': 'Gagal mencipta pesanan Apple', + 'googleOrderCreateFailed': 'Gagal mencipta pesanan Google', + 'paypalOrderCreateFailed': 'Gagal mencipta pesanan PayPal', + 'paymentException': 'Pembayaran tidak normal', + 'paymentLaunchFailed': 'Gagal membuka pembayaran', + 'paymentExceptionWithError': 'Pembayaran tidak normal: @error', + 'paymentProcessingCheckLater': 'Pesanan anda sedang diproses. Sila semak kemudian.', + 'paymentResultQueryException': 'Gagal menyemak keputusan pembayaran: @error', + 'orderConfirmedQuotaRefreshed': 'Pesanan disahkan. Kuota anda telah dikemas kini.', + 'paymentCompletedConfirming': 'Pembayaran selesai. Sedang mengesahkan…', + 'paymentCancelled': 'Pembayaran dibatalkan', + 'paypalOpenedCompleteInBrowser': 'PayPal telah dibuka. Sila selesaikan pembayaran dalam pelayar.', + 'paypalOpenFailed': 'Tidak dapat membuka halaman pembayaran PayPal', + 'paymentTestTitle': 'Ujian Pembayaran', + 'paymentTestOrderInfo': 'Maklumat Pesanan Ujian', + 'paymentTestProductId': 'ID Produk', + 'paymentTestProductDescription': 'Penerangan produk', + 'paymentTestWechatDescription': 'Ujian pembayaran WeChat', + 'paymentTestAlipayDescription': 'Ujian pembayaran Alipay', + 'paymentTestAmount': 'Jumlah', + 'paymentTestSelectAmount': 'Pilih jumlah ujian', + 'paying': 'Sedang membayar...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Status pembayaran', + 'errorInfoWithMessage': 'Ralat: @message', + 'retest': 'Uji semula', + 'paymentTestInstructionsTitle': 'Arahan', + 'paymentTestInstructionsContent': '1. Pilih jumlah ujian (disyorkan: ¥0.01)\n2. Klik butang pembayaran untuk mula\n3. Selesaikan pembayaran dalam aplikasi pembayaran\n4. Kembali untuk menyemak keputusan', + 'startingWechatPayment': 'Membuka WeChat Pay...', + 'startingAlipayPayment': 'Membuka Alipay...', + 'wechatPaymentSuccess': 'Pembayaran WeChat Pay berjaya!', + 'wechatPaymentFailed': 'Pembayaran WeChat Pay gagal', + 'wechatPaymentLaunchFailed': 'Gagal membuka WeChat Pay', + 'cannotLaunchWechatPayment': 'Tidak dapat membuka WeChat Pay', + 'wechatPaymentException': 'WeChat Pay tidak normal', + 'wechatPaymentTestCompleted': 'Ujian pembayaran WeChat Pay selesai', + 'alipayPaymentSuccess': 'Pembayaran Alipay berjaya!', + 'alipayPaymentFailed': 'Pembayaran Alipay gagal', + 'alipayPaymentLaunchFailed': 'Gagal membuka Alipay', + 'cannotLaunchAlipayPayment': 'Tidak dapat membuka Alipay', + 'alipayPaymentException': 'Alipay tidak normal', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": + 'Insufficient balance, please go to the corresponding recharge page to recharge.', + "recharge": 'Go to Recharge', + "aiMemberExpiredDesc": + 'AI membership expired, please go to the membership recharge page to renew.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', 'aiHeaderDesc2': @@ -341,7 +333,46 @@ const Map msMY = { 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Real-time Transcription', + 'sceneLexicon': 'Scenario Glossary', + 'subtitleDisplay': 'Subtitles', + 'transHeaderDesc1': + 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', + 'translateZhEn': 'Chinese-English translation', + 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', + 'multiLangTextTranslation': 'Multilingual text translation', + 'termOptimizationContextPreserve': + 'Terminology optimization and context preservation', + 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', + 'personalVocabularyMemory': 'Personal vocabulary memory', + 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', + 'colorHighContrast': 'High color contrast', + 'transDisclaimer': + 'Translation performance depends on microphone, network latency, and ambient noise.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Meeting Recording', + 'transcriptionAndSummary': 'Transcription & Summary', + 'keywordSearch': 'Keyword Search', + 'collaborationSharing': 'Collaboration & Sharing', + 'meetingHeaderDesc1': + 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'meetingHeaderDesc2': + 'Suitable for business meetings, class notes, and interview minutes.', + 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingSpeakerTagging': 'Speaker labeling', + 'meetingLongAudioTranscription': 'Long audio transcription', + 'meetingKeyPointSummary': 'Key point extraction', + 'meetingTopicNameSearch': 'Search by topic/name', + 'meetingTimelineJump': 'Timeline jump', + 'meetingExportSummary': 'Export minutes', + 'meetingMultiPlatformShare': 'Share across platforms', + 'meetingDisclaimer': + 'Use in quiet environments; performance depends on microphone and network.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', 'higherQuota': 'Higher usage quota', 'lowerUnitPrice': 'Lower unit price', @@ -357,7 +388,32 @@ const Map msMY = { 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Translation Basic 100', + 'trans_002_name': 'Translation Basic 500', + 'trans_003_name': 'Translation Basic 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': 'Includes 100 translations (voice/text).', + 'trans_002_desc': 'Includes 500 translations (voice/text).', + 'trans_003_desc': 'Includes 1000 translations (voice/text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "Langkau", 'next': 'Next', 'sayLilyHint': 'Say "Lily Lily" to the mic', @@ -368,7 +424,6 @@ const Map msMY = { 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', 'confirmInput': 'Confirm Input', 'guideClickSendPrefix': 'Tap send, ', - // AI 引导步骤 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', 'guideWeatherInput': 'What’s the weather today?', 'guideWeatherSend': 'Lily will report the weather in real time', @@ -395,7 +450,7 @@ const Map msMY = { 'guideSmsSend': 'Lily will send the message', 'guideSmsEnd': 'Message sent—voice control is convenient', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Mula Mesyuarat", 'edit': 'Sunting', 'delete': 'Padam', @@ -407,8 +462,6 @@ const Map msMY = { 'recordingDetails': 'Butiran Rakaman', 'aiSummary': 'Ringkasan AI', 'meetingTranscript': 'Transkrip Mesyuarat', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -459,7 +512,6 @@ const Map msMY = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -468,6 +520,97 @@ const Map msMY = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': 'Cipta', + 'templateDetails': 'Butiran Templat', + 'tag': 'Tag', + 'description': 'Penerangan', + 'template': 'Templat', + 'deleteTemplate': 'Padam Templat', + 'deleteTemplateConfirm': 'Adakah anda pasti mahu memadamkan templat ini?', + 'editTemplate': 'Edit Templat', + 'createTemplate': 'Cipta Templat', + 'name': 'Nama', + 'templateContentHint': 'Sila masukkan kandungan templat! Petua: Klik butang AI di atas untuk menjana kandungan templat dengan cepat berdasarkan nama dan penerangan yang anda masukkan', + 'inputNameHint': 'Sila masukkan nama', + 'inputDescHint': 'Sila masukkan penerangan', + 'custom': 'Tersuai', + 'pleaseEnter': 'Sila masukkan', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': + 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Simpan Peta Minda', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'Eksport', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Guna pada semua perenggan penutur ini', + 'summaryWillBeUpdatedAutomatically': + 'Ringkasan akan dikemas kini secara automatik berdasarkan templat', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -486,7 +629,7 @@ const Map msMY = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -522,8 +665,6 @@ const Map msMY = { 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -552,105 +693,26 @@ const Map msMY = { 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Guna pada semua perenggan penutur ini', - 'summaryWillBeUpdatedAutomatically': - 'Ringkasan akan dikemas kini secara automatik berdasarkan templat', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': 'Analisis gagal, sila cuba lagi kemudian', + 'transcriptionFailed': 'Transkripsi gagal, sila cuba lagi kemudian', + 'summaryFailed': 'Ringkasan gagal, sila cuba lagi kemudian', + 'summaryFailedShort': 'Ringkasan gagal', + 'transcriptionFailedShort': 'Transkripsi gagal', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Pemain audio belum sedia, sila tunggu', + 'playFailed': 'Gagal memainkan', + 'audioFileNotFound': 'Fail audio tidak ditemui', + 'fetchingAudio': 'Mendapatkan audio dari awan...', + 'playerLoadFailed': 'Pemain audio gagal dimuatkan', // 设置页 "systemSettings": "Tetapan Sistem", @@ -702,26 +764,15 @@ const Map msMY = { "bleHeadsetFirmwareUpgrade": "Naik Taraf Versi Firmware Fon Kepala BLE", "deviceManagement": "Pengurusan Peranti", "manageConnectedDevices": "Urus peranti Bluetooth yang dipasangkan", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Anda sudah menggunakan versi terkini {version}', 'checkUpdateFailed': 'Gagal menyemak kemas kini', 'networkErrorRetry': 'Ralat rangkaian, sila cuba lagi nanti', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Sembang Suara Masa Nyata", "realtimeVoiceChatInfo": "Alami fungsi interaksi suara pintar (pratonton fungsi)", "loading": "Memuatkan...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -737,8 +788,7 @@ const Map msMY = { "Are you sure you want to unbind device \"{deviceName}\"?", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Kosongkan Sejarah Sembang", "online": "Dalam Talian", @@ -768,8 +818,9 @@ const Map msMY = { "swipeUpForMore": "Leret ke atas untuk lebih banyak", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': 'Apabila diaktifkan: AI tidak akan terganggu oleh suara anda semasa bercakap dan hanya boleh mengendalikan satu pusingan perbualan pada satu masa. Untuk memulakan pusingan baharu, sebut sahaja kata bangun.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -781,7 +832,7 @@ const Map msMY = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Helo! Saya **Lily**, saya boleh bantu anda:\n\n' '• Jawab soalan dan berikan maklumat\n\n' '• Terjemahan suara masa nyata\n\n' @@ -801,11 +852,11 @@ const Map msMY = { 'startVoiceInput': 'Mula input suara', 'startPhoneCallMode': 'Mula mod panggilan telefon, mula input suara', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Masukkan mesej anda di sini...', // 全屏编辑器输入提示 'characterCount': '{count} aksara', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Salin', 'copySuccess': 'Berjaya disalin', 'report': 'Lapor', @@ -813,7 +864,6 @@ const Map msMY = { 'submitFailed': 'Gagal dihantar', 'reportSubmitted': 'Laporan telah dihantar, kami akan memprosesnya secepat mungkin', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Berbahaya/Tidak Selamat', 'pornographicVulgar': 'Pornografi/Lucah', 'misleadingAttack': 'Mengelirukan/Serangan', @@ -823,17 +873,14 @@ const Map msMY = { 'other': 'Lain-lain', 'reportDescriptionHint': 'Kami ingin tahu sebab anda melaporkan, anda boleh menerangkan masalah yang anda hadapi.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Dihasilkan oleh AI', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'Berikut adalah beberapa muzik yang disyorkan:', 'playList': 'Senarai Main', 'moreMusic': 'Lagi Muzik', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'jam', // 小时单位 @@ -848,7 +895,7 @@ const Map msMY = { "bicycling": "Berbasikal", "tsransit": "Pengangkutan Awam", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Menyemak keadaan cuaca:', 'highest': 'Tertinggi', 'lowest': 'Terendah', @@ -878,18 +925,8 @@ const Map msMY = { "friday": "Jumaat", "saturday": "Sabtu", "sunday": "Ahad", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Cerah", "partlyCloudy": "Separuh Berawan", "partlySunny": "Separuh Cerah", @@ -910,7 +947,129 @@ const Map msMY = { "haze": "Jerebu", "strongWind": "Angin kencang", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "Sejarah Terjemahan", + "enableRecording": "Dayakan Rakaman", + "viewAudioFiles": "Lihat Fail Audio", + "headsetUser": "Pengguna Fon Kepala", + "phoneUser": "Pengguna Telefon", + "selectSourceLanguage": "Pilih bahasa sumber", + "selectTargetLanguage": "Pilih bahasa sasaran", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": + "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Tiada sejarah lagi", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "Kosongkan Sejarah", + "clearHistoryConfirm": + "Adakah anda pasti mahu mengosongkan semua sejarah terjemahan? Tindakan ini tidak boleh dibatalkan.", + "unknownLanguage": "Bahasa Tidak Diketahui", + "deleteSessionRecord": "Padam Rekod Sesi", + "deleteSessionConfirm": + "Adakah anda pasti mahu memadam semua rekod terjemahan untuk sesi ini? Tindakan ini tidak boleh dibatalkan.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": + "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": + "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": + "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": + "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Terjemah Fail Audio", + "noAudioFiles": "Tiada fail audio lagi", + "calculating": "Mengira...", + "playing": "Memainkan...", + "paused": "Dijeda", + "clickToPlay": "Klik untuk main", + "rename": "Namakan semula", + "smartTranscription": "Transkripsi Pintar", + "renameAudioFile": "Namakan semula fail audio", + "enterNewFileName": "Sila masukkan nama fail baharu", + + // 翻译模块 - 翻译详情 + "originalRecord": "Rekod Asal", + "recordSummary": "Ringkasan Rekod", + "clickToGenerateSummary": "Klik butang di bawah untuk menjana ringkasan sesi", + "summaryContent": "Kandungan Ringkasan", + "copied": "Disalin", + "summaryCopiledToClipboard": "Ringkasan telah disalin ke papan keratan", + "extractSummary": "Ekstrak Ringkasan", + "summaryGenerated": "Ringkasan telah dijana", + "generating": "Menjana...", + "regenerate": "Jana semula", + "summaryTimeoutMessage": + "Permintaan menjana ringkasan telah tamat masa, mungkin disebabkan oleh masalah rangkaian atau pelayan sibuk.", + "deleteTranslationRecord": "Padam Rekod Terjemahan", + "deleteTranslationConfirm": + "Adakah anda pasti mahu memadam rekod terjemahan ini? Tindakan ini tidak boleh dibatalkan.", + "originalText": "Teks Asal", + "translatedText": "Teks Terjemahan", + "sessionSummary": "Ringkasan Sesi", + "cannotShare": "Tidak dapat berkongsi", + "generateSummaryFirst": "Sila jana ringkasan terlebih dahulu", + "translationSessionRecord": "Rekod Sesi Terjemahan", + + // 个人资料模块 "editProfile": "Sunting Maklumat Peribadi", "avatar": "Avatar", "nickname": "Nama Samaran", @@ -926,8 +1085,6 @@ const Map msMY = { 'Adakah anda pasti mahu memadam akaun anda secara kekal? Tindakan ini tidak boleh dibatalkan', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'Sambungan rangkaian gagal, sila semak tetapan rangkaian anda dan cuba lagi', 'serverTemporarilyUnavailable': @@ -946,10 +1103,6 @@ const Map msMY = { 'Sambungan rangkaian gagal, sila semak tetapan rangkaian anda', 'serverInternalErrorRetryLater': 'Ralat dalaman pelayan, sila cuba lagi nanti', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Mampatan imej gagal', 'avatarUpdateFailed': 'Kemas kini avatar gagal', 'usernameCannotBeEmpty': 'Nama pengguna tidak boleh kosong', @@ -960,8 +1113,6 @@ const Map msMY = { 'logoutFailedRetry': 'Log keluar gagal, sila cuba lagi', 'accountPermanentlyDeleted': 'Akaun telah dipadam secara kekal', 'deleteAccountFailedRetry': 'Gagal memadam akaun, sila cuba lagi', - - // 账号服务相关 'clearUserDataFailed': 'Gagal mengosongkan data pengguna', // 清理用户数据失败 'deleteUserDataFailed': 'Gagal memadam data pengguna', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'Log keluar pihak ketiga berjaya', // 第三方登录退出成功 @@ -975,7 +1126,12 @@ const Map msMY = { 'accountServiceInitialized': 'Perkhidmatan Akaun telah dimulakan', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': + 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', 'getPermissionStatusFailed': 'Gagal mendapatkan status kebenaran', 'communicationPermissions': 'Kebenaran Komunikasi', 'bluetoothPermissions': 'Bluetooth Permissions', @@ -988,7 +1144,6 @@ const Map msMY = { 'phone': 'Telefon', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'Tulis Kalendar', @@ -1043,8 +1198,6 @@ const Map msMY = { 'permanentDenialText': 'Anda telah menafikan kebenaran {permission} secara kekal, sila pergi ke tetapan aplikasi untuk mendayakannya', 'goToSettings': 'Pergi ke Tetapan', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': @@ -1069,7 +1222,6 @@ const Map msMY = { 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', @@ -1079,8 +1231,6 @@ const Map msMY = { 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', 'storagePermissionPermanentDenial': 'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', - - //permission_util.dart 'permissionUtilNeed': 'Need ', 'permissionUtilPermission': ' Permission', 'permissionUtilRestricted': ' Permission Restricted', @@ -1088,7 +1238,20 @@ const Map msMY = { 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigasi sedang berjalan', + 'native.notification.navigation.keepRunning': 'Sedang menavigasi, pastikan aplikasi terus berjalan', + 'native.notification.bleAgent.running': 'Ejen pembantu suara sedang berjalan', + 'native.notification.audioRecording.recording': 'Sedang merakam audio, ketik untuk kembali ke aplikasi', + 'native.notification.music.waiting': 'Menunggu untuk dimainkan', + 'native.notification.music.previous': 'Sebelumnya', + 'native.notification.music.next': 'Seterusnya', + 'native.notification.music.play': 'Main', + 'native.notification.music.pause': 'Jeda', + 'native.notification.qqMusic.playing': 'Sedang memainkan muzik', + + // 版本更新 'newVersionFound': 'Versi Baharu Ditemui', // 版本更新对话框标题 'remindLater': 'Ingatkan Kemudian', // 稍后提醒按钮 'updateNow': 'Kemas Kini Sekarang', // 立即更新按钮 @@ -1099,252 +1262,7 @@ const Map msMY = { 'updateErrorRetry': 'Berlaku ralat semasa kemas kini, sila cuba lagi nanti', // 更新错误重试提示 - //国家列表 - "邮箱": "E-mel", - "中国": "China", - "美国": "Amerika Syarikat", - "加拿大": "Kanada", - "俄罗斯": "Rusia", - "英国": "United Kingdom", - "德国": "Jerman", - "意大利": "Itali", - "法国": "Perancis", - "西班牙": "Sepanyol", - "南非": "Afrika Selatan", - "沙特阿拉伯": "Arab Saudi", - "土耳其": "Turki", - "日本": "Jepun", - "韩国": "Korea Selatan", - "新加坡": "Singapura", - "马来西亚": "Malaysia", - "泰国": "Thailand", - "越南": "Vietnam", - "印度": "India", - "巴基斯坦": "Pakistan", - "菲律宾": "Filipina", - "印度尼西亚": "Indonesia", - "阿联酋": "Emiriah Arab Bersatu", - "墨西哥": "Mexico", - "巴西": "Brazil", - "阿根廷": "Argentina", - "澳大利亚": "Australia", - "新西兰": "New Zealand", - "中国香港": "Hong Kong (China)", - "中国澳门": "Macau (China)", - "中国台湾": "Taiwan (China)", - "埃及": "Mesir", - "希腊": "Greece", - "荷兰": "Belanda", - "比利时": "Belgium", - "匈牙利": "Hungary", - "罗马尼亚": "Romania", - "瑞士": "Switzerland", - "奥地利": "Austria", - "丹麦": "Denmark", - "瑞典": "Sweden", - "挪威": "Norway", - "波兰": "Poland", - "秘鲁": "Peru", - "智利": "Chile", - "哥伦比亚": "Colombia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugal", - "卢森堡": "Luxembourg", - "爱尔兰": "Ireland", - "冰岛": "Iceland", - "阿尔巴尼亚": "Albania", - "马耳他": "Malta", - "塞浦路斯": "Cyprus", - "芬兰": "Finland", - "保加利亚": "Bulgaria", - "立陶宛": "Lithuania", - "拉脱维亚": "Latvia", - "爱沙尼亚": "Estonia", - "乌克兰": "Ukraine", - "塞尔维亚": "Serbia", - "克罗地亚": "Croatia", - "斯洛文尼亚": "Slovenia", - "捷克": "Republik Czech", - "斯洛伐克": "Slovakia", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolivia", - "厄瓜多尔": "Ecuador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Morocco", - "阿尔及利亚": "Algeria", - "突尼斯": "Tunisia", - "尼日利亚": "Nigeria", - "加纳": "Ghana", - "埃塞俄比亚": "Ethiopia", - "肯尼亚": "Kenya", - "坦桑尼亚": "Tanzania", - "乌干达": "Uganda", - "孟加拉国": "Bangladesh", - "以色列": "Israel", - "黎巴嫩": "Lebanon", - "约旦": "Jordan", - "伊拉克": "Iraq", - "科威特": "Kuwait", - "巴林": "Bahrain", - "卡塔尔": "Qatar", - "阿曼": "Oman", - "阿富汗": "Afghanistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongolia", - "柬埔寨": "Cambodia", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "Timor-Leste", - "斐济": "Fiji", - "所罗门群岛": "Solomon Islands", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Sejarah Terjemahan", - "enableRecording": "Dayakan Rakaman", - "viewAudioFiles": "Lihat Fail Audio", - "headsetUser": "Pengguna Fon Kepala", - "phoneUser": "Pengguna Telefon", - "selectSourceLanguage": "Pilih bahasa sumber", - "selectTargetLanguage": "Pilih bahasa sasaran", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Tiada sejarah lagi", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Kosongkan Sejarah", - "clearHistoryConfirm": - "Adakah anda pasti mahu mengosongkan semua sejarah terjemahan? Tindakan ini tidak boleh dibatalkan.", - "unknownLanguage": "Bahasa Tidak Diketahui", - "deleteSessionRecord": "Padam Rekod Sesi", - "deleteSessionConfirm": - "Adakah anda pasti mahu memadam semua rekod terjemahan untuk sesi ini? Tindakan ini tidak boleh dibatalkan.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Terjemah Fail Audio", - "noAudioFiles": "Tiada fail audio lagi", - "calculating": "Mengira...", - "playing": "Memainkan...", - "paused": "Dijeda", - "clickToPlay": "Klik untuk main", - "rename": "Namakan semula", - "smartTranscription": "Transkripsi Pintar", - "renameAudioFile": "Namakan semula fail audio", - "enterNewFileName": "Sila masukkan nama fail baharu", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Rekod Asal", - "recordSummary": "Ringkasan Rekod", - "clickToGenerateSummary": "Klik butang di bawah untuk menjana ringkasan sesi", - "summaryContent": "Kandungan Ringkasan", - "copied": "Disalin", - "summaryCopiledToClipboard": "Ringkasan telah disalin ke papan keratan", - "extractSummary": "Ekstrak Ringkasan", - "summaryGenerated": "Ringkasan telah dijana", - "generating": "Menjana...", - "regenerate": "Jana semula", - "summaryTimeoutMessage": - "Permintaan menjana ringkasan telah tamat masa, mungkin disebabkan oleh masalah rangkaian atau pelayan sibuk.", - "deleteTranslationRecord": "Padam Rekod Terjemahan", - "deleteTranslationConfirm": - "Adakah anda pasti mahu memadam rekod terjemahan ini? Tindakan ini tidak boleh dibatalkan.", - "originalText": "Teks Asal", - "translatedText": "Teks Terjemahan", - "sessionSummary": "Ringkasan Sesi", - "cannotShare": "Tidak dapat berkongsi", - "generateSummaryFirst": "Sila jana ringkasan terlebih dahulu", - "translationSessionRecord": "Rekod Sesi Terjemahan", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Pemasangan Peranti", "connectYourDeepSoundHeadset": "Sambungkan Fon Kepala Voitrans Anda", "bind": "Ikat", @@ -1353,14 +1271,11 @@ const Map msMY = { "autoInputCode": "Masukkan kod secara automatik", "skipBinding": "Langkau Pengikatan", "rescan": "Imbas Semula", - "verifyingDevice": "Mengesahkan peranti...", "confirmBinding": "Sahkan Pengikatan", "associatingDevice": "Mengaitkan peranti...", "goToBluetoothSettings": "Pergi ke Tetapan Bluetooth", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Sedia untuk dipasangkan", "preparingPairingEnvironment": "Menyediakan persekitaran pemasangan...", "connectDeepSoundViaSystemBluetooth": @@ -1370,8 +1285,6 @@ const Map msMY = { "waitingCompletePairing": "Sila tunggu, melengkapkan pemasangan...", "pairingSuccessRedirecting": "Pemasangan berjaya! Mengalihkan ke halaman utama...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Sila pastikan anda disambungkan ke peranti Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1383,19 +1296,12 @@ const Map msMY = { "authorizationFailedCheckCode": "Kebenaran gagal, sila semak sama ada kod kebenaran betul", "pairingFailedRetry": "Pemasangan gagal, sila cuba lagi", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Sila dayakan Bluetooth', 'deviceDisconnected': 'Peranti diputuskan sambungan', 'readyToStartPairing': 'Sedia untuk memulakan pemasangan', 'checkingEnvironment': 'Menyemak persekitaran...', 'ensureHeadsetOnAndPairingMode': 'Sila pastikan fon kepala dihidupkan dan dalam mod pemasangan', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Mewujudkan sambungan selamat...', 'needManualBindingAuthCode': 'Kod kebenaran pengikatan manual diperlukan...', 'pairingSuccessful': 'Pemasangan berjaya!', @@ -1415,8 +1321,6 @@ const Map msMY = { 'bleConnectionFailed': 'Sambungan BLE gagal', 'deviceAuthorizationFailedCheckCode': 'Kebenaran peranti gagal, sila semak kod kebenaran', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1429,7 +1333,18 @@ const Map msMY = { 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Maklum Balas Pengguna", 'feedbackInfo': 'Berikan maklum balas atau cadangan', 'feedbackDescription': @@ -1472,7 +1387,7 @@ const Map msMY = { "removeEarbudsEnsureBattery": "Keluarkan kedua-dua fon telinga, dan pastikan bateri kedua-duanya melebihi 20%", - // 音乐列表页面 + // 音乐模块 "noMusic": "Tiada Muzik", // 暂无音乐 "noPlayingMusic": "Tiada muzik dimainkan", // 暂无播放音乐 "unknownSong": "Lagu Tidak Diketahui", // 未知歌曲 @@ -1520,22 +1435,122 @@ const Map msMY = { "波斯语": "Bahasa Parsi", "斯瓦希里语": "Bahasa Swahili", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "E-mel", + "中国": "China", + "美国": "Amerika Syarikat", + "加拿大": "Kanada", + "俄罗斯": "Rusia", + "英国": "United Kingdom", + "德国": "Jerman", + "意大利": "Itali", + "法国": "Perancis", + "西班牙": "Sepanyol", + "南非": "Afrika Selatan", + "沙特阿拉伯": "Arab Saudi", + "土耳其": "Turki", + "日本": "Jepun", + "韩国": "Korea Selatan", + "新加坡": "Singapura", + "马来西亚": "Malaysia", + "泰国": "Thailand", + "越南": "Vietnam", + "印度": "India", + "巴基斯坦": "Pakistan", + "菲律宾": "Filipina", + "印度尼西亚": "Indonesia", + "阿联酋": "Emiriah Arab Bersatu", + "墨西哥": "Mexico", + "巴西": "Brazil", + "阿根廷": "Argentina", + "澳大利亚": "Australia", + "新西兰": "New Zealand", + "中国香港": "Hong Kong (China)", + "中国澳门": "Macau (China)", + "中国台湾": "Taiwan (China)", + "埃及": "Mesir", + "希腊": "Greece", + "荷兰": "Belanda", + "比利时": "Belgium", + "匈牙利": "Hungary", + "罗马尼亚": "Romania", + "瑞士": "Switzerland", + "奥地利": "Austria", + "丹麦": "Denmark", + "瑞典": "Sweden", + "挪威": "Norway", + "波兰": "Poland", + "秘鲁": "Peru", + "智利": "Chile", + "哥伦比亚": "Colombia", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portugal", + "卢森堡": "Luxembourg", + "爱尔兰": "Ireland", + "冰岛": "Iceland", + "阿尔巴尼亚": "Albania", + "马耳他": "Malta", + "塞浦路斯": "Cyprus", + "芬兰": "Finland", + "保加利亚": "Bulgaria", + "立陶宛": "Lithuania", + "拉脱维亚": "Latvia", + "爱沙尼亚": "Estonia", + "乌克兰": "Ukraine", + "塞尔维亚": "Serbia", + "克罗地亚": "Croatia", + "斯洛文尼亚": "Slovenia", + "捷克": "Republik Czech", + "斯洛伐克": "Slovakia", + "危地马拉": "Guatemala", + "萨尔瓦多": "El Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nicaragua", + "哥斯达黎加": "Costa Rica", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Bolivia", + "厄瓜多尔": "Ecuador", + "巴拉圭": "Paraguay", + "乌拉圭": "Uruguay", + "摩洛哥": "Morocco", + "阿尔及利亚": "Algeria", + "突尼斯": "Tunisia", + "尼日利亚": "Nigeria", + "加纳": "Ghana", + "埃塞俄比亚": "Ethiopia", + "肯尼亚": "Kenya", + "坦桑尼亚": "Tanzania", + "乌干达": "Uganda", + "孟加拉国": "Bangladesh", + "以色列": "Israel", + "黎巴嫩": "Lebanon", + "约旦": "Jordan", + "伊拉克": "Iraq", + "科威特": "Kuwait", + "巴林": "Bahrain", + "卡塔尔": "Qatar", + "阿曼": "Oman", + "阿富汗": "Afghanistan", + "斯里兰卡": "Sri Lanka", + "缅甸": "Myanmar", + "尼泊尔": "Nepal", + "蒙古": "Mongolia", + "柬埔寨": "Cambodia", + "老挝": "Laos", + "文莱": "Brunei", + "东帝汶": "Timor-Leste", + "斐济": "Fiji", + "所罗门群岛": "Solomon Islands", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/nb_no.dart b/lib/core/translations/language/nb_no.dart index a5916d6d3..d5fdcb821 100644 --- a/lib/core/translations/language/nb_no.dart +++ b/lib/core/translations/language/nb_no.dart @@ -1,4 +1,5 @@ const Map nbNO = { + // 通用 'continue': 'Fortsett', 'confirm': 'Bekreft', @@ -18,6 +19,11 @@ const Map nbNO = { "unknownError": "Ukjent feil", "asrConnectionFailed": "Tilkobling til talegjenkjenningstjenesten mislyktes. Kontroller nettverket eller prøv igjen senere.", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "Kobler sammen verden, hinsides lyd", @@ -28,7 +34,7 @@ const Map nbNO = { "explore": "Utforsk", "settings": "Innstillinger", - // 语言 + // 语言列表 "followingSystem": "Følg systemet", "chinese": "Kinesisk", "english": "Engelsk", @@ -72,7 +78,7 @@ const Map nbNO = { "arabic": "Arabisk", "persian": "Persisk", - // 登录页 + // 登录模块 "welcome": "Velkommen", "loginTips": "Logg inn eller registrer deg med telefonnummer eller e-post", "accountNumber": "Telefonnummer eller e-post", @@ -100,13 +106,9 @@ const Map nbNO = { "resendVerificationCode": "Send verifiseringskode på nytt", "login": "Logg inn", "usePasswordLogin": "Logg inn med passord", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans-erklæring", // Voitrans 声明 "welcomeToThisApp": "Velkommen til Voitrans, vennligst les nøye", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", ved å klikke 'Godta og gå inn' bekrefter du at du har lest og godtar de ovennevnte avtalene. Ved å klikke 'Avslå' vil du avslutte applikasjonen.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Avslå", // 不同意 @@ -167,7 +169,7 @@ const Map nbNO = { 'right': 'Høyre', 'checkConnectionStatusFailed': 'Kontroll av tilkoblingsstatus mislyktes', -// 发现页 + // 发现页 "searchAi": "Søk etter AI-funksjoner...", "exploreSlogan": "Smarte ørepropper, uendelige muligheter", "exploreSlogan1": "Smart følgesvenn, uendelige muligheter", @@ -191,6 +193,7 @@ const Map nbNO = { "usageStats": "Brukstatistikk", "usageStatsInfo": "Vis brukstatistikk for din app", "scene": "Scenario", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", @@ -211,7 +214,6 @@ const Map nbNO = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -228,7 +230,6 @@ const Map nbNO = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - // 通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", @@ -237,88 +238,79 @@ const Map nbNO = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', 'remaining': 'Remaining', 'featureDescription': 'Feature Description', - // AI 功能卡片 + 'paymentSuccess': 'Betaling vellykket', + 'paymentFailed': 'Betaling mislyktes', + 'gotIt': 'Forstått', + 'paymentFailedTryAgain': 'Betaling mislyktes. Prøv igjen.', + 'selectPaymentMethod': 'Velg betalingsmetode', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Kunne ikke opprette WeChat-ordre', + 'alipayOrderCreateFailed': 'Kunne ikke opprette Alipay-ordre', + 'appleOrderCreateFailed': 'Kunne ikke opprette Apple-ordre', + 'googleOrderCreateFailed': 'Kunne ikke opprette Google-ordre', + 'paypalOrderCreateFailed': 'Kunne ikke opprette PayPal-ordre', + 'paymentException': 'Betalingsunntak', + 'paymentLaunchFailed': 'Kunne ikke starte betaling', + 'paymentExceptionWithError': 'Betalingsunntak: @error', + 'paymentProcessingCheckLater': 'Ordren din behandles. Sjekk igjen senere.', + 'paymentResultQueryException': 'Kunne ikke hente betalingsresultat: @error', + 'orderConfirmedQuotaRefreshed': 'Ordre bekreftet. Kvoten din er oppdatert.', + 'paymentCompletedConfirming': 'Betaling fullført. Bekrefter…', + 'paymentCancelled': 'Betaling avbrutt', + 'paypalOpenedCompleteInBrowser': 'PayPal er åpnet. Fullfør betalingen i nettleseren din.', + 'paypalOpenFailed': 'Kan ikke åpne PayPal-betalingssiden', + 'paymentTestTitle': 'Betalingstest', + 'paymentTestOrderInfo': 'Testordreinformasjon', + 'paymentTestProductId': 'Produkt-ID', + 'paymentTestProductDescription': 'Produktbeskrivelse', + 'paymentTestWechatDescription': 'WeChat Pay betalingstest', + 'paymentTestAlipayDescription': 'Alipay betalingstest', + 'paymentTestAmount': 'Beløp', + 'paymentTestSelectAmount': 'Velg testbeløp', + 'paying': 'Betaler...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Betalingsstatus', + 'errorInfoWithMessage': 'Feil: @message', + 'retest': 'Test på nytt', + 'paymentTestInstructionsTitle': 'Instruksjoner', + 'paymentTestInstructionsContent': '1. Velg et testbeløp (anbefalt: ¥0,01)\n2. Klikk på betalingsknappen for å starte\n3. Fullfør betalingen i betalingsappen\n4. Gå tilbake for å sjekke resultatet', + 'startingWechatPayment': 'Starter WeChat Pay...', + 'startingAlipayPayment': 'Starter Alipay...', + 'wechatPaymentSuccess': 'WeChat Pay vellykket!', + 'wechatPaymentFailed': 'WeChat Pay mislyktes', + 'wechatPaymentLaunchFailed': 'Kunne ikke starte WeChat Pay', + 'cannotLaunchWechatPayment': 'Kan ikke starte WeChat Pay', + 'wechatPaymentException': 'WeChat Pay-unntak', + 'wechatPaymentTestCompleted': 'WeChat Pay-test fullført', + 'alipayPaymentSuccess': 'Alipay vellykket!', + 'alipayPaymentFailed': 'Alipay mislyktes', + 'alipayPaymentLaunchFailed': 'Kunne ikke starte Alipay', + 'cannotLaunchAlipayPayment': 'Kan ikke starte Alipay', + 'alipayPaymentException': 'Alipay-unntak', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": + 'Insufficient balance, please go to the corresponding recharge page to recharge.', + "recharge": 'Go to Recharge', + "aiMemberExpiredDesc": + 'AI membership expired, please go to the membership recharge page to renew.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', 'aiHeaderDesc2': @@ -341,7 +333,46 @@ const Map nbNO = { 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Real-time Transcription', + 'sceneLexicon': 'Scenario Glossary', + 'subtitleDisplay': 'Subtitles', + 'transHeaderDesc1': + 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', + 'translateZhEn': 'Chinese-English translation', + 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', + 'multiLangTextTranslation': 'Multilingual text translation', + 'termOptimizationContextPreserve': + 'Terminology optimization and context preservation', + 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', + 'personalVocabularyMemory': 'Personal vocabulary memory', + 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', + 'colorHighContrast': 'High color contrast', + 'transDisclaimer': + 'Translation performance depends on microphone, network latency, and ambient noise.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Meeting Recording', + 'transcriptionAndSummary': 'Transcription & Summary', + 'keywordSearch': 'Keyword Search', + 'collaborationSharing': 'Collaboration & Sharing', + 'meetingHeaderDesc1': + 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'meetingHeaderDesc2': + 'Suitable for business meetings, class notes, and interview minutes.', + 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingSpeakerTagging': 'Speaker labeling', + 'meetingLongAudioTranscription': 'Long audio transcription', + 'meetingKeyPointSummary': 'Key point extraction', + 'meetingTopicNameSearch': 'Search by topic/name', + 'meetingTimelineJump': 'Timeline jump', + 'meetingExportSummary': 'Export minutes', + 'meetingMultiPlatformShare': 'Share across platforms', + 'meetingDisclaimer': + 'Use in quiet environments; performance depends on microphone and network.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', 'higherQuota': 'Higher usage quota', 'lowerUnitPrice': 'Lower unit price', @@ -357,7 +388,32 @@ const Map nbNO = { 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Translation Basic 100', + 'trans_002_name': 'Translation Basic 500', + 'trans_003_name': 'Translation Basic 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': 'Includes 100 translations (voice/text).', + 'trans_002_desc': 'Includes 500 translations (voice/text).', + 'trans_003_desc': 'Includes 1000 translations (voice/text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "Hopp over", 'next': 'Next', 'sayLilyHint': 'Say "Lily Lily" to the mic', @@ -368,7 +424,6 @@ const Map nbNO = { 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', 'confirmInput': 'Confirm Input', 'guideClickSendPrefix': 'Tap send, ', - // AI 引导步骤 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', 'guideWeatherInput': 'What’s the weather today?', 'guideWeatherSend': 'Lily will report the weather in real time', @@ -395,7 +450,7 @@ const Map nbNO = { 'guideSmsSend': 'Lily will send the message', 'guideSmsEnd': 'Message sent—voice control is convenient', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Start møte", 'edit': 'Rediger', 'delete': 'Slett', @@ -407,8 +462,6 @@ const Map nbNO = { 'recordingDetails': 'Opptaksdetaljer', 'aiSummary': 'AI-sammendrag', 'meetingTranscript': 'Møtetranskripsjon', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -459,7 +512,6 @@ const Map nbNO = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -468,6 +520,97 @@ const Map nbNO = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': 'Opprett', + 'templateDetails': 'Maldetaljer', + 'tag': 'Merkelapp', + 'description': 'Beskrivelse', + 'template': 'Mal', + 'deleteTemplate': 'Slett mal', + 'deleteTemplateConfirm': 'Er du sikker på at du vil slette denne malen?', + 'editTemplate': 'Rediger mal', + 'createTemplate': 'Opprett mal', + 'name': 'Navn', + 'templateContentHint': 'Vennligst skriv inn malinnhold! Tips: Klikk på AI-knappen ovenfor for raskt å generere malinnhold basert på navn og beskrivelse du har angitt', + 'inputNameHint': 'Vennligst skriv inn navn', + 'inputDescHint': 'Vennligst skriv inn beskrivelse', + 'custom': 'Tilpasset', + 'pleaseEnter': 'Vennligst skriv inn', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': + 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Lagre tankekart', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'Eksporter', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Bruk på alle avsnitt for denne taleren', + 'summaryWillBeUpdatedAutomatically': + 'Sammendraget oppdateres automatisk basert på malen', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -486,7 +629,7 @@ const Map nbNO = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -522,8 +665,6 @@ const Map nbNO = { 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -552,105 +693,26 @@ const Map nbNO = { 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Bruk på alle avsnitt for denne taleren', - 'summaryWillBeUpdatedAutomatically': - 'Sammendraget oppdateres automatisk basert på malen', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': 'Analyse mislyktes, prøv igjen senere', + 'transcriptionFailed': 'Transkribering mislyktes, prøv igjen senere', + 'summaryFailed': 'Sammendrag mislyktes, prøv igjen senere', + 'summaryFailedShort': 'Sammendrag mislyktes', + 'transcriptionFailedShort': 'Transkribering mislyktes', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Lydspilleren er ikke klar, vennligst vent', + 'playFailed': 'Avspilling mislyktes', + 'audioFileNotFound': 'Lydfilen ble ikke funnet', + 'fetchingAudio': 'Henter lyd fra skyen...', + 'playerLoadFailed': 'Lydspilleren kunne ikke lastes', // 设置页 "systemSettings": "Systeminnstillinger", @@ -704,26 +766,15 @@ const Map nbNO = { "Oppgradering av firmware-versjon for BLE-hodesett", "deviceManagement": "Enhetsadministrasjon", "manageConnectedDevices": "Administrer tilkoblede Bluetooth-enheter", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Du har allerede den nyeste versjonen {version}', 'checkUpdateFailed': 'Kunne ikke se etter oppdateringer', 'networkErrorRetry': 'Nettverksfeil, prøv igjen senere', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Sanntids talechat", "realtimeVoiceChatInfo": "Opplev intelligent taleinteraksjonsfunksjon (funksjonsforhåndsvisning)", "loading": "Laster inn...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -739,8 +790,7 @@ const Map nbNO = { "Are you sure you want to unbind device \"{deviceName}\"?", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Tøm chat-historikk", "online": "Online", @@ -771,8 +821,9 @@ const Map nbNO = { "swipeUpForMore": "Sveip opp for mer", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': 'Når aktivert: AI-en blir ikke avbrutt av stemmen din mens den snakker, og kan bare håndtere én samtalerunde om gangen. For å starte en ny runde, bare si vekkeordet.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -784,7 +835,7 @@ const Map nbNO = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Hei! Jeg er **Lily**, jeg kan hjelpe deg med:\n\n' '• Å svare på spørsmål og gi informasjon\n\n' '• Sanntids stemmeoversettelse\n\n' @@ -804,18 +855,17 @@ const Map nbNO = { 'startVoiceInput': 'Start taleinndata', 'startPhoneCallMode': 'Start anropsmodus, start taleinndata', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Skriv meldingen din her...', // 全屏编辑器输入提示 'characterCount': '{count} tegn', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopier', 'copySuccess': 'Kopiert', 'report': 'Rapporter', 'submitSuccess': 'Sendt inn', 'submitFailed': 'Innsending mislyktes', 'reportSubmitted': 'Rapport sendt, vi vil behandle den så snart som mulig', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Skadelig/Usikker', 'pornographicVulgar': 'Pornografisk/Vulgær', 'misleadingAttack': 'Villedende/Angrep', @@ -825,17 +875,14 @@ const Map nbNO = { 'other': 'Annet', 'reportDescriptionHint': 'Vi vil gjerne vite hvorfor du rapporterer, du kan beskrive problemet du opplevde.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Generert av AI', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'Her er noen anbefalte sanger:', 'playList': 'Spilleliste', 'moreMusic': 'Mer musikk', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'timer', // 小时单位 @@ -850,7 +897,7 @@ const Map nbNO = { "bicycling": 'Sykling', "tsransit": 'Kollektivtransport', - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Spør om værforhold:', 'highest': 'Høyeste', 'lowest': 'Laveste', @@ -880,18 +927,8 @@ const Map nbNO = { "friday": "Fre", "saturday": "Lør", "sunday": "Søn", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Sol", "partlyCloudy": "Delvis skyet", "partlySunny": "Delvis sol", @@ -912,7 +949,130 @@ const Map nbNO = { "haze": "Dis", "strongWind": "Sterk vind", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "Oversettelseshistorikk", + "enableRecording": "Aktiver opptak", + "viewAudioFiles": "Vis lydfiler", + "headsetUser": "Hodesettbruker", + "phoneUser": "Telefonbruker", + "selectSourceLanguage": "Velg kildespråk", + "selectTargetLanguage": "Velg målspråk", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": + "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Ingen historikk ennå", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "Tøm historikk", + "clearHistoryConfirm": + "Er du sikker på at du vil tømme all oversettelseshistorikk? Denne handlingen kan ikke angres.", + "unknownLanguage": "Ukjent språk", + "deleteSessionRecord": "Slett sesjonsopptak", + "deleteSessionConfirm": + "Er du sikker på at du vil slette alle oversettelsesopptak for denne sesjonen? Denne handlingen kan ikke angres.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": + "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": + "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": + "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": + "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Oversett lydfiler", + "noAudioFiles": "Ingen lydfiler ennå", + "calculating": "Beregner...", + "playing": "Spiller av...", + "paused": "Pauset", + "clickToPlay": "Klikk for å spille av", + "rename": "Gi nytt navn", + "smartTranscription": "Smart transkripsjon", + "renameAudioFile": "Gi lydfilen nytt navn", + "enterNewFileName": "Vennligst skriv inn et nytt filnavn", + + // 翻译模块 - 翻译详情 + "originalRecord": "Originalt opptak", + "recordSummary": "Opptakssammendrag", + "clickToGenerateSummary": + "Klikk på knappen nedenfor for å generere et sesjonssammendrag", + "summaryContent": "Sammendragsinnhold", + "copied": "Kopiert", + "summaryCopiledToClipboard": "Sammendraget er kopiert til utklippstavlen", + "extractSummary": "Trekk ut sammendrag", + "summaryGenerated": "Sammendrag generert", + "generating": "Genererer...", + "regenerate": "Generer på nytt", + "summaryTimeoutMessage": + "Forespørselen om å generere sammendrag utløp, muligens på grunn av nettverksproblemer eller travel server.", + "deleteTranslationRecord": "Slett oversettelsesopptak", + "deleteTranslationConfirm": + "Er du sikker på at du vil slette dette oversettelsesopptaket? Denne handlingen kan ikke angres.", + "originalText": "Originaltekst", + "translatedText": "Oversatt tekst", + "sessionSummary": "Sesjonssammendrag", + "cannotShare": "Kan ikke dele", + "generateSummaryFirst": "Vennligst generer et sammendrag først", + "translationSessionRecord": "Oversettelsessesjonsopptak", + + // 个人资料模块 "editProfile": "Rediger personlig informasjon", "avatar": "Avatar", "nickname": "Kallenavn", @@ -928,8 +1088,6 @@ const Map nbNO = { 'Er du sikker på at du vil slette kontoen din permanent? Denne handlingen kan ikke angres.', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'Nettverkstilkobling mislyktes, sjekk nettverksinnstillingene og prøv igjen', 'serverTemporarilyUnavailable': @@ -947,10 +1105,6 @@ const Map nbNO = { 'networkConnectionFailedCheckSettings': 'Nettverkstilkobling mislyktes, sjekk nettverksinnstillingene', 'serverInternalErrorRetryLater': 'Intern serverfeil, prøv igjen senere', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Bildekomprimering mislyktes', 'avatarUpdateFailed': 'Avatar-oppdatering mislyktes', 'usernameCannotBeEmpty': 'Brukernavn kan ikke være tomt', @@ -961,8 +1115,6 @@ const Map nbNO = { 'logoutFailedRetry': 'Utlogging mislyktes, prøv igjen', 'accountPermanentlyDeleted': 'Kontoen er permanent slettet', 'deleteAccountFailedRetry': 'Sletting av konto mislyktes, prøv igjen', - - // 账号服务相关 'clearUserDataFailed': 'Fjerning av brukerdata mislyktes', // 清理用户数据失败 'deleteUserDataFailed': 'Sletting av brukerdata mislyktes', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'Utlogging fra tredjepart vellykket', // 第三方登录退出成功 @@ -975,7 +1127,12 @@ const Map nbNO = { 'accountServiceInitialized': 'Kontotjenesten er initialisert', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': + 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', 'getPermissionStatusFailed': 'Henting av tillatelsesstatus mislyktes', 'communicationPermissions': 'Kommunikasjonstillatelser', 'bluetoothPermissions': 'Bluetooth Permissions', @@ -988,7 +1145,6 @@ const Map nbNO = { 'phone': 'Telefon', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'Skriv til kalender', @@ -1042,8 +1198,6 @@ const Map nbNO = { 'permanentDenialText': 'Du har permanent nektet {permission}-tillatelse, gå til appinnstillingene for å aktivere den', 'goToSettings': 'Gå til innstillinger', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': @@ -1068,7 +1222,6 @@ const Map nbNO = { 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', @@ -1078,8 +1231,6 @@ const Map nbNO = { 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', 'storagePermissionPermanentDenial': 'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', - - //permission_util.dart 'permissionUtilNeed': 'Need ', 'permissionUtilPermission': ' Permission', 'permissionUtilRestricted': ' Permission Restricted', @@ -1087,7 +1238,20 @@ const Map nbNO = { 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigasjon pågår', + 'native.notification.navigation.keepRunning': 'Navigerer, hold appen kjørende', + 'native.notification.bleAgent.running': 'Stemmeassistenten kjører', + 'native.notification.audioRecording.recording': 'Tar opp lyd, trykk for å gå tilbake til appen', + 'native.notification.music.waiting': 'Venter på avspilling', + 'native.notification.music.previous': 'Forrige', + 'native.notification.music.next': 'Neste', + 'native.notification.music.play': 'Spill av', + 'native.notification.music.pause': 'Pause', + 'native.notification.qqMusic.playing': 'Spiller musikk', + + // 版本更新 'newVersionFound': 'Ny versjon funnet', // 版本更新对话框标题 'remindLater': 'Minn meg senere', // 稍后提醒按钮 'updateNow': 'Oppdater nå', // 立即更新按钮 @@ -1098,253 +1262,7 @@ const Map nbNO = { 'updateErrorRetry': 'Det oppstod en feil under oppdateringen, prøv igjen senere', // 更新错误重试提示 - //国家列表 - "邮箱": "E-post", - "中国": "Kina", - "美国": "USA", - "加拿大": "Canada", - "俄罗斯": "Russland", - "英国": "Storbritannia", - "德国": "Tyskland", - "意大利": "Italia", - "法国": "Frankrike", - "西班牙": "Spania", - "南非": "Sør-Afrika", - "沙特阿拉伯": "Saudi-Arabia", - "土耳其": "Tyrkia", - "日本": "Japan", - "韩国": "Sør-Korea", - "新加坡": "Singapore", - "马来西亚": "Malaysia", - "泰国": "Thailand", - "越南": "Vietnam", - "印度": "India", - "巴基斯坦": "Pakistan", - "菲律宾": "Filippinene", - "印度尼西亚": "Indonesia", - "阿联酋": "De forente arabiske emirater", - "墨西哥": "Mexico", - "巴西": "Brasil", - "阿根廷": "Argentina", - "澳大利亚": "Australia", - "新西兰": "New Zealand", - "中国香港": "Hongkong (Kina)", - "中国澳门": "Macao (Kina)", - "中国台湾": "Taiwan (Kina)", - "埃及": "Egypt", - "希腊": "Hellas", - "荷兰": "Nederland", - "比利时": "Belgia", - "匈牙利": "Ungarn", - "罗马尼亚": "Romania", - "瑞士": "Sveits", - "奥地利": "Østerrike", - "丹麦": "Danmark", - "瑞典": "Sverige", - "挪威": "Norge", - "波兰": "Polen", - "秘鲁": "Peru", - "智利": "Chile", - "哥伦比亚": "Colombia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugal", - "卢森堡": "Luxembourg", - "爱尔兰": "Irland", - "冰岛": "Island", - "阿尔巴尼亚": "Albania", - "马耳他": "Malta", - "塞浦路斯": "Kypros", - "芬兰": "Finland", - "保加利亚": "Bulgaria", - "立陶宛": "Litauen", - "拉脱维亚": "Latvia", - "爱沙尼亚": "Estland", - "乌克兰": "Ukraina", - "塞尔维亚": "Serbia", - "克罗地亚": "Kroatia", - "斯洛文尼亚": "Slovenia", - "捷克": "Tsjekkia", - "斯洛伐克": "Slovakia", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolivia", - "厄瓜多尔": "Ecuador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Marokko", - "阿尔及利亚": "Algerie", - "突尼斯": "Tunisia", - "尼日利亚": "Nigeria", - "加纳": "Ghana", - "埃塞俄比亚": "Etiopia", - "肯尼亚": "Kenya", - "坦桑尼亚": "Tanzania", - "乌干达": "Uganda", - "孟加拉国": "Bangladesh", - "以色列": "Israel", - "黎巴嫩": "Libanon", - "约旦": "Jordan", - "伊拉克": "Irak", - "科威特": "Kuwait", - "巴林": "Bahrain", - "卡塔尔": "Qatar", - "阿曼": "Oman", - "阿富汗": "Afghanistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongolia", - "柬埔寨": "Kambodsja", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "Øst-Timor", - "斐济": "Fiji", - "所罗门群岛": "Salomonøyene", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Oversettelseshistorikk", - "enableRecording": "Aktiver opptak", - "viewAudioFiles": "Vis lydfiler", - "headsetUser": "Hodesettbruker", - "phoneUser": "Telefonbruker", - "selectSourceLanguage": "Velg kildespråk", - "selectTargetLanguage": "Velg målspråk", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Ingen historikk ennå", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Tøm historikk", - "clearHistoryConfirm": - "Er du sikker på at du vil tømme all oversettelseshistorikk? Denne handlingen kan ikke angres.", - "unknownLanguage": "Ukjent språk", - "deleteSessionRecord": "Slett sesjonsopptak", - "deleteSessionConfirm": - "Er du sikker på at du vil slette alle oversettelsesopptak for denne sesjonen? Denne handlingen kan ikke angres.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Oversett lydfiler", - "noAudioFiles": "Ingen lydfiler ennå", - "calculating": "Beregner...", - "playing": "Spiller av...", - "paused": "Pauset", - "clickToPlay": "Klikk for å spille av", - "rename": "Gi nytt navn", - "smartTranscription": "Smart transkripsjon", - "renameAudioFile": "Gi lydfilen nytt navn", - "enterNewFileName": "Vennligst skriv inn et nytt filnavn", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Originalt opptak", - "recordSummary": "Opptakssammendrag", - "clickToGenerateSummary": - "Klikk på knappen nedenfor for å generere et sesjonssammendrag", - "summaryContent": "Sammendragsinnhold", - "copied": "Kopiert", - "summaryCopiledToClipboard": "Sammendraget er kopiert til utklippstavlen", - "extractSummary": "Trekk ut sammendrag", - "summaryGenerated": "Sammendrag generert", - "generating": "Genererer...", - "regenerate": "Generer på nytt", - "summaryTimeoutMessage": - "Forespørselen om å generere sammendrag utløp, muligens på grunn av nettverksproblemer eller travel server.", - "deleteTranslationRecord": "Slett oversettelsesopptak", - "deleteTranslationConfirm": - "Er du sikker på at du vil slette dette oversettelsesopptaket? Denne handlingen kan ikke angres.", - "originalText": "Originaltekst", - "translatedText": "Oversatt tekst", - "sessionSummary": "Sesjonssammendrag", - "cannotShare": "Kan ikke dele", - "generateSummaryFirst": "Vennligst generer et sammendrag først", - "translationSessionRecord": "Oversettelsessesjonsopptak", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Enhetsparing", "connectYourDeepSoundHeadset": "Koble til ditt Voitrans-hodesett", "bind": "Bind", @@ -1353,14 +1271,11 @@ const Map nbNO = { "autoInputCode": "Automatisk innsetting av kode", "skipBinding": "Hopp over binding", "rescan": "Skann på nytt", - "verifyingDevice": "Verifiserer enhet...", "confirmBinding": "Bekreft binding", "associatingDevice": "Knytter til enhet...", "goToBluetoothSettings": "Gå til Bluetooth-innstillinger", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Klar til å pare", "preparingPairingEnvironment": "Forbereder paringsmiljø...", "connectDeepSoundViaSystemBluetooth": @@ -1370,8 +1285,6 @@ const Map nbNO = { "waitingCompletePairing": "Vennligst vent, fullfører paring...", "pairingSuccessRedirecting": "Paring vellykket! Omdirigerer til startsiden...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Sørg for at du er koblet til en Voitrans-enhet", "deviceAlreadyBoundToOtherAccount": @@ -1383,19 +1296,12 @@ const Map nbNO = { "authorizationFailedCheckCode": "Autorisasjon mislyktes, sjekk om autorisasjonskoden er riktig", "pairingFailedRetry": "Paring mislyktes, prøv igjen", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Vennligst aktiver Bluetooth', 'deviceDisconnected': 'Enheten er frakoblet', 'readyToStartPairing': 'Klar til å starte paring', 'checkingEnvironment': 'Sjekker miljø...', 'ensureHeadsetOnAndPairingMode': 'Sørg for at hodesettet er på og i paringsmodus', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Oppretter sikker tilkobling...', 'needManualBindingAuthCode': 'Manuell bindingsautorisasjonskode kreves...', 'pairingSuccessful': 'Paring vellykket!', @@ -1415,8 +1321,6 @@ const Map nbNO = { 'bleConnectionFailed': 'BLE-tilkobling mislyktes', 'deviceAuthorizationFailedCheckCode': 'Enhetsautorisasjon mislyktes, sjekk autorisasjonskoden', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1429,7 +1333,18 @@ const Map nbNO = { 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Bruker-tilbakemelding", 'feedbackInfo': 'Gi tilbakemelding eller forslag', 'feedbackDescription': 'Beskriv problemet du opplevde eller forslaget ditt', @@ -1470,7 +1385,7 @@ const Map nbNO = { "removeEarbudsEnsureBattery": "Ta ut begge øreproppene og sørg for at batterinivået på begge er over 20 %", - // 音乐列表页面 + // 音乐模块 "noMusic": "Ingen musikk", // 暂无音乐 "noPlayingMusic": "Ingen musikk spilles av", // 暂无播放音乐 "unknownSong": "Ukjent sang", // 未知歌曲 @@ -1518,22 +1433,122 @@ const Map nbNO = { "波斯语": "Persisk", "斯瓦希里语": "Swahili", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "E-post", + "中国": "Kina", + "美国": "USA", + "加拿大": "Canada", + "俄罗斯": "Russland", + "英国": "Storbritannia", + "德国": "Tyskland", + "意大利": "Italia", + "法国": "Frankrike", + "西班牙": "Spania", + "南非": "Sør-Afrika", + "沙特阿拉伯": "Saudi-Arabia", + "土耳其": "Tyrkia", + "日本": "Japan", + "韩国": "Sør-Korea", + "新加坡": "Singapore", + "马来西亚": "Malaysia", + "泰国": "Thailand", + "越南": "Vietnam", + "印度": "India", + "巴基斯坦": "Pakistan", + "菲律宾": "Filippinene", + "印度尼西亚": "Indonesia", + "阿联酋": "De forente arabiske emirater", + "墨西哥": "Mexico", + "巴西": "Brasil", + "阿根廷": "Argentina", + "澳大利亚": "Australia", + "新西兰": "New Zealand", + "中国香港": "Hongkong (Kina)", + "中国澳门": "Macao (Kina)", + "中国台湾": "Taiwan (Kina)", + "埃及": "Egypt", + "希腊": "Hellas", + "荷兰": "Nederland", + "比利时": "Belgia", + "匈牙利": "Ungarn", + "罗马尼亚": "Romania", + "瑞士": "Sveits", + "奥地利": "Østerrike", + "丹麦": "Danmark", + "瑞典": "Sverige", + "挪威": "Norge", + "波兰": "Polen", + "秘鲁": "Peru", + "智利": "Chile", + "哥伦比亚": "Colombia", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portugal", + "卢森堡": "Luxembourg", + "爱尔兰": "Irland", + "冰岛": "Island", + "阿尔巴尼亚": "Albania", + "马耳他": "Malta", + "塞浦路斯": "Kypros", + "芬兰": "Finland", + "保加利亚": "Bulgaria", + "立陶宛": "Litauen", + "拉脱维亚": "Latvia", + "爱沙尼亚": "Estland", + "乌克兰": "Ukraina", + "塞尔维亚": "Serbia", + "克罗地亚": "Kroatia", + "斯洛文尼亚": "Slovenia", + "捷克": "Tsjekkia", + "斯洛伐克": "Slovakia", + "危地马拉": "Guatemala", + "萨尔瓦多": "El Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nicaragua", + "哥斯达黎加": "Costa Rica", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Bolivia", + "厄瓜多尔": "Ecuador", + "巴拉圭": "Paraguay", + "乌拉圭": "Uruguay", + "摩洛哥": "Marokko", + "阿尔及利亚": "Algerie", + "突尼斯": "Tunisia", + "尼日利亚": "Nigeria", + "加纳": "Ghana", + "埃塞俄比亚": "Etiopia", + "肯尼亚": "Kenya", + "坦桑尼亚": "Tanzania", + "乌干达": "Uganda", + "孟加拉国": "Bangladesh", + "以色列": "Israel", + "黎巴嫩": "Libanon", + "约旦": "Jordan", + "伊拉克": "Irak", + "科威特": "Kuwait", + "巴林": "Bahrain", + "卡塔尔": "Qatar", + "阿曼": "Oman", + "阿富汗": "Afghanistan", + "斯里兰卡": "Sri Lanka", + "缅甸": "Myanmar", + "尼泊尔": "Nepal", + "蒙古": "Mongolia", + "柬埔寨": "Kambodsja", + "老挝": "Laos", + "文莱": "Brunei", + "东帝汶": "Øst-Timor", + "斐济": "Fiji", + "所罗门群岛": "Salomonøyene", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/nl_nl.dart b/lib/core/translations/language/nl_nl.dart index cd366c984..2c5f69e06 100644 --- a/lib/core/translations/language/nl_nl.dart +++ b/lib/core/translations/language/nl_nl.dart @@ -1,4 +1,5 @@ const Map nlNL = { + // 通用 'continue': 'Doorgaan', 'confirm': 'Bevestigen', @@ -18,6 +19,11 @@ const Map nlNL = { "unknownError": "Onbekende fout", "asrConnectionFailed": "Verbinding met de spraakherkenningsservice is mislukt. Controleer de netwerkverbinding of probeer het later opnieuw.", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "De wereld verbinden, voorbij het geluid", @@ -28,7 +34,7 @@ const Map nlNL = { "explore": "Ontdekken", "settings": "Instellingen", - // 语言 + // 语言列表 "followingSystem": "Systeem volgen", "chinese": "Chinees", "english": "Engels", @@ -72,7 +78,7 @@ const Map nlNL = { "arabic": "Arabisch", "persian": "Persisch", - // 登录页 + // 登录模块 "welcome": "Welkom", "loginTips": "Log in of registreer u met uw telefoonnummer of e-mailadres", "accountNumber": "Telefoonnummer of e-mail", @@ -100,13 +106,9 @@ const Map nlNL = { "resendVerificationCode": "Verificatiecode opnieuw verzenden", "login": "Inloggen", "usePasswordLogin": "Inloggen met wachtwoord", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans Verklaring", // Voitrans 声明 "welcomeToThisApp": "Welkom bij Voitrans, lees aandachtig door", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", door op 'Akkoord en doorgaan' te klikken, geeft u aan dat u de bovenstaande overeenkomsten volledig hebt gelezen en ermee akkoord gaat. Door op 'Niet akkoord' te klikken, wordt de applicatie afgesloten.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Niet akkoord", // 不同意 @@ -167,7 +169,7 @@ const Map nlNL = { 'right': 'Rechts', 'checkConnectionStatusFailed': 'Controle van verbindingsstatus mislukt', -// 发现页 + // 发现页 "searchAi": "Zoek AI-functies...", "exploreSlogan": "Slimme oortjes, eindeloze mogelijkheden", "exploreSlogan1": "Slimme metgezel, eindeloze mogelijkheden", @@ -192,6 +194,7 @@ const Map nlNL = { "usageStats": "Gebruikstatistieken", "usageStatsInfo": " Bekijk de gebruikstatistieken van uw applicatie", "scene": "Scenario", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", @@ -212,7 +215,6 @@ const Map nlNL = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -229,7 +231,6 @@ const Map nlNL = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - // 通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", @@ -238,88 +239,79 @@ const Map nlNL = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', 'remaining': 'Remaining', 'featureDescription': 'Feature Description', - // AI 功能卡片 + 'paymentSuccess': 'Betaling geslaagd', + 'paymentFailed': 'Betaling mislukt', + 'gotIt': 'Begrepen', + 'paymentFailedTryAgain': 'Betaling mislukt. Probeer het opnieuw.', + 'selectPaymentMethod': 'Selecteer betaalmethode', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Kan WeChat-bestelling niet aanmaken', + 'alipayOrderCreateFailed': 'Kan Alipay-bestelling niet aanmaken', + 'appleOrderCreateFailed': 'Kan Apple-bestelling niet aanmaken', + 'googleOrderCreateFailed': 'Kan Google-bestelling niet aanmaken', + 'paypalOrderCreateFailed': 'Kan PayPal-bestelling niet aanmaken', + 'paymentException': 'Betalingsuitzondering', + 'paymentLaunchFailed': 'Kan betaling niet starten', + 'paymentExceptionWithError': 'Betalingsuitzondering: @error', + 'paymentProcessingCheckLater': 'Uw bestelling wordt verwerkt. Controleer het later.', + 'paymentResultQueryException': 'Kan betalingsresultaat niet opvragen: @error', + 'orderConfirmedQuotaRefreshed': 'Bestelling bevestigd. Uw tegoed is bijgewerkt.', + 'paymentCompletedConfirming': 'Betaling voltooid. Bevestigen…', + 'paymentCancelled': 'Betaling geannuleerd', + 'paypalOpenedCompleteInBrowser': 'PayPal geopend. Voltooi de betaling in uw browser.', + 'paypalOpenFailed': 'Kan PayPal-betaalpagina niet openen', + 'paymentTestTitle': 'Betalingstest', + 'paymentTestOrderInfo': 'Testbestelgegevens', + 'paymentTestProductId': 'Product-ID', + 'paymentTestProductDescription': 'Productbeschrijving', + 'paymentTestWechatDescription': 'WeChat-betalingstest', + 'paymentTestAlipayDescription': 'Alipay-betalingstest', + 'paymentTestAmount': 'Bedrag', + 'paymentTestSelectAmount': 'Selecteer testbedrag', + 'paying': 'Betalen...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Betalingsstatus', + 'errorInfoWithMessage': 'Fout: @message', + 'retest': 'Opnieuw testen', + 'paymentTestInstructionsTitle': 'Instructies', + 'paymentTestInstructionsContent': '1. Selecteer een testbedrag (aanbevolen: ¥0.01)\n2. Klik op de betaalknop om te starten\n3. Voltooi de betaling in de betaal-app\n4. Keer terug om het resultaat te controleren', + 'startingWechatPayment': 'WeChat Pay starten...', + 'startingAlipayPayment': 'Alipay starten...', + 'wechatPaymentSuccess': 'WeChat Pay-betaling geslaagd!', + 'wechatPaymentFailed': 'WeChat Pay mislukt', + 'wechatPaymentLaunchFailed': 'Kan WeChat Pay niet starten', + 'cannotLaunchWechatPayment': 'Kan WeChat Pay niet starten', + 'wechatPaymentException': 'WeChat Pay-uitzondering', + 'wechatPaymentTestCompleted': 'WeChat Pay-test voltooid', + 'alipayPaymentSuccess': 'Alipay-betaling geslaagd!', + 'alipayPaymentFailed': 'Alipay mislukt', + 'alipayPaymentLaunchFailed': 'Kan Alipay niet starten', + 'cannotLaunchAlipayPayment': 'Kan Alipay niet starten', + 'alipayPaymentException': 'Alipay-uitzondering', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": + 'Insufficient balance, please go to the corresponding recharge page to recharge.', + "recharge": 'Go to Recharge', + "aiMemberExpiredDesc": + 'AI membership expired, please go to the membership recharge page to renew.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', 'aiHeaderDesc2': @@ -342,7 +334,46 @@ const Map nlNL = { 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Real-time Transcription', + 'sceneLexicon': 'Scenario Glossary', + 'subtitleDisplay': 'Subtitles', + 'transHeaderDesc1': + 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', + 'translateZhEn': 'Chinese-English translation', + 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', + 'multiLangTextTranslation': 'Multilingual text translation', + 'termOptimizationContextPreserve': + 'Terminology optimization and context preservation', + 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', + 'personalVocabularyMemory': 'Personal vocabulary memory', + 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', + 'colorHighContrast': 'High color contrast', + 'transDisclaimer': + 'Translation performance depends on microphone, network latency, and ambient noise.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Meeting Recording', + 'transcriptionAndSummary': 'Transcription & Summary', + 'keywordSearch': 'Keyword Search', + 'collaborationSharing': 'Collaboration & Sharing', + 'meetingHeaderDesc1': + 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'meetingHeaderDesc2': + 'Suitable for business meetings, class notes, and interview minutes.', + 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingSpeakerTagging': 'Speaker labeling', + 'meetingLongAudioTranscription': 'Long audio transcription', + 'meetingKeyPointSummary': 'Key point extraction', + 'meetingTopicNameSearch': 'Search by topic/name', + 'meetingTimelineJump': 'Timeline jump', + 'meetingExportSummary': 'Export minutes', + 'meetingMultiPlatformShare': 'Share across platforms', + 'meetingDisclaimer': + 'Use in quiet environments; performance depends on microphone and network.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', 'higherQuota': 'Higher usage quota', 'lowerUnitPrice': 'Lower unit price', @@ -358,7 +389,32 @@ const Map nlNL = { 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Translation Basic 100', + 'trans_002_name': 'Translation Basic 500', + 'trans_003_name': 'Translation Basic 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': 'Includes 100 translations (voice/text).', + 'trans_002_desc': 'Includes 500 translations (voice/text).', + 'trans_003_desc': 'Includes 1000 translations (voice/text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "Overslaan", 'next': 'Next', 'sayLilyHint': 'Say "Lily Lily" to the mic', @@ -369,7 +425,6 @@ const Map nlNL = { 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', 'confirmInput': 'Confirm Input', 'guideClickSendPrefix': 'Tap send, ', - // AI 引导步骤 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', 'guideWeatherInput': 'What’s the weather today?', 'guideWeatherSend': 'Lily will report the weather in real time', @@ -396,7 +451,7 @@ const Map nlNL = { 'guideSmsSend': 'Lily will send the message', 'guideSmsEnd': 'Message sent—voice control is convenient', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Start vergadering", 'edit': 'Bewerken', 'delete': 'Verwijderen', @@ -408,8 +463,6 @@ const Map nlNL = { 'recordingDetails': 'Opnamedetails', 'aiSummary': 'AI-samenvatting', 'meetingTranscript': 'Vergadertranscript', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -460,7 +513,6 @@ const Map nlNL = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -469,6 +521,97 @@ const Map nlNL = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': 'Aanmaken', + 'templateDetails': 'Sjabloondetails', + 'tag': 'Label', + 'description': 'Beschrijving', + 'template': 'Sjabloon', + 'deleteTemplate': 'Sjabloon verwijderen', + 'deleteTemplateConfirm': 'Weet u zeker dat u dit sjabloon wilt verwijderen?', + 'editTemplate': 'Sjabloon bewerken', + 'createTemplate': 'Sjabloon aanmaken', + 'name': 'Naam', + 'templateContentHint': 'Voer de inhoud van het sjabloon in! Tip: Klik op de AI-knop hierboven om snel sjablooninhoud te genereren op basis van de naam en beschrijving die u hebt ingevoerd', + 'inputNameHint': 'Voer een naam in', + 'inputDescHint': 'Voer een beschrijving in', + 'custom': 'Aangepast', + 'pleaseEnter': 'Voer alstublieft in', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': + 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Mindmap opslaan', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'Exporteren', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': "Toepassen op alle alinea's van deze spreker", + 'summaryWillBeUpdatedAutomatically': + 'De samenvatting wordt automatisch bijgewerkt op basis van de sjabloon', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -487,7 +630,7 @@ const Map nlNL = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -523,8 +666,6 @@ const Map nlNL = { 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -553,105 +694,26 @@ const Map nlNL = { 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': "Toepassen op alle alinea's van deze spreker", - 'summaryWillBeUpdatedAutomatically': - 'De samenvatting wordt automatisch bijgewerkt op basis van de sjabloon', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': 'Analyse mislukt, probeer het later opnieuw', + 'transcriptionFailed': 'Transcriptie mislukt, probeer het later opnieuw', + 'summaryFailed': 'Samenvatting mislukt, probeer het later opnieuw', + 'summaryFailedShort': 'Samenvatting mislukt', + 'transcriptionFailedShort': 'Transcriptie mislukt', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Audiospeler is niet gereed, even geduld', + 'playFailed': 'Afspelen mislukt', + 'audioFileNotFound': 'Audiobestand niet gevonden', + 'fetchingAudio': 'Audio ophalen uit de cloud...', + 'playerLoadFailed': 'Audiospeler kan niet laden', // 设置页 "systemSettings": "Systeeminstellingen", @@ -703,26 +765,15 @@ const Map nlNL = { "bleHeadsetFirmwareUpgrade": "Upgrade van BLE-headset firmwareversie", "deviceManagement": "Apparaatbeheer", "manageConnectedDevices": "Beheer gekoppelde Bluetooth-apparaten", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'U hebt al de nieuwste versie {version}', 'checkUpdateFailed': 'Controleren op updates mislukt', 'networkErrorRetry': 'Netwerkfout, probeer het later opnieuw', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Realtime spraakchat", "realtimeVoiceChatInfo": "Ervaar de intelligente spraakinteractiefunctie (functievoorbeeld)", "loading": "Laden...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -738,8 +789,7 @@ const Map nlNL = { "Are you sure you want to unbind device \"{deviceName}\"?", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Chatgeschiedenis wissen", "online": "Online", @@ -770,8 +820,9 @@ const Map nlNL = { "swipeUpForMore": "Veeg omhoog voor meer", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': 'Wanneer ingeschakeld: De AI wordt niet onderbroken door uw stem terwijl deze spreekt en kan slechts één gespreksronde tegelijk verwerken. Om een nieuwe ronde te starten, zeg gewoon het activeringswoord.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -783,7 +834,7 @@ const Map nlNL = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Hallo! Ik ben **Lily**, ik kan u helpen met:\n\n' '• Vragen beantwoorden en informatie verstrekken\n\n' '• Realtime spraakvertaling\n\n' @@ -803,11 +854,11 @@ const Map nlNL = { 'startVoiceInput': 'Start spraakinvoer', 'startPhoneCallMode': 'Start belmodus, start spraakinvoer', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Voer uw bericht hier in...', // 全屏编辑器输入提示 'characterCount': '{count} tekens', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopiëren', 'copySuccess': 'Succesvol gekopieerd', 'report': 'Rapporteren', @@ -815,7 +866,6 @@ const Map nlNL = { 'submitFailed': 'Indienen mislukt', 'reportSubmitted': 'Rapport ingediend, we zullen het zo snel mogelijk verwerken', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Schadelijk/Onveilig', 'pornographicVulgar': 'Pornografisch/Vulgair', 'misleadingAttack': 'Misleidend/Aanval', @@ -825,17 +875,14 @@ const Map nlNL = { 'other': 'Overig', 'reportDescriptionHint': 'We willen weten waarom u rapporteert, u kunt het probleem dat u tegenkwam beschrijven.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Gegenereerd door AI', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'Hier zijn enkele aanbevolen muziekstukken:', 'playList': 'Afspeellijst', 'moreMusic': 'Meer muziek', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'uur', // 小时单位 @@ -850,7 +897,7 @@ const Map nlNL = { "bicycling": 'Fietsen', "tsransit": 'Openbaar vervoer', - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Weersomstandigheden opvragen:', 'highest': 'Hoogste', 'lowest': 'Laagste', @@ -879,18 +926,8 @@ const Map nlNL = { "friday": "Vr", "saturday": "Za", "sunday": "Zo", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Zonnig", "partlyCloudy": "Licht bewolkt", "partlySunny": "Gedeeltelijk zonnig", @@ -911,7 +948,130 @@ const Map nlNL = { "haze": "Nevel", "strongWind": "Harde wind", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "Vertaalgeschiedenis", + "enableRecording": "Opname inschakelen", + "viewAudioFiles": "Audiobestanden bekijken", + "headsetUser": "Headset-gebruiker", + "phoneUser": "Telefoongebruiker", + "selectSourceLanguage": "Selecteer brontaal", + "selectTargetLanguage": "Selecteer doeltaal", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": + "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Nog geen geschiedenis", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "Geschiedenis wissen", + "clearHistoryConfirm": + "Weet u zeker dat u alle vertaalgeschiedenis wilt wissen? Deze actie kan niet ongedaan worden gemaakt.", + "unknownLanguage": "Onbekende taal", + "deleteSessionRecord": "Sessie-opname verwijderen", + "deleteSessionConfirm": + "Weet u zeker dat u alle vertaalopnamen voor deze sessie wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": + "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": + "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": + "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": + "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Audiobestanden vertalen", + "noAudioFiles": "Nog geen audiobestanden", + "calculating": "Berekenen...", + "playing": "Afspelen...", + "paused": "Gepauzeerd", + "clickToPlay": "Klik om af te spelen", + "rename": "Hernoemen", + "smartTranscription": "Slimme transcriptie", + "renameAudioFile": "Audiobestand hernoemen", + "enterNewFileName": "Voer een nieuwe bestandsnaam in", + + // 翻译模块 - 翻译详情 + "originalRecord": "Originele opname", + "recordSummary": "Opnamesamenvatting", + "clickToGenerateSummary": + "Klik op de onderstaande knop om een sessiesamenvatting te genereren", + "summaryContent": "Samenvattingsinhoud", + "copied": "Gekopieerd", + "summaryCopiledToClipboard": "Samenvatting gekopieerd naar klembord", + "extractSummary": "Samenvatting extraheren", + "summaryGenerated": "Samenvatting gegenereerd", + "generating": "Genereren...", + "regenerate": "Opnieuw genereren", + "summaryTimeoutMessage": + "Het genereren van de samenvatting is verlopen, mogelijk vanwege netwerkproblemen of een drukke server.", + "deleteTranslationRecord": "Vertaalopname verwijderen", + "deleteTranslationConfirm": + "Weet u zeker dat u deze vertaalopname wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.", + "originalText": "Originele tekst", + "translatedText": "Vertaalde tekst", + "sessionSummary": "Sessiesamenvatting", + "cannotShare": "Kan niet delen", + "generateSummaryFirst": "Genereer eerst een samenvatting", + "translationSessionRecord": "Vertaalsessie-opname", + + // 个人资料模块 "editProfile": "Persoonlijke informatie bewerken", "avatar": "Avatar", "nickname": "Bijnaam", @@ -927,8 +1087,6 @@ const Map nlNL = { 'Weet u zeker dat u uw account permanent wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'Netwerkverbinding mislukt, controleer uw netwerkinstellingen en probeer het opnieuw', 'serverTemporarilyUnavailable': @@ -946,10 +1104,6 @@ const Map nlNL = { 'Netwerkverbinding mislukt, controleer uw netwerkinstellingen', 'serverInternalErrorRetryLater': 'Interne serverfout, probeer het later opnieuw', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Beeldcompressie mislukt', 'avatarUpdateFailed': 'Avatar-update mislukt', 'usernameCannotBeEmpty': 'Gebruikersnaam mag niet leeg zijn', @@ -961,8 +1115,6 @@ const Map nlNL = { 'accountPermanentlyDeleted': 'Account is permanent verwijderd', 'deleteAccountFailedRetry': 'Verwijderen van account mislukt, probeer het opnieuw', - - // 账号服务相关 'clearUserDataFailed': 'Wissen van gebruikersgegevens mislukt', // 清理用户数据失败 'deleteUserDataFailed': 'Verwijderen van gebruikersgegevens mislukt', // 删除用户数据失败 @@ -979,7 +1131,12 @@ const Map nlNL = { 'accountServiceInitialized': 'Accountservice is geïnitialiseerd', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': + 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', 'getPermissionStatusFailed': 'Ophalen van toestemmingsstatus mislukt', 'communicationPermissions': 'Communicatietoestemmingen', 'bluetoothPermissions': 'Bluetooth Permissions', @@ -992,7 +1149,6 @@ const Map nlNL = { 'phone': 'Telefoon', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'Kalender schrijven', @@ -1050,8 +1206,6 @@ const Map nlNL = { 'permanentDenialText': 'U hebt de toestemming {permission} permanent geweigerd, ga naar de app-instellingen om deze in te schakelen', 'goToSettings': 'Ga naar instellingen', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': @@ -1076,7 +1230,6 @@ const Map nlNL = { 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', @@ -1086,8 +1239,6 @@ const Map nlNL = { 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', 'storagePermissionPermanentDenial': 'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', - - //permission_util.dart 'permissionUtilNeed': 'Need ', 'permissionUtilPermission': ' Permission', 'permissionUtilRestricted': ' Permission Restricted', @@ -1095,7 +1246,20 @@ const Map nlNL = { 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigatie actief', + 'native.notification.navigation.keepRunning': 'Navigeren, houd de app actief', + 'native.notification.bleAgent.running': 'Spraakassistent is actief', + 'native.notification.audioRecording.recording': 'Audio opnemen, tik om terug te keren naar de app', + 'native.notification.music.waiting': 'Wachten op afspelen', + 'native.notification.music.previous': 'Vorige', + 'native.notification.music.next': 'Volgende', + 'native.notification.music.play': 'Afspelen', + 'native.notification.music.pause': 'Pauzeren', + 'native.notification.qqMusic.playing': 'Muziek afspelen', + + // 版本更新 'newVersionFound': 'Nieuwe versie gevonden', // 版本更新对话框标题 'remindLater': 'Later herinneren', // 稍后提醒按钮 'updateNow': 'Nu bijwerken', // 立即更新按钮 @@ -1106,253 +1270,7 @@ const Map nlNL = { 'updateErrorRetry': 'Er is een fout opgetreden tijdens het bijwerken, probeer het later opnieuw', // 更新错误重试提示 - //国家列表 - "邮箱": "E-mail", - "中国": "China", - "美国": "Verenigde Staten", - "加拿大": "Canada", - "俄罗斯": "Rusland", - "英国": "Verenigd Koninkrijk", - "德国": "Duitsland", - "意大利": "Italië", - "法国": "Frankrijk", - "西班牙": "Spanje", - "南非": "Zuid-Afrika", - "沙特阿拉伯": "Saoedi-Arabië", - "土耳其": "Turkije", - "日本": "Japan", - "韩国": "Zuid-Korea", - "新加坡": "Singapore", - "马来西亚": "Maleisië", - "泰国": "Thailand", - "越南": "Vietnam", - "印度": "India", - "巴基斯坦": "Pakistan", - "菲律宾": "Filipijnen", - "印度尼西亚": "Indonesië", - "阿联酋": "Verenigde Arabische Emiraten", - "墨西哥": "Mexico", - "巴西": "Brazilië", - "阿根廷": "Argentinië", - "澳大利亚": "Australië", - "新西兰": "Nieuw-Zeeland", - "中国香港": "Hongkong (China)", - "中国澳门": "Macau (China)", - "中国台湾": "Taiwan (China)", - "埃及": "Egypte", - "希腊": "Griekenland", - "荷兰": "Nederland", - "比利时": "België", - "匈牙利": "Hongarije", - "罗马尼亚": "Roemenië", - "瑞士": "Zwitserland", - "奥地利": "Oostenrijk", - "丹麦": "Denemarken", - "瑞典": "Zweden", - "挪威": "Noorwegen", - "波兰": "Polen", - "秘鲁": "Peru", - "智利": "Chili", - "哥伦比亚": "Colombia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugal", - "卢森堡": "Luxemburg", - "爱尔兰": "Ierland", - "冰岛": "IJsland", - "阿尔巴尼亚": "Albanië", - "马耳他": "Malta", - "塞浦路斯": "Cyprus", - "芬兰": "Finland", - "保加利亚": "Bulgarije", - "立陶宛": "Litouwen", - "拉脱维亚": "Letland", - "爱沙尼亚": "Estland", - "乌克兰": "Oekraïne", - "塞尔维亚": "Servië", - "克罗地亚": "Kroatië", - "斯洛文尼亚": "Slovenië", - "捷克": "Tsjechië", - "斯洛伐克": "Slowakije", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panama", - "海地": "Haïti", - "玻利维亚": "Bolivia", - "厄瓜多尔": "Ecuador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Marokko", - "阿尔及利亚": "Algerije", - "突尼斯": "Tunesië", - "尼日利亚": "Nigeria", - "加纳": "Ghana", - "埃塞俄比亚": "Ethiopië", - "肯尼亚": "Kenia", - "坦桑尼亚": "Tanzania", - "乌干达": "Oeganda", - "孟加拉国": "Bangladesh", - "以色列": "Israël", - "黎巴嫩": "Libanon", - "约旦": "Jordanië", - "伊拉克": "Irak", - "科威特": "Koeweit", - "巴林": "Bahrein", - "卡塔尔": "Qatar", - "阿曼": "Oman", - "阿富汗": "Afghanistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongolië", - "柬埔寨": "Cambodja", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "Oost-Timor", - "斐济": "Fiji", - "所罗门群岛": "Salomonseilanden", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Vertaalgeschiedenis", - "enableRecording": "Opname inschakelen", - "viewAudioFiles": "Audiobestanden bekijken", - "headsetUser": "Headset-gebruiker", - "phoneUser": "Telefoongebruiker", - "selectSourceLanguage": "Selecteer brontaal", - "selectTargetLanguage": "Selecteer doeltaal", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Nog geen geschiedenis", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Geschiedenis wissen", - "clearHistoryConfirm": - "Weet u zeker dat u alle vertaalgeschiedenis wilt wissen? Deze actie kan niet ongedaan worden gemaakt.", - "unknownLanguage": "Onbekende taal", - "deleteSessionRecord": "Sessie-opname verwijderen", - "deleteSessionConfirm": - "Weet u zeker dat u alle vertaalopnamen voor deze sessie wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Audiobestanden vertalen", - "noAudioFiles": "Nog geen audiobestanden", - "calculating": "Berekenen...", - "playing": "Afspelen...", - "paused": "Gepauzeerd", - "clickToPlay": "Klik om af te spelen", - "rename": "Hernoemen", - "smartTranscription": "Slimme transcriptie", - "renameAudioFile": "Audiobestand hernoemen", - "enterNewFileName": "Voer een nieuwe bestandsnaam in", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Originele opname", - "recordSummary": "Opnamesamenvatting", - "clickToGenerateSummary": - "Klik op de onderstaande knop om een sessiesamenvatting te genereren", - "summaryContent": "Samenvattingsinhoud", - "copied": "Gekopieerd", - "summaryCopiledToClipboard": "Samenvatting gekopieerd naar klembord", - "extractSummary": "Samenvatting extraheren", - "summaryGenerated": "Samenvatting gegenereerd", - "generating": "Genereren...", - "regenerate": "Opnieuw genereren", - "summaryTimeoutMessage": - "Het genereren van de samenvatting is verlopen, mogelijk vanwege netwerkproblemen of een drukke server.", - "deleteTranslationRecord": "Vertaalopname verwijderen", - "deleteTranslationConfirm": - "Weet u zeker dat u deze vertaalopname wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.", - "originalText": "Originele tekst", - "translatedText": "Vertaalde tekst", - "sessionSummary": "Sessiesamenvatting", - "cannotShare": "Kan niet delen", - "generateSummaryFirst": "Genereer eerst een samenvatting", - "translationSessionRecord": "Vertaalsessie-opname", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Apparaat koppelen", "connectYourDeepSoundHeadset": "Verbind uw Voitrans-headset", "bind": "Koppelen", @@ -1361,14 +1279,11 @@ const Map nlNL = { "autoInputCode": "Code automatisch invoeren", "skipBinding": "Koppeling overslaan", "rescan": "Opnieuw scannen", - "verifyingDevice": "Apparaat verifiëren...", "confirmBinding": "Koppeling bevestigen", "associatingDevice": "Apparaat associëren...", "goToBluetoothSettings": "Ga naar Bluetooth-instellingen", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Klaar om te koppelen", "preparingPairingEnvironment": "Koppelingsomgeving voorbereiden...", "connectDeepSoundViaSystemBluetooth": @@ -1378,8 +1293,6 @@ const Map nlNL = { "waitingCompletePairing": "Even geduld, koppeling wordt voltooid...", "pairingSuccessRedirecting": "Koppelen geslaagd! Wordt doorgestuurd naar de startpagina...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Zorg ervoor dat u bent verbonden met een Voitrans-apparaat", "deviceAlreadyBoundToOtherAccount": @@ -1391,19 +1304,12 @@ const Map nlNL = { "authorizationFailedCheckCode": "Autorisatie mislukt, controleer of de autorisatiecode correct is", "pairingFailedRetry": "Koppelen mislukt, probeer het opnieuw", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Schakel Bluetooth in', 'deviceDisconnected': 'Apparaat losgekoppeld', 'readyToStartPairing': 'Klaar om te beginnen met koppelen', 'checkingEnvironment': 'Omgeving controleren...', 'ensureHeadsetOnAndPairingMode': 'Zorg ervoor dat de headset is ingeschakeld en in de koppelingsmodus staat', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Beveiligde verbinding tot stand brengen...', 'needManualBindingAuthCode': 'Handmatige koppelingsautorisatiecode vereist...', @@ -1425,8 +1331,6 @@ const Map nlNL = { 'bleConnectionFailed': 'BLE-verbinding mislukt', 'deviceAuthorizationFailedCheckCode': 'Apparaatautorisatie mislukt, controleer de autorisatiecode', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1439,7 +1343,18 @@ const Map nlNL = { 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Gebruikersfeedback", 'feedbackInfo': 'Geef feedback of suggesties', 'feedbackDescription': @@ -1482,7 +1397,7 @@ const Map nlNL = { "removeEarbudsEnsureBattery": "Haal beide oortjes eruit en zorg ervoor dat de batterij van beide meer dan 20% is", - // 音乐列表页面 + // 音乐模块 "noMusic": "Geen muziek", // 暂无音乐 "noPlayingMusic": "Geen muziek aan het afspelen", // 暂无播放音乐 "unknownSong": "Onbekend nummer", // 未知歌曲 @@ -1530,22 +1445,122 @@ const Map nlNL = { "波斯语": "Perzisch", "斯瓦希里语": "Swahili", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "E-mail", + "中国": "China", + "美国": "Verenigde Staten", + "加拿大": "Canada", + "俄罗斯": "Rusland", + "英国": "Verenigd Koninkrijk", + "德国": "Duitsland", + "意大利": "Italië", + "法国": "Frankrijk", + "西班牙": "Spanje", + "南非": "Zuid-Afrika", + "沙特阿拉伯": "Saoedi-Arabië", + "土耳其": "Turkije", + "日本": "Japan", + "韩国": "Zuid-Korea", + "新加坡": "Singapore", + "马来西亚": "Maleisië", + "泰国": "Thailand", + "越南": "Vietnam", + "印度": "India", + "巴基斯坦": "Pakistan", + "菲律宾": "Filipijnen", + "印度尼西亚": "Indonesië", + "阿联酋": "Verenigde Arabische Emiraten", + "墨西哥": "Mexico", + "巴西": "Brazilië", + "阿根廷": "Argentinië", + "澳大利亚": "Australië", + "新西兰": "Nieuw-Zeeland", + "中国香港": "Hongkong (China)", + "中国澳门": "Macau (China)", + "中国台湾": "Taiwan (China)", + "埃及": "Egypte", + "希腊": "Griekenland", + "荷兰": "Nederland", + "比利时": "België", + "匈牙利": "Hongarije", + "罗马尼亚": "Roemenië", + "瑞士": "Zwitserland", + "奥地利": "Oostenrijk", + "丹麦": "Denemarken", + "瑞典": "Zweden", + "挪威": "Noorwegen", + "波兰": "Polen", + "秘鲁": "Peru", + "智利": "Chili", + "哥伦比亚": "Colombia", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portugal", + "卢森堡": "Luxemburg", + "爱尔兰": "Ierland", + "冰岛": "IJsland", + "阿尔巴尼亚": "Albanië", + "马耳他": "Malta", + "塞浦路斯": "Cyprus", + "芬兰": "Finland", + "保加利亚": "Bulgarije", + "立陶宛": "Litouwen", + "拉脱维亚": "Letland", + "爱沙尼亚": "Estland", + "乌克兰": "Oekraïne", + "塞尔维亚": "Servië", + "克罗地亚": "Kroatië", + "斯洛文尼亚": "Slovenië", + "捷克": "Tsjechië", + "斯洛伐克": "Slowakije", + "危地马拉": "Guatemala", + "萨尔瓦多": "El Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nicaragua", + "哥斯达黎加": "Costa Rica", + "巴拿马": "Panama", + "海地": "Haïti", + "玻利维亚": "Bolivia", + "厄瓜多尔": "Ecuador", + "巴拉圭": "Paraguay", + "乌拉圭": "Uruguay", + "摩洛哥": "Marokko", + "阿尔及利亚": "Algerije", + "突尼斯": "Tunesië", + "尼日利亚": "Nigeria", + "加纳": "Ghana", + "埃塞俄比亚": "Ethiopië", + "肯尼亚": "Kenia", + "坦桑尼亚": "Tanzania", + "乌干达": "Oeganda", + "孟加拉国": "Bangladesh", + "以色列": "Israël", + "黎巴嫩": "Libanon", + "约旦": "Jordanië", + "伊拉克": "Irak", + "科威特": "Koeweit", + "巴林": "Bahrein", + "卡塔尔": "Qatar", + "阿曼": "Oman", + "阿富汗": "Afghanistan", + "斯里兰卡": "Sri Lanka", + "缅甸": "Myanmar", + "尼泊尔": "Nepal", + "蒙古": "Mongolië", + "柬埔寨": "Cambodja", + "老挝": "Laos", + "文莱": "Brunei", + "东帝汶": "Oost-Timor", + "斐济": "Fiji", + "所罗门群岛": "Salomonseilanden", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/pl_pl.dart b/lib/core/translations/language/pl_pl.dart index 213225eb5..4a5b4e21b 100644 --- a/lib/core/translations/language/pl_pl.dart +++ b/lib/core/translations/language/pl_pl.dart @@ -1,4 +1,5 @@ const Map plPL = { + // 通用 'continue': 'Kontynuuj', 'confirm': 'Potwierdź', @@ -18,6 +19,11 @@ const Map plPL = { "unknownError": "Nieznany błąd", "asrConnectionFailed": "Nie udało się połączyć z usługą rozpoznawania mowy. Sprawdź sieć lub spróbuj ponownie później.", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "Łącząc świat, poza dźwiękiem", @@ -28,7 +34,7 @@ const Map plPL = { "explore": "Odkrywaj", "settings": "Ustawienia", - // 语言 + // 语言列表 "followingSystem": "Zgodnie z systemem", "chinese": "Chiński", "english": "Angielski", @@ -72,7 +78,7 @@ const Map plPL = { "arabic": "Arabski", "persian": "Perski", - // 登录页 + // 登录模块 "welcome": "Witaj", "loginTips": "Zaloguj się lub zarejestruj za pomocą numeru telefonu lub adresu e-mail", @@ -101,13 +107,9 @@ const Map plPL = { "resendVerificationCode": "Wyślij kod weryfikacyjny ponownie", "login": "Zaloguj się", "usePasswordLogin": "Zaloguj się hasłem", - - // 隐私政策弹窗 "loginDeclaration": "Oświadczenie Voitrans", // Voitrans 声明 "welcomeToThisApp": "Witaj w Voitrans, prosimy o uważne przeczytanie", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", kliknięcie 'Zgadzam się i wchodzę' oznacza, że przeczytałeś i zgadzasz się z powyższymi umowami. Kliknięcie 'Nie zgadzam się' spowoduje wyjście z aplikacji.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Nie zgadzam się", // 不同意 @@ -168,7 +170,7 @@ const Map plPL = { 'checkConnectionStatusFailed': 'Sprawdzenie stanu połączenia nie powiodło się', -// 发现页 + // 发现页 "searchAi": "Szukaj funkcji AI...", "exploreSlogan": "Inteligentne słuchawki, nieskończone możliwości", "exploreSlogan1": "Inteligentny towarzysz, nieskończone możliwości", @@ -193,6 +195,7 @@ const Map plPL = { "usageStats": "Statystyki użycia", "usageStatsInfo": "Przeglądaj statystyki użycia aplikacji", "scene": "Scenariusz", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", @@ -213,7 +216,6 @@ const Map plPL = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -230,7 +232,6 @@ const Map plPL = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - // 通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", @@ -239,88 +240,79 @@ const Map plPL = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', 'remaining': 'Remaining', 'featureDescription': 'Feature Description', - // AI 功能卡片 + 'paymentSuccess': 'Płatność zakończona sukcesem', + 'paymentFailed': 'Płatność nie powiodła się', + 'gotIt': 'Rozumiem', + 'paymentFailedTryAgain': 'Płatność nie powiodła się. Spróbuj ponownie.', + 'selectPaymentMethod': 'Wybierz metodę płatności', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Nie udało się utworzyć zamówienia WeChat', + 'alipayOrderCreateFailed': 'Nie udało się utworzyć zamówienia Alipay', + 'appleOrderCreateFailed': 'Nie udało się utworzyć zamówienia Apple', + 'googleOrderCreateFailed': 'Nie udało się utworzyć zamówienia Google', + 'paypalOrderCreateFailed': 'Nie udało się utworzyć zamówienia PayPal', + 'paymentException': 'Błąd płatności', + 'paymentLaunchFailed': 'Nie udało się uruchomić płatności', + 'paymentExceptionWithError': 'Błąd płatności: @error', + 'paymentProcessingCheckLater': 'Twoje zamówienie jest przetwarzane. Sprawdź później.', + 'paymentResultQueryException': 'Nie udało się sprawdzić wyniku płatności: @error', + 'orderConfirmedQuotaRefreshed': 'Zamówienie potwierdzone. Twój limit został odświeżony.', + 'paymentCompletedConfirming': 'Płatność zakończona. Potwierdzanie…', + 'paymentCancelled': 'Płatność anulowana', + 'paypalOpenedCompleteInBrowser': 'PayPal otwarty. Dokończ płatność w przeglądarce.', + 'paypalOpenFailed': 'Nie można otworzyć strony płatności PayPal', + 'paymentTestTitle': 'Test płatności', + 'paymentTestOrderInfo': 'Informacje o zamówieniu testowym', + 'paymentTestProductId': 'ID produktu', + 'paymentTestProductDescription': 'Opis produktu', + 'paymentTestWechatDescription': 'Test płatności WeChat', + 'paymentTestAlipayDescription': 'Test płatności Alipay', + 'paymentTestAmount': 'Kwota', + 'paymentTestSelectAmount': 'Wybierz kwotę testową', + 'paying': 'Płacenie...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Status płatności', + 'errorInfoWithMessage': 'Błąd: @message', + 'retest': 'Ponowny test', + 'paymentTestInstructionsTitle': 'Instrukcja', + 'paymentTestInstructionsContent': '1. Wybierz kwotę testową (zalecane: ¥0.01)\n2. Kliknij przycisk płatności, aby rozpocząć\n3. Dokończ płatność w aplikacji płatniczej\n4. Wróć, aby sprawdzić wynik', + 'startingWechatPayment': 'Uruchamianie WeChat Pay...', + 'startingAlipayPayment': 'Uruchamianie Alipay...', + 'wechatPaymentSuccess': 'Płatność WeChat Pay zakończona sukcesem!', + 'wechatPaymentFailed': 'Płatność WeChat Pay nie powiodła się', + 'wechatPaymentLaunchFailed': 'Nie udało się uruchomić WeChat Pay', + 'cannotLaunchWechatPayment': 'Nie można uruchomić WeChat Pay', + 'wechatPaymentException': 'Błąd WeChat Pay', + 'wechatPaymentTestCompleted': 'Test płatności WeChat Pay zakończony', + 'alipayPaymentSuccess': 'Płatność Alipay zakończona sukcesem!', + 'alipayPaymentFailed': 'Płatność Alipay nie powiodła się', + 'alipayPaymentLaunchFailed': 'Nie udało się uruchomić Alipay', + 'cannotLaunchAlipayPayment': 'Nie można uruchomić Alipay', + 'alipayPaymentException': 'Błąd Alipay', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": + 'Insufficient balance, please go to the corresponding recharge page to recharge.', + "recharge": 'Go to Recharge', + "aiMemberExpiredDesc": + 'AI membership expired, please go to the membership recharge page to renew.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', 'aiHeaderDesc2': @@ -343,7 +335,46 @@ const Map plPL = { 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Real-time Transcription', + 'sceneLexicon': 'Scenario Glossary', + 'subtitleDisplay': 'Subtitles', + 'transHeaderDesc1': + 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', + 'translateZhEn': 'Chinese-English translation', + 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', + 'multiLangTextTranslation': 'Multilingual text translation', + 'termOptimizationContextPreserve': + 'Terminology optimization and context preservation', + 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', + 'personalVocabularyMemory': 'Personal vocabulary memory', + 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', + 'colorHighContrast': 'High color contrast', + 'transDisclaimer': + 'Translation performance depends on microphone, network latency, and ambient noise.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Meeting Recording', + 'transcriptionAndSummary': 'Transcription & Summary', + 'keywordSearch': 'Keyword Search', + 'collaborationSharing': 'Collaboration & Sharing', + 'meetingHeaderDesc1': + 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'meetingHeaderDesc2': + 'Suitable for business meetings, class notes, and interview minutes.', + 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingSpeakerTagging': 'Speaker labeling', + 'meetingLongAudioTranscription': 'Long audio transcription', + 'meetingKeyPointSummary': 'Key point extraction', + 'meetingTopicNameSearch': 'Search by topic/name', + 'meetingTimelineJump': 'Timeline jump', + 'meetingExportSummary': 'Export minutes', + 'meetingMultiPlatformShare': 'Share across platforms', + 'meetingDisclaimer': + 'Use in quiet environments; performance depends on microphone and network.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', 'higherQuota': 'Higher usage quota', 'lowerUnitPrice': 'Lower unit price', @@ -359,7 +390,32 @@ const Map plPL = { 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Translation Basic 100', + 'trans_002_name': 'Translation Basic 500', + 'trans_003_name': 'Translation Basic 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': 'Includes 100 translations (voice/text).', + 'trans_002_desc': 'Includes 500 translations (voice/text).', + 'trans_003_desc': 'Includes 1000 translations (voice/text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "Pomiń", 'next': 'Next', 'sayLilyHint': 'Say "Lily Lily" to the mic', @@ -370,7 +426,6 @@ const Map plPL = { 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', 'confirmInput': 'Confirm Input', 'guideClickSendPrefix': 'Tap send, ', - // AI 引导步骤 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', 'guideWeatherInput': 'What’s the weather today?', 'guideWeatherSend': 'Lily will report the weather in real time', @@ -397,7 +452,7 @@ const Map plPL = { 'guideSmsSend': 'Lily will send the message', 'guideSmsEnd': 'Message sent—voice control is convenient', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Rozpocznij spotkanie", 'edit': 'Edytuj', 'delete': 'Usuń', @@ -409,8 +464,6 @@ const Map plPL = { 'recordingDetails': 'Szczegóły nagrania', 'aiSummary': 'Podsumowanie AI', 'meetingTranscript': 'Transkrypcja spotkania', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -461,7 +514,6 @@ const Map plPL = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -470,6 +522,97 @@ const Map plPL = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': 'Utwórz', + 'templateDetails': 'Szczegóły szablonu', + 'tag': 'Tag', + 'description': 'Opis', + 'template': 'Szablon', + 'deleteTemplate': 'Usuń szablon', + 'deleteTemplateConfirm': 'Czy na pewno chcesz usunąć ten szablon?', + 'editTemplate': 'Edytuj szablon', + 'createTemplate': 'Utwórz szablon', + 'name': 'Nazwa', + 'templateContentHint': 'Proszę wpisać treść szablonu! Wskazówka: kliknij przycisk AI powyżej, aby szybko wygenerować treść szablonu na podstawie wpisanej nazwy i opisu', + 'inputNameHint': 'Proszę wpisać nazwę', + 'inputDescHint': 'Proszę wpisać opis', + 'custom': 'Niestandardowy', + 'pleaseEnter': 'Proszę wpisać', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': + 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Zapisz mapę myśli', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'Eksportuj', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Zastosuj do wszystkich akapitów tego mówcy', + 'summaryWillBeUpdatedAutomatically': + 'Podsumowanie będzie automatycznie aktualizowane na podstawie szablonu', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -488,7 +631,7 @@ const Map plPL = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -524,8 +667,6 @@ const Map plPL = { 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -554,105 +695,26 @@ const Map plPL = { 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Zastosuj do wszystkich akapitów tego mówcy', - 'summaryWillBeUpdatedAutomatically': - 'Podsumowanie będzie automatycznie aktualizowane na podstawie szablonu', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': 'Analiza nie powiodła się, spróbuj ponownie później', + 'transcriptionFailed': 'Transkrypcja nie powiodła się, spróbuj ponownie później', + 'summaryFailed': 'Nie udało się utworzyć podsumowania, spróbuj ponownie później', + 'summaryFailedShort': 'Podsumowanie nie powiodło się', + 'transcriptionFailedShort': 'Transkrypcja nie powiodła się', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Odtwarzacz audio nie jest gotowy, proszę czekać', + 'playFailed': 'Błąd odtwarzania', + 'audioFileNotFound': 'Nie znaleziono pliku audio', + 'fetchingAudio': 'Pobieranie audio z chmury...', + 'playerLoadFailed': 'Nie udało się załadować odtwarzacza audio', // 设置页 "systemSettings": "Ustawienia systemowe", @@ -706,26 +768,15 @@ const Map plPL = { "Aktualizacja wersji oprogramowania układowego słuchawek BLE", "deviceManagement": "Zarządzanie urządzeniami", "manageConnectedDevices": "Zarządzaj sparowanymi urządzeniami Bluetooth", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Masz już najnowszą wersję {version}', 'checkUpdateFailed': 'Sprawdzenie aktualizacji nie powiodło się', 'networkErrorRetry': 'Błąd sieci, spróbuj ponownie później', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Czat głosowy w czasie rzeczywistym", "realtimeVoiceChatInfo": "Doświadcz funkcji inteligentnej interakcji głosowej (podgląd funkcji)", "loading": "Ładowanie...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -741,8 +792,7 @@ const Map plPL = { "Are you sure you want to unbind device \"{deviceName}\"?", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Wyczyść historię czatu", "online": "Online", @@ -773,8 +823,9 @@ const Map plPL = { "swipeUpForMore": "Przesuń w górę, aby zobaczyć więcej", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': 'Po włączeniu: AI nie zostanie przerwany przez Twój głos podczas mówienia i może obsługiwać tylko jedną rundę rozmowy naraz. Aby rozpocząć nową rundę, po prostu powiedz słowo aktywacyjne.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -786,7 +837,7 @@ const Map plPL = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Cześć! Jestem **Lily**, mogę Ci pomóc:\n\n' '• Odpowiadać na pytania i dostarczać informacji\n\n' '• Tłumaczyć głosowo w czasie rzeczywistym\n\n' @@ -807,11 +858,11 @@ const Map plPL = { 'startPhoneCallMode': 'Rozpocznij tryb dzwonienia, rozpocznij wprowadzanie głosowe', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Wpisz swoją wiadomość tutaj...', // 全屏编辑器输入提示 'characterCount': '{count} znaków', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopiuj', 'copySuccess': 'Skopiowano pomyślnie', 'report': 'Zgłoś', @@ -819,7 +870,6 @@ const Map plPL = { 'submitFailed': 'Przesyłanie nie powiodło się', 'reportSubmitted': 'Zgłoszenie zostało przesłane, zajmiemy się nim jak najszybciej', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Szkodliwe/Niebezpieczne', 'pornographicVulgar': 'Pornograficzne/Wulgarne', 'misleadingAttack': 'Wprowadzające w błąd/Atak', @@ -830,17 +880,14 @@ const Map plPL = { 'other': 'Inne', 'reportDescriptionHint': 'Chcielibyśmy wiedzieć, dlaczego zgłaszasz, możesz opisać problem, z którym się spotkałeś.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Wygenerowano przez AI', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'Oto kilka polecanych utworów:', 'playList': 'Lista odtwarzania', 'moreMusic': 'Więcej muzyki', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'godz.', // 小时单位 @@ -855,7 +902,7 @@ const Map plPL = { "bicycling": 'Rowerem', "tsransit": 'Transport publiczny', - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Zapytanie o warunki pogodowe:', 'highest': 'Najwyższa', 'lowest': 'Najniższa', @@ -885,18 +932,8 @@ const Map plPL = { "friday": "Pt", "saturday": "Sob", "sunday": "Niedz", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Słonecznie", "partlyCloudy": "Częściowe zachmurzenie", "partlySunny": "Częściowo słonecznie", @@ -917,7 +954,130 @@ const Map plPL = { "haze": "Smog", "strongWind": "Silny wiatr", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "Historia tłumaczeń", + "enableRecording": "Włącz nagrywanie", + "viewAudioFiles": "Wyświetl pliki audio", + "headsetUser": "Użytkownik słuchawek", + "phoneUser": "Użytkownik telefonu", + "selectSourceLanguage": "Wybierz język źródłowy", + "selectTargetLanguage": "Wybierz język docelowy", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": + "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Brak historii", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "Wyczyść historię", + "clearHistoryConfirm": + "Czy na pewno chcesz wyczyścić całą historię tłumaczeń? Tej operacji nie można cofnąć.", + "unknownLanguage": "Nieznany język", + "deleteSessionRecord": "Usuń zapis sesji", + "deleteSessionConfirm": + "Czy na pewno chcesz usunąć wszystkie zapisy tłumaczeń dla tej sesji? Tej operacji nie można cofnąć.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": + "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": + "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": + "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": + "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Przetłumacz pliki audio", + "noAudioFiles": "Brak plików audio", + "calculating": "Obliczanie...", + "playing": "Odtwarzanie...", + "paused": "Wstrzymano", + "clickToPlay": "Kliknij, aby odtworzyć", + "rename": "Zmień nazwę", + "smartTranscription": "Inteligentna transkrypcja", + "renameAudioFile": "Zmień nazwę pliku audio", + "enterNewFileName": "Wprowadź nową nazwę pliku", + + // 翻译模块 - 翻译详情 + "originalRecord": "Oryginalny zapis", + "recordSummary": "Podsumowanie zapisu", + "clickToGenerateSummary": + "Kliknij przycisk poniżej, aby wygenerować podsumowanie sesji", + "summaryContent": "Treść podsumowania", + "copied": "Skopiowano", + "summaryCopiledToClipboard": "Podsumowanie skopiowano do schowka", + "extractSummary": "Wyodrębnij podsumowanie", + "summaryGenerated": "Wygenerowano podsumowanie", + "generating": "Generowanie...", + "regenerate": "Wygeneruj ponownie", + "summaryTimeoutMessage": + "Przekroczono czas oczekiwania na żądanie wygenerowania podsumowania, może to być spowodowane problemami z siecią lub zajętym serwerem.", + "deleteTranslationRecord": "Usuń zapis tłumaczenia", + "deleteTranslationConfirm": + "Czy na pewno chcesz usunąć ten zapis tłumaczenia? Tej operacji nie można cofnąć.", + "originalText": "Tekst oryginalny", + "translatedText": "Tekst przetłumaczony", + "sessionSummary": "Podsumowanie sesji", + "cannotShare": "Nie można udostępnić", + "generateSummaryFirst": "Najpierw wygeneruj podsumowanie", + "translationSessionRecord": "Zapis sesji tłumaczenia", + + // 个人资料模块 "editProfile": "Edytuj dane osobowe", "avatar": "Awatar", "nickname": "Pseudonim", @@ -933,8 +1093,6 @@ const Map plPL = { 'Czy na pewno chcesz trwale usunąć swoje konto? Tej operacji nie można cofnąć.', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'Błąd połączenia sieciowego, sprawdź ustawienia sieci i spróbuj ponownie', 'serverTemporarilyUnavailable': @@ -952,10 +1110,6 @@ const Map plPL = { 'Błąd połączenia sieciowego, sprawdź ustawienia sieci', 'serverInternalErrorRetryLater': 'Wewnętrzny błąd serwera, spróbuj ponownie później', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Kompresja obrazu nie powiodła się', 'avatarUpdateFailed': 'Aktualizacja awatara nie powiodła się', 'usernameCannotBeEmpty': 'Nazwa użytkownika nie może być pusta', @@ -967,8 +1121,6 @@ const Map plPL = { 'accountPermanentlyDeleted': 'Konto zostało trwale usunięte', 'deleteAccountFailedRetry': 'Usuwanie konta nie powiodło się, spróbuj ponownie', - - // 账号服务相关 'clearUserDataFailed': 'Wyczyszczenie danych użytkownika nie powiodło się', // 清理用户数据失败 'deleteUserDataFailed': @@ -987,7 +1139,12 @@ const Map plPL = { 'accountServiceInitialized': 'Usługa konta została zainicjowana', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': + 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', 'getPermissionStatusFailed': 'Pobranie stanu uprawnień nie powiodło się', 'communicationPermissions': 'Uprawnienia komunikacyjne', 'bluetoothPermissions': 'Bluetooth Permissions', @@ -1000,7 +1157,6 @@ const Map plPL = { 'phone': 'Telefon', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'Zapis do kalendarza', @@ -1056,8 +1212,6 @@ const Map plPL = { 'permanentDenialText': 'Trwale odmówiłeś uprawnienia {permission}, przejdź do ustawień aplikacji, aby je włączyć', 'goToSettings': 'Przejdź do ustawień', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': @@ -1082,7 +1236,6 @@ const Map plPL = { 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', @@ -1092,8 +1245,6 @@ const Map plPL = { 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', 'storagePermissionPermanentDenial': 'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', - - //permission_util.dart 'permissionUtilNeed': 'Need ', 'permissionUtilPermission': ' Permission', 'permissionUtilRestricted': ' Permission Restricted', @@ -1101,7 +1252,20 @@ const Map plPL = { 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Nawigacja w toku', + 'native.notification.navigation.keepRunning': 'Nawigacja, nie zamykaj aplikacji', + 'native.notification.bleAgent.running': 'Asystent głosowy działa', + 'native.notification.audioRecording.recording': 'Nagrywanie audio, dotknij, aby wrócić do aplikacji', + 'native.notification.music.waiting': 'Oczekiwanie na odtwarzanie', + 'native.notification.music.previous': 'Poprzedni', + 'native.notification.music.next': 'Następny', + 'native.notification.music.play': 'Odtwórz', + 'native.notification.music.pause': 'Pauza', + 'native.notification.qqMusic.playing': 'Odtwarzanie muzyki', + + // 版本更新 'newVersionFound': 'Znaleziono nową wersję', // 版本更新对话框标题 'remindLater': 'Przypomnij później', // 稍后提醒按钮 'updateNow': 'Zaktualizuj teraz', // 立即更新按钮 @@ -1112,253 +1276,7 @@ const Map plPL = { 'updateErrorRetry': 'Wystąpił błąd podczas aktualizacji, spróbuj ponownie później', // 更新错误重试提示 - //国家列表 - "邮箱": "E-mail", - "中国": "Chiny", - "美国": "Stany Zjednoczone", - "加拿大": "Kanada", - "俄罗斯": "Rosja", - "英国": "Wielka Brytania", - "德国": "Niemcy", - "意大利": "Włochy", - "法国": "Francja", - "西班牙": "Hiszpania", - "南非": "Republika Południowej Afryki", - "沙特阿拉伯": "Arabia Saudyjska", - "土耳其": "Turcja", - "日本": "Japonia", - "韩国": "Korea Południowa", - "新加坡": "Singapur", - "马来西亚": "Malezja", - "泰国": "Tajlandia", - "越南": "Wietnam", - "印度": "Indie", - "巴基斯坦": "Pakistan", - "菲律宾": "Filipiny", - "印度尼西亚": "Indonezja", - "阿联酋": "Zjednoczone Emiraty Arabskie", - "墨西哥": "Meksyk", - "巴西": "Brazylia", - "阿根廷": "Argentyna", - "澳大利亚": "Australia", - "新西兰": "Nowa Zelandia", - "中国香港": "Hongkong (Chiny)", - "中国澳门": "Makau (Chiny)", - "中国台湾": "Tajwan (Chiny)", - "埃及": "Egipt", - "希腊": "Grecja", - "荷兰": "Holandia", - "比利时": "Belgia", - "匈牙利": "Węgry", - "罗马尼亚": "Rumunia", - "瑞士": "Szwajcaria", - "奥地利": "Austria", - "丹麦": "Dania", - "瑞典": "Szwecja", - "挪威": "Norwegia", - "波兰": "Polska", - "秘鲁": "Peru", - "智利": "Chile", - "哥伦比亚": "Kolumbia", - "委内瑞拉": "Wenezuela", - "葡萄牙": "Portugalia", - "卢森堡": "Luksemburg", - "爱尔兰": "Irlandia", - "冰岛": "Islandia", - "阿尔巴尼亚": "Albania", - "马耳他": "Malta", - "塞浦路斯": "Cypr", - "芬兰": "Finlandia", - "保加利亚": "Bułgaria", - "立陶宛": "Litwa", - "拉脱维亚": "Łotwa", - "爱沙尼亚": "Estonia", - "乌克兰": "Ukraina", - "塞尔维亚": "Serbia", - "克罗地亚": "Chorwacja", - "斯洛文尼亚": "Słowenia", - "捷克": "Czechy", - "斯洛伐克": "Słowacja", - "危地马拉": "Gwatemala", - "萨尔瓦多": "Salwador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nikaragua", - "哥斯达黎加": "Kostaryka", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Boliwia", - "厄瓜多尔": "Ekwador", - "巴拉圭": "Paragwaj", - "乌拉圭": "Urugwaj", - "摩洛哥": "Maroko", - "阿尔及利亚": "Algieria", - "突尼斯": "Tunezja", - "尼日利亚": "Nigeria", - "加纳": "Ghana", - "埃塞俄比亚": "Etiopia", - "肯尼亚": "Kenia", - "坦桑尼亚": "Tanzania", - "乌干达": "Uganda", - "孟加拉国": "Bangladesz", - "以色列": "Izrael", - "黎巴嫩": "Liban", - "约旦": "Jordania", - "伊拉克": "Irak", - "科威特": "Kuwejt", - "巴林": "Bahrajn", - "卡塔尔": "Katar", - "阿曼": "Oman", - "阿富汗": "Afganistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Mjanma", - "尼泊尔": "Nepal", - "蒙古": "Mongolia", - "柬埔寨": "Kambodża", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "Timor Wschodni", - "斐济": "Fidżi", - "所罗门群岛": "Wyspy Salomona", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Historia tłumaczeń", - "enableRecording": "Włącz nagrywanie", - "viewAudioFiles": "Wyświetl pliki audio", - "headsetUser": "Użytkownik słuchawek", - "phoneUser": "Użytkownik telefonu", - "selectSourceLanguage": "Wybierz język źródłowy", - "selectTargetLanguage": "Wybierz język docelowy", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Brak historii", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Wyczyść historię", - "clearHistoryConfirm": - "Czy na pewno chcesz wyczyścić całą historię tłumaczeń? Tej operacji nie można cofnąć.", - "unknownLanguage": "Nieznany język", - "deleteSessionRecord": "Usuń zapis sesji", - "deleteSessionConfirm": - "Czy na pewno chcesz usunąć wszystkie zapisy tłumaczeń dla tej sesji? Tej operacji nie można cofnąć.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Przetłumacz pliki audio", - "noAudioFiles": "Brak plików audio", - "calculating": "Obliczanie...", - "playing": "Odtwarzanie...", - "paused": "Wstrzymano", - "clickToPlay": "Kliknij, aby odtworzyć", - "rename": "Zmień nazwę", - "smartTranscription": "Inteligentna transkrypcja", - "renameAudioFile": "Zmień nazwę pliku audio", - "enterNewFileName": "Wprowadź nową nazwę pliku", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Oryginalny zapis", - "recordSummary": "Podsumowanie zapisu", - "clickToGenerateSummary": - "Kliknij przycisk poniżej, aby wygenerować podsumowanie sesji", - "summaryContent": "Treść podsumowania", - "copied": "Skopiowano", - "summaryCopiledToClipboard": "Podsumowanie skopiowano do schowka", - "extractSummary": "Wyodrębnij podsumowanie", - "summaryGenerated": "Wygenerowano podsumowanie", - "generating": "Generowanie...", - "regenerate": "Wygeneruj ponownie", - "summaryTimeoutMessage": - "Przekroczono czas oczekiwania na żądanie wygenerowania podsumowania, może to być spowodowane problemami z siecią lub zajętym serwerem.", - "deleteTranslationRecord": "Usuń zapis tłumaczenia", - "deleteTranslationConfirm": - "Czy na pewno chcesz usunąć ten zapis tłumaczenia? Tej operacji nie można cofnąć.", - "originalText": "Tekst oryginalny", - "translatedText": "Tekst przetłumaczony", - "sessionSummary": "Podsumowanie sesji", - "cannotShare": "Nie można udostępnić", - "generateSummaryFirst": "Najpierw wygeneruj podsumowanie", - "translationSessionRecord": "Zapis sesji tłumaczenia", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Parowanie urządzenia", "connectYourDeepSoundHeadset": "Połącz swoje słuchawki Voitrans", "bind": "Powiąż", @@ -1367,14 +1285,11 @@ const Map plPL = { "autoInputCode": "Automatyczne wprowadzanie kodu", "skipBinding": "Pomiń powiązanie", "rescan": "Skanuj ponownie", - "verifyingDevice": "Weryfikacja urządzenia...", "confirmBinding": "Potwierdź powiązanie", "associatingDevice": "Kojarzenie urządzenia...", "goToBluetoothSettings": "Przejdź do ustawień Bluetooth", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Gotowy do parowania", "preparingPairingEnvironment": "Przygotowywanie środowiska do parowania...", "connectDeepSoundViaSystemBluetooth": @@ -1384,8 +1299,6 @@ const Map plPL = { "waitingCompletePairing": "Poczekaj, kończenie parowania...", "pairingSuccessRedirecting": "Parowanie zakończone sukcesem! Przekierowywanie na stronę główną...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Upewnij się, że jesteś połączony z urządzeniem Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1398,19 +1311,12 @@ const Map plPL = { "authorizationFailedCheckCode": "Autoryzacja nie powiodła się, sprawdź, czy kod autoryzacji jest poprawny", "pairingFailedRetry": "Parowanie nie powiodło się, spróbuj ponownie", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Włącz Bluetooth', 'deviceDisconnected': 'Urządzenie odłączone', 'readyToStartPairing': 'Gotowy do rozpoczęcia parowania', 'checkingEnvironment': 'Sprawdzanie środowiska...', 'ensureHeadsetOnAndPairingMode': 'Upewnij się, że słuchawki są włączone i w trybie parowania', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Ustanawianie bezpiecznego połączenia...', 'needManualBindingAuthCode': 'Wymagany jest kod autoryzacji do ręcznego powiązania...', @@ -1433,8 +1339,6 @@ const Map plPL = { 'bleConnectionFailed': 'Połączenie BLE nie powiodło się', 'deviceAuthorizationFailedCheckCode': 'Autoryzacja urządzenia nie powiodła się, sprawdź kod autoryzacji', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1447,7 +1351,18 @@ const Map plPL = { 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Opinie użytkowników", 'feedbackInfo': 'Prześlij opinię lub sugestię', 'feedbackDescription': 'Opisz problem, który napotkałeś, lub swoją sugestię', @@ -1490,7 +1405,7 @@ const Map plPL = { "removeEarbudsEnsureBattery": "Wyjmij obie słuchawki i upewnij się, że poziom naładowania baterii obu wynosi ponad 20%", - // 音乐列表页面 + // 音乐模块 "noMusic": "Brak muzyki", // 暂无音乐 "noPlayingMusic": "Brak odtwarzanej muzyki", // 暂无播放音乐 "unknownSong": "Nieznana piosenka", // 未知歌曲 @@ -1538,22 +1453,122 @@ const Map plPL = { "波斯语": "Perski", "斯瓦希里语": "Suahili", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "E-mail", + "中国": "Chiny", + "美国": "Stany Zjednoczone", + "加拿大": "Kanada", + "俄罗斯": "Rosja", + "英国": "Wielka Brytania", + "德国": "Niemcy", + "意大利": "Włochy", + "法国": "Francja", + "西班牙": "Hiszpania", + "南非": "Republika Południowej Afryki", + "沙特阿拉伯": "Arabia Saudyjska", + "土耳其": "Turcja", + "日本": "Japonia", + "韩国": "Korea Południowa", + "新加坡": "Singapur", + "马来西亚": "Malezja", + "泰国": "Tajlandia", + "越南": "Wietnam", + "印度": "Indie", + "巴基斯坦": "Pakistan", + "菲律宾": "Filipiny", + "印度尼西亚": "Indonezja", + "阿联酋": "Zjednoczone Emiraty Arabskie", + "墨西哥": "Meksyk", + "巴西": "Brazylia", + "阿根廷": "Argentyna", + "澳大利亚": "Australia", + "新西兰": "Nowa Zelandia", + "中国香港": "Hongkong (Chiny)", + "中国澳门": "Makau (Chiny)", + "中国台湾": "Tajwan (Chiny)", + "埃及": "Egipt", + "希腊": "Grecja", + "荷兰": "Holandia", + "比利时": "Belgia", + "匈牙利": "Węgry", + "罗马尼亚": "Rumunia", + "瑞士": "Szwajcaria", + "奥地利": "Austria", + "丹麦": "Dania", + "瑞典": "Szwecja", + "挪威": "Norwegia", + "波兰": "Polska", + "秘鲁": "Peru", + "智利": "Chile", + "哥伦比亚": "Kolumbia", + "委内瑞拉": "Wenezuela", + "葡萄牙": "Portugalia", + "卢森堡": "Luksemburg", + "爱尔兰": "Irlandia", + "冰岛": "Islandia", + "阿尔巴尼亚": "Albania", + "马耳他": "Malta", + "塞浦路斯": "Cypr", + "芬兰": "Finlandia", + "保加利亚": "Bułgaria", + "立陶宛": "Litwa", + "拉脱维亚": "Łotwa", + "爱沙尼亚": "Estonia", + "乌克兰": "Ukraina", + "塞尔维亚": "Serbia", + "克罗地亚": "Chorwacja", + "斯洛文尼亚": "Słowenia", + "捷克": "Czechy", + "斯洛伐克": "Słowacja", + "危地马拉": "Gwatemala", + "萨尔瓦多": "Salwador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nikaragua", + "哥斯达黎加": "Kostaryka", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Boliwia", + "厄瓜多尔": "Ekwador", + "巴拉圭": "Paragwaj", + "乌拉圭": "Urugwaj", + "摩洛哥": "Maroko", + "阿尔及利亚": "Algieria", + "突尼斯": "Tunezja", + "尼日利亚": "Nigeria", + "加纳": "Ghana", + "埃塞俄比亚": "Etiopia", + "肯尼亚": "Kenia", + "坦桑尼亚": "Tanzania", + "乌干达": "Uganda", + "孟加拉国": "Bangladesz", + "以色列": "Izrael", + "黎巴嫩": "Liban", + "约旦": "Jordania", + "伊拉克": "Irak", + "科威特": "Kuwejt", + "巴林": "Bahrajn", + "卡塔尔": "Katar", + "阿曼": "Oman", + "阿富汗": "Afganistan", + "斯里兰卡": "Sri Lanka", + "缅甸": "Mjanma", + "尼泊尔": "Nepal", + "蒙古": "Mongolia", + "柬埔寨": "Kambodża", + "老挝": "Laos", + "文莱": "Brunei", + "东帝汶": "Timor Wschodni", + "斐济": "Fidżi", + "所罗门群岛": "Wyspy Salomona", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/pt_pt.dart b/lib/core/translations/language/pt_pt.dart index a8ae57835..c2c1bd629 100644 --- a/lib/core/translations/language/pt_pt.dart +++ b/lib/core/translations/language/pt_pt.dart @@ -1,4 +1,5 @@ const Map ptPT = { + // 通用 'continue': 'Continuar', 'confirm': 'Confirmar', @@ -18,6 +19,11 @@ const Map ptPT = { "unknownError": "Erro Desconhecido", "asrConnectionFailed": "Falha na ligação ao serviço de reconhecimento de voz. Verifique a rede ou tente novamente mais tarde.", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "Conectando o mundo, para além do som", @@ -28,7 +34,7 @@ const Map ptPT = { "explore": "Explorar", "settings": "Definições", - // 语言 + // 语言列表 "followingSystem": "Seguir Sistema", "chinese": "Chinês", "english": "Inglês", @@ -72,7 +78,7 @@ const Map ptPT = { "arabic": "Árabe", "persian": "Persa", - // 登录页 + // 登录模块 "welcome": "Bem-vindo", "loginTips": "Faça login ou registe-se com o seu número de telemóvel ou e-mail", @@ -101,13 +107,9 @@ const Map ptPT = { "resendVerificationCode": "Reenviar código de verificação", "login": "Iniciar Sessão", "usePasswordLogin": "Iniciar sessão com palavra-passe", - - // 隐私政策弹窗 "loginDeclaration": "Declaração Voitrans", // Voitrans 声明 "welcomeToThisApp": "Bem-vindo à Voitrans, por favor, leia atentamente", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", clicar em 'Concordo e Entrar' significa que leu e concorda com os acordos acima. Clicar em 'Discordo' sairá da aplicação.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Discordo", // 不同意 @@ -170,7 +172,7 @@ const Map ptPT = { 'right': 'Direita', 'checkConnectionStatusFailed': 'Falha ao verificar o estado da conexão', -// 发现页 + // 发现页 "searchAi": "Pesquisar funções de IA...", "exploreSlogan": "Auriculares inteligentes, possibilidades infinitas", "exploreSlogan1": "Companhia inteligente, possibilidades infinitas", @@ -195,6 +197,7 @@ const Map ptPT = { "usageStats": "Estatísticas de Uso", "usageStatsInfo": "Visualize as estatísticas de uso da sua aplicação", "scene": "Cenário", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", @@ -215,7 +218,6 @@ const Map ptPT = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -232,7 +234,6 @@ const Map ptPT = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - // 通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", @@ -241,89 +242,79 @@ const Map ptPT = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', 'remaining': 'Remaining', 'featureDescription': 'Feature Description', - // AI 功能卡片 + 'paymentSuccess': 'Pagamento bem-sucedido', + 'paymentFailed': 'Pagamento falhou', + 'gotIt': 'Entendido', + 'paymentFailedTryAgain': 'Pagamento falhou. Por favor, tente novamente.', + 'selectPaymentMethod': 'Selecione o método de pagamento', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Falha ao criar pedido do WeChat', + 'alipayOrderCreateFailed': 'Falha ao criar pedido do Alipay', + 'appleOrderCreateFailed': 'Falha ao criar pedido da Apple', + 'googleOrderCreateFailed': 'Falha ao criar pedido do Google', + 'paypalOrderCreateFailed': 'Falha ao criar pedido do PayPal', + 'paymentException': 'Exceção de pagamento', + 'paymentLaunchFailed': 'Falha ao iniciar o pagamento', + 'paymentExceptionWithError': 'Exceção de pagamento: @error', + 'paymentProcessingCheckLater': 'O seu pedido está a ser processado. Por favor, verifique mais tarde.', + 'paymentResultQueryException': 'Falha ao consultar o resultado do pagamento: @error', + 'orderConfirmedQuotaRefreshed': 'Pedido confirmado. A sua quota foi atualizada.', + 'paymentCompletedConfirming': 'Pagamento concluído. A confirmar…', + 'paymentCancelled': 'Pagamento cancelado', + 'paypalOpenedCompleteInBrowser': 'PayPal aberto. Por favor, conclua o pagamento no seu navegador.', + 'paypalOpenFailed': 'Não é possível abrir a página de pagamento do PayPal', + 'paymentTestTitle': 'Teste de pagamento', + 'paymentTestOrderInfo': 'Informações do pedido de teste', + 'paymentTestProductId': 'ID do produto', + 'paymentTestProductDescription': 'Descrição do produto', + 'paymentTestWechatDescription': 'Teste de pagamento via WeChat', + 'paymentTestAlipayDescription': 'Teste de pagamento via Alipay', + 'paymentTestAmount': 'Montante', + 'paymentTestSelectAmount': 'Selecione o montante de teste', + 'paying': 'A pagar...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Estado do pagamento', + 'errorInfoWithMessage': 'Erro: @message', + 'retest': 'Testar novamente', + 'paymentTestInstructionsTitle': 'Instruções', + 'paymentTestInstructionsContent': '1. Selecione um montante de teste (recomendado: ¥0.01)\n2. Clique no botão de pagamento para iniciar\n3. Conclua o pagamento na aplicação de pagamento\n4. Volte para verificar o resultado', + 'startingWechatPayment': 'A iniciar o WeChat Pay...', + 'startingAlipayPayment': 'A iniciar o Alipay...', + 'wechatPaymentSuccess': 'Pagamento via WeChat Pay bem-sucedido!', + 'wechatPaymentFailed': 'Falha no WeChat Pay', + 'wechatPaymentLaunchFailed': 'Falha ao iniciar o WeChat Pay', + 'cannotLaunchWechatPayment': 'Não é possível iniciar o WeChat Pay', + 'wechatPaymentException': 'Exceção do WeChat Pay', + 'wechatPaymentTestCompleted': 'Teste do WeChat Pay concluído', + 'alipayPaymentSuccess': 'Pagamento via Alipay bem-sucedido!', + 'alipayPaymentFailed': 'Falha no Alipay', + 'alipayPaymentLaunchFailed': 'Falha ao iniciar o Alipay', + 'cannotLaunchAlipayPayment': 'Não é possível iniciar o Alipay', + 'alipayPaymentException': 'Exceção do Alipay', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": + 'Insufficient balance, please go to the corresponding recharge page to recharge.', + "recharge": 'Go to Recharge', + "aiMemberExpiredDesc": + 'AI membership expired, please go to the membership recharge page to renew.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Tradução Básica 100', - 'trans_002_name': 'Tradução Básica 500', - 'trans_003_name': 'Tradução Básica 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Inclui 100 traduções (voz/texto).', - 'trans_002_desc': 'Inclui 500 traduções (voz/texto).', - 'trans_003_desc': 'Inclui 1000 traduções (voz/texto).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Interpretação simultânea e tradução de texto em tempo real, com voz de baixa latência.', - 'transHeaderDesc2': 'Adequado para viagens, negócios, palestras e ensino.', - 'translateZhEn': 'Tradução Chinês-Inglês', - 'lowLatencyVoiceBroadcast': 'Transmissão de voz de baixa latência', - 'multiLangTextTranslation': 'Tradução de texto multilingue', - 'termOptimizationContextPreserve': - 'Otimização de terminologia e preservação de contexto', - 'lexiconTourBusinessLife': 'Léxicos de viagem/negócios/vida', - 'personalVocabularyMemory': 'Memória de vocabulário pessoal', - 'conversationSubtitleLargeText': - 'Legendagem de conversas / modo de texto grande', - 'colorHighContrast': 'Alto contraste de cor', - 'transDisclaimer': - 'O desempenho da tradução depende do microfone, da latência da rede e do ruído ambiente.', - - // AI 商品页描述 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', 'aiHeaderDesc2': @@ -346,7 +337,47 @@ const Map ptPT = { 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Real-time Transcription', + 'sceneLexicon': 'Scenario Glossary', + 'subtitleDisplay': 'Subtitles', + 'transHeaderDesc1': + 'Interpretação simultânea e tradução de texto em tempo real, com voz de baixa latência.', + 'transHeaderDesc2': 'Adequado para viagens, negócios, palestras e ensino.', + 'translateZhEn': 'Tradução Chinês-Inglês', + 'lowLatencyVoiceBroadcast': 'Transmissão de voz de baixa latência', + 'multiLangTextTranslation': 'Tradução de texto multilingue', + 'termOptimizationContextPreserve': + 'Otimização de terminologia e preservação de contexto', + 'lexiconTourBusinessLife': 'Léxicos de viagem/negócios/vida', + 'personalVocabularyMemory': 'Memória de vocabulário pessoal', + 'conversationSubtitleLargeText': + 'Legendagem de conversas / modo de texto grande', + 'colorHighContrast': 'Alto contraste de cor', + 'transDisclaimer': + 'O desempenho da tradução depende do microfone, da latência da rede e do ruído ambiente.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Meeting Recording', + 'transcriptionAndSummary': 'Transcription & Summary', + 'keywordSearch': 'Keyword Search', + 'collaborationSharing': 'Collaboration & Sharing', + 'meetingHeaderDesc1': + 'Audio recording, transcription, keyword search, and auto summary.', + 'meetingHeaderDesc2': + 'Suitable for business meetings, class notes, and interview minutes.', + 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingSpeakerTagging': 'Speaker labeling', + 'meetingLongAudioTranscription': 'Long audio transcription', + 'meetingKeyPointSummary': 'Key point extraction', + 'meetingTopicNameSearch': 'Search by topic/name', + 'meetingTimelineJump': 'Timeline jump', + 'meetingExportSummary': 'Export minutes', + 'meetingMultiPlatformShare': 'Share across platforms', + 'meetingDisclaimer': + 'Use in quiet environments; performance depends on microphone and network.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Visão geral de benefícios', 'higherQuota': 'Maior quota de utilização', 'lowerUnitPrice': 'Preço unitário inferior', @@ -362,7 +393,32 @@ const Map ptPT = { 'vipDisclaimer': 'Os benefícios reais dependem dos detalhes do pacote e podem mudar entre versões.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Tradução Básica 100', + 'trans_002_name': 'Tradução Básica 500', + 'trans_003_name': 'Tradução Básica 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': 'Inclui 100 traduções (voz/texto).', + 'trans_002_desc': 'Inclui 500 traduções (voz/texto).', + 'trans_003_desc': 'Inclui 1000 traduções (voz/texto).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "Saltar", 'next': 'Next', 'sayLilyHint': "Say \"Lily Lily\" to the mic", @@ -373,7 +429,6 @@ const Map ptPT = { 'guideAwakenSuccess': "Great! Lily is awake—ask it to help.", 'confirmInput': "Confirm Input", 'guideClickSendPrefix': "Tap send, ", - // AI 引导步骤 'guideWeatherStart': "Tell Lily: “What’s the weather today?”", 'guideWeatherInput': "What’s the weather today?", 'guideWeatherSend': "Lily will report the weather in real time", @@ -400,7 +455,7 @@ const Map ptPT = { 'guideSmsSend': "Lily will send the message", 'guideSmsEnd': "Message sent—voice control is convenient", - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Iniciar Reunião", 'edit': 'Editar', 'delete': 'Eliminar', @@ -412,8 +467,6 @@ const Map ptPT = { 'recordingDetails': 'Detalhes da Gravação', 'aiSummary': 'Resumo IA', 'meetingTranscript': 'Transcrição da Reunião', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -472,7 +525,6 @@ const Map ptPT = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -481,6 +533,97 @@ const Map ptPT = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': 'Criar', + 'templateDetails': 'Detalhes do modelo', + 'tag': 'Etiqueta', + 'description': 'Descrição', + 'template': 'Modelo', + 'deleteTemplate': 'Eliminar modelo', + 'deleteTemplateConfirm': 'Tem a certeza de que deseja eliminar este modelo?', + 'editTemplate': 'Editar modelo', + 'createTemplate': 'Criar modelo', + 'name': 'Nome', + 'templateContentHint': 'Por favor, insira o conteúdo do modelo! Dica: Clique no botão de IA acima para gerar rapidamente o conteúdo do modelo com base no nome e na descrição que introduziu', + 'inputNameHint': 'Por favor, insira o nome', + 'inputDescHint': 'Por favor, insira a descrição', + 'custom': 'Personalizado', + 'pleaseEnter': 'Por favor, insira', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': + 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Guardar mapa mental', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'Exportar', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Aplicar a todos os parágrafos deste orador', + 'summaryWillBeUpdatedAutomatically': + 'O resumo será atualizado automaticamente com base no modelo', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -499,7 +642,7 @@ const Map ptPT = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -535,8 +678,6 @@ const Map ptPT = { 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -565,105 +706,26 @@ const Map ptPT = { 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Aplicar a todos os parágrafos deste orador', - 'summaryWillBeUpdatedAutomatically': - 'O resumo será atualizado automaticamente com base no modelo', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': 'Análise falhou, por favor tente mais tarde', + 'transcriptionFailed': 'Transcrição falhou, por favor tente mais tarde', + 'summaryFailed': 'Resumo falhou, por favor tente mais tarde', + 'summaryFailedShort': 'Resumo falhou', + 'transcriptionFailedShort': 'Transcrição falhou', + + // Meeting模块 - 播放器 + 'playerNotReady': 'O reprodutor de áudio não está pronto, por favor aguarde', + 'playFailed': 'Reprodução falhou', + 'audioFileNotFound': 'Ficheiro de áudio não encontrado', + 'fetchingAudio': 'A obter áudio da nuvem...', + 'playerLoadFailed': 'Falha ao carregar o reprodutor de áudio', // 设置页 "systemSettings": "Definições do Sistema", @@ -718,26 +780,15 @@ const Map ptPT = { "Atualização da Versão do Firmware dos Auriculares BLE", "deviceManagement": "Gestão de Dispositivos", "manageConnectedDevices": "Gerir dispositivos Bluetooth emparelhados", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Já tem a versão mais recente {version}', 'checkUpdateFailed': 'Falha ao verificar atualizações', 'networkErrorRetry': 'Erro de rede, tente novamente mais tarde', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Chat de Voz em Tempo Real", "realtimeVoiceChatInfo": "Experimente a função de interação de voz inteligente (pré-visualização da função)", "loading": "A carregar...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -753,8 +804,7 @@ const Map ptPT = { "Are you sure you want to unbind device \"{deviceName}\"?", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Limpar Histórico de Chat", "online": "Online", @@ -785,8 +835,9 @@ const Map ptPT = { "swipeUpForMore": "Deslize para cima para ver mais", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': 'Quando ativado: A IA não será interrompida pela sua voz enquanto fala e só poderá lidar com uma ronda de conversa de cada vez. Para iniciar uma nova ronda, basta dizer a palavra de ativação.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -798,7 +849,7 @@ const Map ptPT = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Olá! Eu sou a **Lily**, posso ajudá-lo(a) a:\n\n' '• Responder a perguntas e fornecer informações\n\n' '• Traduzir voz em tempo real\n\n' @@ -818,18 +869,17 @@ const Map ptPT = { 'startVoiceInput': 'Iniciar entrada de voz', 'startPhoneCallMode': 'Iniciar modo de chamada, iniciar entrada de voz', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Introduza a sua mensagem aqui...', // 全屏编辑器输入提示 'characterCount': '{count} caracteres', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Copiar', 'copySuccess': 'Copiado com sucesso', 'report': 'Denunciar', 'submitSuccess': 'Enviado com sucesso', 'submitFailed': 'Falha no envio', 'reportSubmitted': 'Denúncia enviada, iremos processá-la em breve', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Nocivo/Inseguro', 'pornographicVulgar': 'Pornográfico/Vulgar', 'misleadingAttack': 'Enganoso/Ataque', @@ -839,17 +889,14 @@ const Map ptPT = { 'other': 'Outro', 'reportDescriptionHint': 'Gostaríamos de saber o motivo da sua denúncia, pode descrever o problema que encontrou.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Gerado por IA', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'Aqui estão algumas músicas recomendadas:', 'playList': 'Lista de Reprodução', 'moreMusic': 'Mais Música', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'horas', // 小时单位 @@ -864,7 +911,7 @@ const Map ptPT = { "bicycling": "De bicicleta", "tsransit": "Transportes Públicos", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'A consultar as condições meteorológicas:', 'highest': 'Máxima', 'lowest': 'Mínima', @@ -894,18 +941,8 @@ const Map ptPT = { "friday": "Sex", "saturday": "Sáb", "sunday": "Dom", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Ensolarado", "partlyCloudy": "Pouco Nublado", "partlySunny": "Parcialmente Ensolarado", @@ -926,7 +963,130 @@ const Map ptPT = { "haze": "Névoa Seca", "strongWind": "Vento Forte", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "Histórico de Traduções", + "enableRecording": "Ativar Gravação", + "viewAudioFiles": "Ver Ficheiros de Áudio", + "headsetUser": "Utilizador de Auriculares", + "phoneUser": "Utilizador de Telemóvel", + "selectSourceLanguage": "Selecionar idioma de origem", + "selectTargetLanguage": "Selecionar idioma de destino", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": + "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Ainda não há histórico", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "Limpar Histórico", + "clearHistoryConfirm": + "Tem a certeza que quer limpar todo o histórico de traduções? Esta ação não pode ser revertida.", + "unknownLanguage": "Idioma Desconhecido", + "deleteSessionRecord": "Eliminar Registo da Sessão", + "deleteSessionConfirm": + "Tem a certeza que quer eliminar todos os registos de tradução desta sessão? Esta ação não pode ser revertida.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": + "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": + "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": + "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": + "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Traduzir Ficheiros de Áudio", + "noAudioFiles": "Ainda não há ficheiros de áudio", + "calculating": "A calcular...", + "playing": "A reproduzir...", + "paused": "Em pausa", + "clickToPlay": "Clique para reproduzir", + "rename": "Renomear", + "smartTranscription": "Transcrição Inteligente", + "renameAudioFile": "Renomear ficheiro de áudio", + "enterNewFileName": "Introduza um novo nome de ficheiro", + + // 翻译模块 - 翻译详情 + "originalRecord": "Registo Original", + "recordSummary": "Resumo do Registo", + "clickToGenerateSummary": + "Clique no botão abaixo para gerar um resumo da sessão", + "summaryContent": "Conteúdo do Resumo", + "copied": "Copiado", + "summaryCopiledToClipboard": "Resumo copiado para a área de transferência", + "extractSummary": "Extrair Resumo", + "summaryGenerated": "Resumo gerado", + "generating": "A gerar...", + "regenerate": "Regenerar", + "summaryTimeoutMessage": + "O pedido de geração de resumo expirou, pode ser devido a problemas de rede ou servidor ocupado.", + "deleteTranslationRecord": "Eliminar Registo de Tradução", + "deleteTranslationConfirm": + "Tem a certeza que quer eliminar este registo de tradução? Esta ação não pode ser revertida.", + "originalText": "Texto Original", + "translatedText": "Texto Traduzido", + "sessionSummary": "Resumo da Sessão", + "cannotShare": "Não é possível partilhar", + "generateSummaryFirst": "Por favor, gere primeiro um resumo", + "translationSessionRecord": "Registo da Sessão de Tradução", + + // 个人资料模块 "editProfile": "Editar Informações Pessoais", "avatar": "Avatar", "nickname": "Alcunha", @@ -942,8 +1102,6 @@ const Map ptPT = { 'Tem a certeza que quer eliminar permanentemente a sua conta? Esta ação não pode ser revertida.', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'Falha na ligação à rede, verifique as definições de rede e tente novamente', 'serverTemporarilyUnavailable': @@ -962,10 +1120,6 @@ const Map ptPT = { 'Falha na ligação à rede, verifique as definições de rede', 'serverInternalErrorRetryLater': 'Erro interno do servidor, tente novamente mais tarde', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Falha na compressão da imagem', 'avatarUpdateFailed': 'Falha na atualização do avatar', 'usernameCannotBeEmpty': 'O nome de utilizador não pode estar vazio', @@ -976,8 +1130,6 @@ const Map ptPT = { 'logoutFailedRetry': 'Falha ao terminar a sessão, tente novamente', 'accountPermanentlyDeleted': 'A conta foi eliminada permanentemente', 'deleteAccountFailedRetry': 'Falha ao eliminar a conta, tente novamente', - - // 账号服务相关 'clearUserDataFailed': 'Falha ao limpar os dados do utilizador', // 清理用户数据失败 'deleteUserDataFailed': 'Falha ao eliminar os dados do utilizador', // 删除用户数据失败 @@ -995,7 +1147,12 @@ const Map ptPT = { 'accountServiceInitialized': 'Serviço de Conta inicializado', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': + 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', 'getPermissionStatusFailed': 'Falha ao obter o estado da permissão', 'communicationPermissions': 'Permissões de Comunicação', 'bluetoothPermissions': 'Bluetooth Permissions', @@ -1008,7 +1165,6 @@ const Map ptPT = { 'phone': 'Telefone', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'Escrever no Calendário', @@ -1064,8 +1220,6 @@ const Map ptPT = { 'permanentDenialText': 'Negou permanentemente a permissão de {permission}, por favor, vá às definições da aplicação para a ativar', 'goToSettings': 'Ir para Definições', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': @@ -1090,7 +1244,6 @@ const Map ptPT = { 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', @@ -1100,8 +1253,6 @@ const Map ptPT = { 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', 'storagePermissionPermanentDenial': 'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', - - //permission_util.dart 'permissionUtilNeed': 'Need ', 'permissionUtilPermission': ' Permission', 'permissionUtilRestricted': ' Permission Restricted', @@ -1109,7 +1260,20 @@ const Map ptPT = { 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navegação em curso', + 'native.notification.navigation.keepRunning': 'A navegar, mantenha a aplicação em execução', + 'native.notification.bleAgent.running': 'O assistente de voz está em execução', + 'native.notification.audioRecording.recording': 'A gravar áudio, toque para voltar à aplicação', + 'native.notification.music.waiting': 'A aguardar reprodução', + 'native.notification.music.previous': 'Anterior', + 'native.notification.music.next': 'Seguinte', + 'native.notification.music.play': 'Reproduzir', + 'native.notification.music.pause': 'Pausa', + 'native.notification.qqMusic.playing': 'A reproduzir música', + + // 版本更新 'newVersionFound': 'Nova Versão Encontrada', // 版本更新对话框标题 'remindLater': 'Lembrar Mais Tarde', // 稍后提醒按钮 'updateNow': 'Atualizar Agora', // 立即更新按钮 @@ -1120,253 +1284,7 @@ const Map ptPT = { 'updateErrorRetry': 'Ocorreu um erro durante a atualização, por favor, tente novamente mais tarde', // 更新错误重试提示 - //国家列表 - "邮箱": "E-mail", - "中国": "China", - "美国": "Estados Unidos", - "加拿大": "Canadá", - "俄罗斯": "Rússia", - "英国": "Reino Unido", - "德国": "Alemanha", - "意大利": "Itália", - "法国": "França", - "西班牙": "Espanha", - "南非": "África do Sul", - "沙特阿拉伯": "Arábia Saudita", - "土耳其": "Turquia", - "日本": "Japão", - "韩国": "Coreia do Sul", - "新加坡": "Singapura", - "马来西亚": "Malásia", - "泰国": "Tailândia", - "越南": "Vietname", - "印度": "Índia", - "巴基斯坦": "Paquistão", - "菲律宾": "Filipinas", - "印度尼西亚": "Indonésia", - "阿联酋": "Emirados Árabes Unidos", - "墨西哥": "México", - "巴西": "Brasil", - "阿根廷": "Argentina", - "澳大利亚": "Austrália", - "新西兰": "Nova Zelândia", - "中国香港": "Hong Kong (China)", - "中国澳门": "Macau (China)", - "中国台湾": "Taiwan (China)", - "埃及": "Egito", - "希腊": "Grécia", - "荷兰": "Países Baixos", - "比利时": "Bélgica", - "匈牙利": "Hungria", - "罗马尼亚": "Roménia", - "瑞士": "Suíça", - "奥地利": "Áustria", - "丹麦": "Dinamarca", - "瑞典": "Suécia", - "挪威": "Noruega", - "波兰": "Polónia", - "秘鲁": "Peru", - "智利": "Chile", - "哥伦比亚": "Colômbia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugal", - "卢森堡": "Luxemburgo", - "爱尔兰": "Irlanda", - "冰岛": "Islândia", - "阿尔巴尼亚": "Albânia", - "马耳他": "Malta", - "塞浦路斯": "Chipre", - "芬兰": "Finlândia", - "保加利亚": "Bulgária", - "立陶宛": "Lituânia", - "拉脱维亚": "Letónia", - "爱沙尼亚": "Estónia", - "乌克兰": "Ucrânia", - "塞尔维亚": "Sérvia", - "克罗地亚": "Croácia", - "斯洛文尼亚": "Eslovénia", - "捷克": "República Checa", - "斯洛伐克": "Eslováquia", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicarágua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panamá", - "海地": "Haiti", - "玻利维亚": "Bolívia", - "厄瓜多尔": "Equador", - "巴拉圭": "Paraguai", - "乌拉圭": "Uruguai", - "摩洛哥": "Marrocos", - "阿尔及利亚": "Argélia", - "突尼斯": "Tunísia", - "尼日利亚": "Nigéria", - "加纳": "Gana", - "埃塞俄比亚": "Etiópia", - "肯尼亚": "Quénia", - "坦桑尼亚": "Tanzânia", - "乌干达": "Uganda", - "孟加拉国": "Bangladesh", - "以色列": "Israel", - "黎巴嫩": "Líbano", - "约旦": "Jordânia", - "伊拉克": "Iraque", - "科威特": "Kuwait", - "巴林": "Bahrein", - "卡塔尔": "Catar", - "阿曼": "Omã", - "阿富汗": "Afeganistão", - "斯里兰卡": "Sri Lanka", - "缅甸": "Mianmar", - "尼泊尔": "Nepal", - "蒙古": "Mongólia", - "柬埔寨": "Camboja", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "Timor-Leste", - "斐济": "Fiji", - "所罗门群岛": "Ilhas Salomão", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Histórico de Traduções", - "enableRecording": "Ativar Gravação", - "viewAudioFiles": "Ver Ficheiros de Áudio", - "headsetUser": "Utilizador de Auriculares", - "phoneUser": "Utilizador de Telemóvel", - "selectSourceLanguage": "Selecionar idioma de origem", - "selectTargetLanguage": "Selecionar idioma de destino", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Ainda não há histórico", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Limpar Histórico", - "clearHistoryConfirm": - "Tem a certeza que quer limpar todo o histórico de traduções? Esta ação não pode ser revertida.", - "unknownLanguage": "Idioma Desconhecido", - "deleteSessionRecord": "Eliminar Registo da Sessão", - "deleteSessionConfirm": - "Tem a certeza que quer eliminar todos os registos de tradução desta sessão? Esta ação não pode ser revertida.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Traduzir Ficheiros de Áudio", - "noAudioFiles": "Ainda não há ficheiros de áudio", - "calculating": "A calcular...", - "playing": "A reproduzir...", - "paused": "Em pausa", - "clickToPlay": "Clique para reproduzir", - "rename": "Renomear", - "smartTranscription": "Transcrição Inteligente", - "renameAudioFile": "Renomear ficheiro de áudio", - "enterNewFileName": "Introduza um novo nome de ficheiro", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Registo Original", - "recordSummary": "Resumo do Registo", - "clickToGenerateSummary": - "Clique no botão abaixo para gerar um resumo da sessão", - "summaryContent": "Conteúdo do Resumo", - "copied": "Copiado", - "summaryCopiledToClipboard": "Resumo copiado para a área de transferência", - "extractSummary": "Extrair Resumo", - "summaryGenerated": "Resumo gerado", - "generating": "A gerar...", - "regenerate": "Regenerar", - "summaryTimeoutMessage": - "O pedido de geração de resumo expirou, pode ser devido a problemas de rede ou servidor ocupado.", - "deleteTranslationRecord": "Eliminar Registo de Tradução", - "deleteTranslationConfirm": - "Tem a certeza que quer eliminar este registo de tradução? Esta ação não pode ser revertida.", - "originalText": "Texto Original", - "translatedText": "Texto Traduzido", - "sessionSummary": "Resumo da Sessão", - "cannotShare": "Não é possível partilhar", - "generateSummaryFirst": "Por favor, gere primeiro um resumo", - "translationSessionRecord": "Registo da Sessão de Tradução", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Emparelhamento de Dispositivo", "connectYourDeepSoundHeadset": "Conecte os seus Auriculares Voitrans", "bind": "Vincular", @@ -1375,14 +1293,11 @@ const Map ptPT = { "autoInputCode": "Introdução automática do código", "skipBinding": "Saltar Vinculação", "rescan": "Digitalizar Novamente", - "verifyingDevice": "A verificar dispositivo...", "confirmBinding": "Confirmar Vinculação", "associatingDevice": "A associar dispositivo...", "goToBluetoothSettings": "Ir para Definições de Bluetooth", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Pronto para emparelhar", "preparingPairingEnvironment": "A preparar ambiente de emparelhamento...", "connectDeepSoundViaSystemBluetooth": @@ -1392,8 +1307,6 @@ const Map ptPT = { "waitingCompletePairing": "Aguarde, a concluir o emparelhamento...", "pairingSuccessRedirecting": "Emparelhamento bem-sucedido! A redirecionar para a página inicial...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Certifique-se de que está conectado a um dispositivo Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1406,19 +1319,12 @@ const Map ptPT = { "authorizationFailedCheckCode": "Falha na autorização, verifique se o código de autorização está correto", "pairingFailedRetry": "Falha no emparelhamento, tente novamente", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Por favor, ative o Bluetooth', 'deviceDisconnected': 'Dispositivo desconectado', 'readyToStartPairing': 'Pronto para iniciar o emparelhamento', 'checkingEnvironment': 'A verificar ambiente...', 'ensureHeadsetOnAndPairingMode': 'Certifique-se de que os auriculares estão ligados e em modo de emparelhamento', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'A estabelecer conexão segura...', 'needManualBindingAuthCode': 'É necessário um código de autorização de vinculação manual...', @@ -1441,8 +1347,6 @@ const Map ptPT = { 'bleConnectionFailed': 'Falha na conexão BLE', 'deviceAuthorizationFailedCheckCode': 'Falha na autorização do dispositivo, verifique o código de autorização', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1455,7 +1359,18 @@ const Map ptPT = { 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Feedback do Utilizador", 'feedbackInfo': 'Forneça feedback ou sugestões', 'feedbackDescription': 'Descreva o problema que encontrou ou a sua sugestão', @@ -1498,7 +1413,7 @@ const Map ptPT = { "removeEarbudsEnsureBattery": "Retire ambos os auriculares e certifique-se de que a bateria de ambos está acima de 20%", - // 音乐列表页面 + // 音乐模块 "noMusic": "Sem Música", // 暂无音乐 "noPlayingMusic": "Nenhuma música a tocar", // 暂无播放音乐 "unknownSong": "Música Desconhecida", // 未知歌曲 @@ -1546,22 +1461,122 @@ const Map ptPT = { "波斯语": "Persa", "斯瓦希里语": "Suaíli", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "E-mail", + "中国": "China", + "美国": "Estados Unidos", + "加拿大": "Canadá", + "俄罗斯": "Rússia", + "英国": "Reino Unido", + "德国": "Alemanha", + "意大利": "Itália", + "法国": "França", + "西班牙": "Espanha", + "南非": "África do Sul", + "沙特阿拉伯": "Arábia Saudita", + "土耳其": "Turquia", + "日本": "Japão", + "韩国": "Coreia do Sul", + "新加坡": "Singapura", + "马来西亚": "Malásia", + "泰国": "Tailândia", + "越南": "Vietname", + "印度": "Índia", + "巴基斯坦": "Paquistão", + "菲律宾": "Filipinas", + "印度尼西亚": "Indonésia", + "阿联酋": "Emirados Árabes Unidos", + "墨西哥": "México", + "巴西": "Brasil", + "阿根廷": "Argentina", + "澳大利亚": "Austrália", + "新西兰": "Nova Zelândia", + "中国香港": "Hong Kong (China)", + "中国澳门": "Macau (China)", + "中国台湾": "Taiwan (China)", + "埃及": "Egito", + "希腊": "Grécia", + "荷兰": "Países Baixos", + "比利时": "Bélgica", + "匈牙利": "Hungria", + "罗马尼亚": "Roménia", + "瑞士": "Suíça", + "奥地利": "Áustria", + "丹麦": "Dinamarca", + "瑞典": "Suécia", + "挪威": "Noruega", + "波兰": "Polónia", + "秘鲁": "Peru", + "智利": "Chile", + "哥伦比亚": "Colômbia", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portugal", + "卢森堡": "Luxemburgo", + "爱尔兰": "Irlanda", + "冰岛": "Islândia", + "阿尔巴尼亚": "Albânia", + "马耳他": "Malta", + "塞浦路斯": "Chipre", + "芬兰": "Finlândia", + "保加利亚": "Bulgária", + "立陶宛": "Lituânia", + "拉脱维亚": "Letónia", + "爱沙尼亚": "Estónia", + "乌克兰": "Ucrânia", + "塞尔维亚": "Sérvia", + "克罗地亚": "Croácia", + "斯洛文尼亚": "Eslovénia", + "捷克": "República Checa", + "斯洛伐克": "Eslováquia", + "危地马拉": "Guatemala", + "萨尔瓦多": "El Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nicarágua", + "哥斯达黎加": "Costa Rica", + "巴拿马": "Panamá", + "海地": "Haiti", + "玻利维亚": "Bolívia", + "厄瓜多尔": "Equador", + "巴拉圭": "Paraguai", + "乌拉圭": "Uruguai", + "摩洛哥": "Marrocos", + "阿尔及利亚": "Argélia", + "突尼斯": "Tunísia", + "尼日利亚": "Nigéria", + "加纳": "Gana", + "埃塞俄比亚": "Etiópia", + "肯尼亚": "Quénia", + "坦桑尼亚": "Tanzânia", + "乌干达": "Uganda", + "孟加拉国": "Bangladesh", + "以色列": "Israel", + "黎巴嫩": "Líbano", + "约旦": "Jordânia", + "伊拉克": "Iraque", + "科威特": "Kuwait", + "巴林": "Bahrein", + "卡塔尔": "Catar", + "阿曼": "Omã", + "阿富汗": "Afeganistão", + "斯里兰卡": "Sri Lanka", + "缅甸": "Mianmar", + "尼泊尔": "Nepal", + "蒙古": "Mongólia", + "柬埔寨": "Camboja", + "老挝": "Laos", + "文莱": "Brunei", + "东帝汶": "Timor-Leste", + "斐济": "Fiji", + "所罗门群岛": "Ilhas Salomão", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/ro_ro.dart b/lib/core/translations/language/ro_ro.dart index 585e9695b..d8563c176 100644 --- a/lib/core/translations/language/ro_ro.dart +++ b/lib/core/translations/language/ro_ro.dart @@ -1,4 +1,5 @@ const Map roRO = { + // 通用 'continue': 'Continuă', 'confirm': 'Confirmă', @@ -18,6 +19,11 @@ const Map roRO = { "unknownError": "Eroare necunoscută", "asrConnectionFailed": "Conexiunea la serviciul de recunoaștere vocală a eșuat. Verificați rețeaua sau încercați din nou mai târziu.", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "Conectând lumea, dincolo de sunet", @@ -28,7 +34,7 @@ const Map roRO = { "explore": "Explorează", "settings": "Setări", - // 语言 + // 语言列表 "followingSystem": "Urmează sistemul", "chinese": "Chineză", "english": "Engleză", @@ -72,7 +78,7 @@ const Map roRO = { "arabic": "Arabă", "persian": "Persană", - // 登录页 + // 登录模块 "welcome": "Bun venit", "loginTips": "Autentificați-vă sau înregistrați-vă cu numărul de telefon sau e-mail", @@ -101,13 +107,9 @@ const Map roRO = { "resendVerificationCode": "Retrimite codul de verificare", "login": "Autentificare", "usePasswordLogin": "Autentificare cu parolă", - - // 隐私政策弹窗 "loginDeclaration": "Declarația Voitrans", // Voitrans 声明 "welcomeToThisApp": "Bun venit la Voitrans, vă rugăm să citiți cu atenție", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", apăsând 'De acord și intră' înseamnă că ați citit complet și sunteți de acord cu acordurile de mai sus. Apăsând 'Nu sunt de acord' veți ieși din aplicație.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Nu sunt de acord", // 不同意 @@ -170,7 +172,7 @@ const Map roRO = { 'right': 'Dreapta', 'checkConnectionStatusFailed': 'Verificarea stării conexiunii a eșuat', -// 发现页 + // 发现页 "searchAi": "Căutați funcții AI...", "exploreSlogan": "Căști inteligente, posibilități infinite", "exploreSlogan1": "Companion inteligent, posibilități infinite", @@ -194,6 +196,7 @@ const Map roRO = { "usageStats": "Statistici de utilizare", "usageStatsInfo": "Vizualizați istoricul utilizării aplicației", "scene": "Scenariu", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", @@ -214,7 +217,6 @@ const Map roRO = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -231,7 +233,6 @@ const Map roRO = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - // 通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", @@ -240,88 +241,79 @@ const Map roRO = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', 'remaining': 'Remaining', 'featureDescription': 'Feature Description', - // AI 功能卡片 + 'paymentSuccess': 'Plată reușită', + 'paymentFailed': 'Plata a eșuat', + 'gotIt': 'Am înțeles', + 'paymentFailedTryAgain': 'Plata a eșuat. Vă rugăm să reîncercați.', + 'selectPaymentMethod': 'Selectați metoda de plată', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Crearea comenzii WeChat Pay a eșuat', + 'alipayOrderCreateFailed': 'Crearea comenzii Alipay a eșuat', + 'appleOrderCreateFailed': 'Crearea comenzii Apple a eșuat', + 'googleOrderCreateFailed': 'Crearea comenzii Google a eșuat', + 'paypalOrderCreateFailed': 'Crearea comenzii PayPal a eșuat', + 'paymentException': 'Excepție la plată', + 'paymentLaunchFailed': 'Lansarea plății a eșuat', + 'paymentExceptionWithError': 'Excepție la plată: @error', + 'paymentProcessingCheckLater': 'Comanda dvs. este în curs de procesare. Verificați mai târziu.', + 'paymentResultQueryException': 'Interogarea rezultatului plății a eșuat: @error', + 'orderConfirmedQuotaRefreshed': 'Comanda a fost confirmată. Cota dvs. a fost reîmprospătată.', + 'paymentCompletedConfirming': 'Plată finalizată. Se confirmă…', + 'paymentCancelled': 'Plată anulată', + 'paypalOpenedCompleteInBrowser': 'PayPal deschis. Vă rugăm să finalizați plata în browser.', + 'paypalOpenFailed': 'Nu se poate deschide pagina de plată PayPal', + 'paymentTestTitle': 'Test de plată', + 'paymentTestOrderInfo': 'Informații comandă de test', + 'paymentTestProductId': 'ID produs', + 'paymentTestProductDescription': 'Descrierea produsului', + 'paymentTestWechatDescription': 'Test plată WeChat Pay', + 'paymentTestAlipayDescription': 'Test plată Alipay', + 'paymentTestAmount': 'Sumă', + 'paymentTestSelectAmount': 'Selectați suma de test', + 'paying': 'Se plătește...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Starea plății', + 'errorInfoWithMessage': 'Eroare: @message', + 'retest': 'Retestare', + 'paymentTestInstructionsTitle': 'Instrucțiuni', + 'paymentTestInstructionsContent': '1. Selectați o sumă de test (recomandat: ¥0,01)\n2. Faceți clic pe butonul de plată pentru a începe\n3. Finalizați plata în aplicația de plată\n4. Reveniți pentru a verifica rezultatul', + 'startingWechatPayment': 'Se lansează WeChat Pay...', + 'startingAlipayPayment': 'Se lansează Alipay...', + 'wechatPaymentSuccess': 'WeChat Pay reușit!', + 'wechatPaymentFailed': 'WeChat Pay eșuat', + 'wechatPaymentLaunchFailed': 'Lansarea WeChat Pay a eșuat', + 'cannotLaunchWechatPayment': 'Nu se poate lansa WeChat Pay', + 'wechatPaymentException': 'Excepție WeChat Pay', + 'wechatPaymentTestCompleted': 'Test WeChat Pay finalizat', + 'alipayPaymentSuccess': 'Alipay reușit!', + 'alipayPaymentFailed': 'Alipay eșuat', + 'alipayPaymentLaunchFailed': 'Lansarea Alipay a eșuat', + 'cannotLaunchAlipayPayment': 'Nu se poate lansa Alipay', + 'alipayPaymentException': 'Excepție Alipay', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": + 'Insufficient balance, please go to the corresponding recharge page to recharge.', + "recharge": 'Go to Recharge', + "aiMemberExpiredDesc": + 'AI membership expired, please go to the membership recharge page to renew.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', 'aiHeaderDesc2': @@ -344,7 +336,46 @@ const Map roRO = { 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Real-time Transcription', + 'sceneLexicon': 'Scenario Glossary', + 'subtitleDisplay': 'Subtitles', + 'transHeaderDesc1': + 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', + 'translateZhEn': 'Chinese-English translation', + 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', + 'multiLangTextTranslation': 'Multilingual text translation', + 'termOptimizationContextPreserve': + 'Terminology optimization and context preservation', + 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', + 'personalVocabularyMemory': 'Personal vocabulary memory', + 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', + 'colorHighContrast': 'High color contrast', + 'transDisclaimer': + 'Translation performance depends on microphone, network latency, and ambient noise.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Meeting Recording', + 'transcriptionAndSummary': 'Transcription & Summary', + 'keywordSearch': 'Keyword Search', + 'collaborationSharing': 'Collaboration & Sharing', + 'meetingHeaderDesc1': + 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'meetingHeaderDesc2': + 'Suitable for business meetings, class notes, and interview minutes.', + 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingSpeakerTagging': 'Speaker labeling', + 'meetingLongAudioTranscription': 'Long audio transcription', + 'meetingKeyPointSummary': 'Key point extraction', + 'meetingTopicNameSearch': 'Search by topic/name', + 'meetingTimelineJump': 'Timeline jump', + 'meetingExportSummary': 'Export minutes', + 'meetingMultiPlatformShare': 'Share across platforms', + 'meetingDisclaimer': + 'Use in quiet environments; performance depends on microphone and network.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', 'higherQuota': 'Higher usage quota', 'lowerUnitPrice': 'Lower unit price', @@ -360,7 +391,32 @@ const Map roRO = { 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Translation Basic 100', + 'trans_002_name': 'Translation Basic 500', + 'trans_003_name': 'Translation Basic 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': 'Includes 100 translations (voice/text).', + 'trans_002_desc': 'Includes 500 translations (voice/text).', + 'trans_003_desc': 'Includes 1000 translations (voice/text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "Omite", 'next': 'Next', 'sayLilyHint': 'Say "Lily Lily" to the mic', @@ -371,7 +427,6 @@ const Map roRO = { 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', 'confirmInput': 'Confirm Input', 'guideClickSendPrefix': 'Tap send, ', - // AI 引导步骤 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', 'guideWeatherInput': 'What’s the weather today?', 'guideWeatherSend': 'Lily will report the weather in real time', @@ -398,7 +453,7 @@ const Map roRO = { 'guideSmsSend': 'Lily will send the message', 'guideSmsEnd': 'Message sent—voice control is convenient', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Începe ședința", 'edit': 'Editează', 'delete': 'Șterge', @@ -410,8 +465,6 @@ const Map roRO = { 'recordingDetails': 'Detalii înregistrare', 'aiSummary': 'Rezumat AI', 'meetingTranscript': 'Transcriere ședință', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -462,7 +515,6 @@ const Map roRO = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -471,6 +523,97 @@ const Map roRO = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': 'Creează', + 'templateDetails': 'Detalii șablon', + 'tag': 'Etichetă', + 'description': 'Descriere', + 'template': 'Șablon', + 'deleteTemplate': 'Șterge șablon', + 'deleteTemplateConfirm': 'Sunteți sigur că doriți să ștergeți acest șablon?', + 'editTemplate': 'Editează șablon', + 'createTemplate': 'Creează șablon', + 'name': 'Nume', + 'templateContentHint': 'Vă rugăm să introduceți conținutul șablonului! Sfat: Faceți clic pe butonul AI de mai sus pentru a genera rapid conținutul șablonului pe baza numelui și descrierii introduse', + 'inputNameHint': 'Vă rugăm să introduceți numele', + 'inputDescHint': 'Vă rugăm să introduceți descrierea', + 'custom': 'Personalizat', + 'pleaseEnter': 'Vă rugăm introduceți', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': + 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Salvează harta mentală', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'Exportă', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Aplică la toate paragrafele acestui vorbitor', + 'summaryWillBeUpdatedAutomatically': + 'Rezumatul va fi actualizat automat pe baza șablonului', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -489,7 +632,7 @@ const Map roRO = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -525,8 +668,6 @@ const Map roRO = { 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -555,105 +696,26 @@ const Map roRO = { 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Aplică la toate paragrafele acestui vorbitor', - 'summaryWillBeUpdatedAutomatically': - 'Rezumatul va fi actualizat automat pe baza șablonului', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': 'Analiza a eșuat, vă rugăm să reîncercați mai târziu', + 'transcriptionFailed': 'Transcrierea a eșuat, vă rugăm să reîncercați mai târziu', + 'summaryFailed': 'Rezumatul a eșuat, vă rugăm să reîncercați mai târziu', + 'summaryFailedShort': 'Rezumat eșuat', + 'transcriptionFailedShort': 'Transcriere eșuată', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Playerul audio nu este pregătit, vă rugăm așteptați', + 'playFailed': 'Redarea a eșuat', + 'audioFileNotFound': 'Fișierul audio nu a fost găsit', + 'fetchingAudio': 'Se descarcă audio din cloud...', + 'playerLoadFailed': 'Playerul audio nu a putut fi încărcat', // 设置页 "systemSettings": "Setări de sistem", @@ -706,26 +768,15 @@ const Map roRO = { "bleHeadsetFirmwareUpgrade": "Actualizare versiune firmware căști BLE", "deviceManagement": "Gestionare dispozitive", "manageConnectedDevices": "Gestionați dispozitivele Bluetooth asociate", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Aveți deja cea mai recentă versiune {version}', 'checkUpdateFailed': 'Verificarea actualizărilor a eșuat', 'networkErrorRetry': 'Eroare de rețea, reîncercați mai târziu', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Chat vocal în timp real", "realtimeVoiceChatInfo": "Experimentați funcția de interacțiune vocală inteligentă (previzualizare funcție)", "loading": "Se încarcă...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -741,8 +792,7 @@ const Map roRO = { "Are you sure you want to unbind device \"{deviceName}\"?", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Șterge istoricul chatului", "online": "Online", @@ -773,8 +823,9 @@ const Map roRO = { "swipeUpForMore": "Glisați în sus pentru mai mult", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': 'Când este activat: AI-ul nu va fi întrerupt de vocea dvs. în timp ce vorbește și poate gestiona doar o rundă de conversație pe rând. Pentru a începe o rundă nouă, spuneți cuvântul de activare.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -786,7 +837,7 @@ const Map roRO = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Bună! Sunt **Lily**, vă pot ajuta cu:\n\n' '• Răspuns la întrebări și furnizare de informații\n\n' '• Traducere vocală în timp real\n\n' @@ -806,18 +857,17 @@ const Map roRO = { 'startVoiceInput': 'Începe intrarea vocală', 'startPhoneCallMode': 'Începe modul de apel, începe intrarea vocală', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Introduceți mesajul dvs. aici...', // 全屏编辑器输入提示 'characterCount': '{count} caractere', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Copiază', 'copySuccess': 'Copiat cu succes', 'report': 'Raportează', 'submitSuccess': 'Trimis cu succes', 'submitFailed': 'Trimitere eșuată', 'reportSubmitted': 'Raport trimis, îl vom procesa în curând', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Dăunător/Periculos', 'pornographicVulgar': 'Pornografic/Vulgar', 'misleadingAttack': 'Înșelător/Atac', @@ -828,17 +878,14 @@ const Map roRO = { 'other': 'Altele', 'reportDescriptionHint': 'Dorim să știm de ce raportați, puteți descrie problema pe care ați întâmpinat-o.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Generat de AI', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'Iată câteva melodii recomandate:', 'playList': 'Listă de redare', 'moreMusic': 'Mai multă muzică', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'ore', // 小时单位 @@ -853,7 +900,7 @@ const Map roRO = { "bicycling": "Cu bicicleta", "tsransit": "Transport public", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Se interoghează condițiile meteo:', 'highest': 'Maximă', 'lowest': 'Minimă', @@ -883,18 +930,8 @@ const Map roRO = { "friday": "Vi", "saturday": "Sâ", "sunday": "Du", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Însorit", "partlyCloudy": "Parțial înnorat", "partlySunny": "Parțial însorit", @@ -915,7 +952,130 @@ const Map roRO = { "haze": "Pâclă", "strongWind": "Vânt puternic", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "Istoric traduceri", + "enableRecording": "Activează înregistrarea", + "viewAudioFiles": "Vezi fișierele audio", + "headsetUser": "Utilizator căști", + "phoneUser": "Utilizator telefon", + "selectSourceLanguage": "Selectează limba sursă", + "selectTargetLanguage": "Selectează limba țintă", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": + "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Niciun istoric", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "Șterge istoricul", + "clearHistoryConfirm": + "Sunteți sigur că doriți să ștergeți tot istoricul traducerilor? Această acțiune nu poate fi anulată.", + "unknownLanguage": "Limbă necunoscută", + "deleteSessionRecord": "Șterge înregistrarea sesiunii", + "deleteSessionConfirm": + "Sunteți sigur că doriți să ștergeți toate înregistrările de traducere pentru această sesiune? Această acțiune nu poate fi anulată.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": + "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": + "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": + "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": + "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Tradu fișierele audio", + "noAudioFiles": "Niciun fișier audio", + "calculating": "Se calculează...", + "playing": "Se redă...", + "paused": "Pauză", + "clickToPlay": "Faceți clic pentru a reda", + "rename": "Redenumește", + "smartTranscription": "Transcriere inteligentă", + "renameAudioFile": "Redenumește fișierul audio", + "enterNewFileName": "Introduceți un nume nou de fișier", + + // 翻译模块 - 翻译详情 + "originalRecord": "Înregistrare originală", + "recordSummary": "Rezumat înregistrare", + "clickToGenerateSummary": + "Faceți clic pe butonul de mai jos pentru a genera un rezumat al sesiunii", + "summaryContent": "Conținut rezumat", + "copied": "Copiat", + "summaryCopiledToClipboard": "Rezumatul a fost copiat în clipboard", + "extractSummary": "Extrage rezumat", + "summaryGenerated": "Rezumat generat", + "generating": "Se generează...", + "regenerate": "Regenerează", + "summaryTimeoutMessage": + "Cererea de generare a rezumatului a expirat, posibil din cauza problemelor de rețea sau a unui server ocupat.", + "deleteTranslationRecord": "Șterge înregistrarea traducerii", + "deleteTranslationConfirm": + "Sunteți sigur că doriți să ștergeți această înregistrare de traducere? Această acțiune nu poate fi anulată.", + "originalText": "Text original", + "translatedText": "Text tradus", + "sessionSummary": "Rezumat sesiune", + "cannotShare": "Nu se poate partaja", + "generateSummaryFirst": "Generați mai întâi un rezumat", + "translationSessionRecord": "Înregistrare sesiune de traducere", + + // 个人资料模块 "editProfile": "Editează informațiile personale", "avatar": "Avatar", "nickname": "Pseudonim", @@ -932,8 +1092,6 @@ const Map roRO = { 'Sunteți sigur că doriți să ștergeți permanent contul? Această acțiune nu poate fi anulată.', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'Conexiunea la rețea a eșuat, verificați setările de rețea și reîncercați', 'serverTemporarilyUnavailable': @@ -952,10 +1110,6 @@ const Map roRO = { 'Conexiunea la rețea a eșuat, verificați setările de rețea', 'serverInternalErrorRetryLater': 'Eroare internă de server, reîncercați mai târziu', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Comprimarea imaginii a eșuat', 'avatarUpdateFailed': 'Actualizarea avatarului a eșuat', 'usernameCannotBeEmpty': 'Numele de utilizator nu poate fi gol', @@ -966,8 +1120,6 @@ const Map roRO = { 'logoutFailedRetry': 'Deconectare eșuată, reîncercați', 'accountPermanentlyDeleted': 'Contul a fost șters permanent', 'deleteAccountFailedRetry': 'Ștergerea contului a eșuat, reîncercați', - - // 账号服务相关 'clearUserDataFailed': 'Ștergerea datelor de utilizator a eșuat', // 清理用户数据失败 'deleteUserDataFailed': 'Ștergerea datelor de utilizator a eșuat', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'Deconectarea terță parte a reușit', // 第三方登录退出成功 @@ -983,7 +1135,12 @@ const Map roRO = { 'accountServiceInitialized': 'Serviciul de cont a fost inițializat', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': + 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', 'getPermissionStatusFailed': 'Obținerea stării permisiunii a eșuat', 'communicationPermissions': 'Permisiuni de comunicare', 'bluetoothPermissions': 'Bluetooth Permissions', @@ -996,7 +1153,6 @@ const Map roRO = { 'phone': 'Telefon', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'Scriere în calendar', @@ -1053,8 +1209,6 @@ const Map roRO = { 'permanentDenialText': 'Ați refuzat permanent permisiunea {permission}, vă rugăm să mergeți la setările aplicației pentru a o activa', 'goToSettings': 'Mergeți la setări', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': @@ -1079,7 +1233,6 @@ const Map roRO = { 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', @@ -1089,8 +1242,6 @@ const Map roRO = { 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', 'storagePermissionPermanentDenial': 'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', - - //permission_util.dart 'permissionUtilNeed': 'Need ', 'permissionUtilPermission': ' Permission', 'permissionUtilRestricted': ' Permission Restricted', @@ -1098,7 +1249,20 @@ const Map roRO = { 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigare în curs', + 'native.notification.navigation.keepRunning': 'Navigare în curs, mențineți aplicația deschisă', + 'native.notification.bleAgent.running': 'Asistentul vocal funcționează', + 'native.notification.audioRecording.recording': 'Se înregistrează audio, atingeți pentru a reveni la aplicație', + 'native.notification.music.waiting': 'Așteaptă redarea', + 'native.notification.music.previous': 'Anterior', + 'native.notification.music.next': 'Următorul', + 'native.notification.music.play': 'Redare', + 'native.notification.music.pause': 'Pauză', + 'native.notification.qqMusic.playing': 'Se redă muzică', + + // 版本更新 'newVersionFound': 'Versiune nouă găsită', // 版本更新对话框标题 'remindLater': 'Amintește-mi mai târziu', // 稍后提醒按钮 'updateNow': 'Actualizează acum', // 立即更新按钮 @@ -1109,253 +1273,7 @@ const Map roRO = { 'updateErrorRetry': 'A apărut o eroare în timpul actualizării, reîncercați mai târziu', // 更新错误重试提示 - //国家列表 - "邮箱": "E-mail", - "中国": "China", - "美国": "SUA", - "加拿大": "Canada", - "俄罗斯": "Rusia", - "英国": "Regatul Unit", - "德国": "Germania", - "意大利": "Italia", - "法国": "Franța", - "西班牙": "Spania", - "南非": "Africa de Sud", - "沙特阿拉伯": "Arabia Saudită", - "土耳其": "Turcia", - "日本": "Japonia", - "韩国": "Coreea de Sud", - "新加坡": "Singapore", - "马来西亚": "Malaezia", - "泰国": "Thailanda", - "越南": "Vietnam", - "印度": "India", - "巴基斯坦": "Pakistan", - "菲律宾": "Filipine", - "印度尼西亚": "Indonezia", - "阿联酋": "EAU", - "墨西哥": "Mexic", - "巴西": "Brazilia", - "阿根廷": "Argentina", - "澳大利亚": "Australia", - "新西兰": "Noua Zeelandă", - "中国香港": "Hong Kong (China)", - "中国澳门": "Macao (China)", - "中国台湾": "Taiwan (China)", - "埃及": "Egipt", - "希腊": "Grecia", - "荷兰": "Olanda", - "比利时": "Belgia", - "匈牙利": "Ungaria", - "罗马尼亚": "România", - "瑞士": "Elveția", - "奥地利": "Austria", - "丹麦": "Danemarca", - "瑞典": "Suedia", - "挪威": "Norvegia", - "波兰": "Polonia", - "秘鲁": "Peru", - "智利": "Chile", - "哥伦比亚": "Columbia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugalia", - "卢森堡": "Luxemburg", - "爱尔兰": "Irlanda", - "冰岛": "Islanda", - "阿尔巴尼亚": "Albania", - "马耳他": "Malta", - "塞浦路斯": "Cipru", - "芬兰": "Finlanda", - "保加利亚": "Bulgaria", - "立陶宛": "Lituania", - "拉脱维亚": "Letonia", - "爱沙尼亚": "Estonia", - "乌克兰": "Ucraina", - "塞尔维亚": "Serbia", - "克罗地亚": "Croația", - "斯洛文尼亚": "Slovenia", - "捷克": "Cehia", - "斯洛伐克": "Slovacia", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolivia", - "厄瓜多尔": "Ecuador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Maroc", - "阿尔及利亚": "Algeria", - "突尼斯": "Tunisia", - "尼日利亚": "Nigeria", - "加纳": "Ghana", - "埃塞俄比亚": "Etiopia", - "肯尼亚": "Kenya", - "坦桑尼亚": "Tanzania", - "乌干达": "Uganda", - "孟加拉国": "Bangladesh", - "以色列": "Israel", - "黎巴嫩": "Liban", - "约旦": "Iordania", - "伊拉克": "Irak", - "科威特": "Kuweit", - "巴林": "Bahrain", - "卡塔尔": "Qatar", - "阿曼": "Oman", - "阿富汗": "Afganistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongolia", - "柬埔寨": "Cambodgia", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "Timorul de Est", - "斐济": "Fiji", - "所罗门群岛": "Insulele Solomon", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Istoric traduceri", - "enableRecording": "Activează înregistrarea", - "viewAudioFiles": "Vezi fișierele audio", - "headsetUser": "Utilizator căști", - "phoneUser": "Utilizator telefon", - "selectSourceLanguage": "Selectează limba sursă", - "selectTargetLanguage": "Selectează limba țintă", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Niciun istoric", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Șterge istoricul", - "clearHistoryConfirm": - "Sunteți sigur că doriți să ștergeți tot istoricul traducerilor? Această acțiune nu poate fi anulată.", - "unknownLanguage": "Limbă necunoscută", - "deleteSessionRecord": "Șterge înregistrarea sesiunii", - "deleteSessionConfirm": - "Sunteți sigur că doriți să ștergeți toate înregistrările de traducere pentru această sesiune? Această acțiune nu poate fi anulată.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Tradu fișierele audio", - "noAudioFiles": "Niciun fișier audio", - "calculating": "Se calculează...", - "playing": "Se redă...", - "paused": "Pauză", - "clickToPlay": "Faceți clic pentru a reda", - "rename": "Redenumește", - "smartTranscription": "Transcriere inteligentă", - "renameAudioFile": "Redenumește fișierul audio", - "enterNewFileName": "Introduceți un nume nou de fișier", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Înregistrare originală", - "recordSummary": "Rezumat înregistrare", - "clickToGenerateSummary": - "Faceți clic pe butonul de mai jos pentru a genera un rezumat al sesiunii", - "summaryContent": "Conținut rezumat", - "copied": "Copiat", - "summaryCopiledToClipboard": "Rezumatul a fost copiat în clipboard", - "extractSummary": "Extrage rezumat", - "summaryGenerated": "Rezumat generat", - "generating": "Se generează...", - "regenerate": "Regenerează", - "summaryTimeoutMessage": - "Cererea de generare a rezumatului a expirat, posibil din cauza problemelor de rețea sau a unui server ocupat.", - "deleteTranslationRecord": "Șterge înregistrarea traducerii", - "deleteTranslationConfirm": - "Sunteți sigur că doriți să ștergeți această înregistrare de traducere? Această acțiune nu poate fi anulată.", - "originalText": "Text original", - "translatedText": "Text tradus", - "sessionSummary": "Rezumat sesiune", - "cannotShare": "Nu se poate partaja", - "generateSummaryFirst": "Generați mai întâi un rezumat", - "translationSessionRecord": "Înregistrare sesiune de traducere", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Asociere dispozitiv", "connectYourDeepSoundHeadset": "Conectați-vă căștile Voitrans", "bind": "Leagă", @@ -1364,14 +1282,11 @@ const Map roRO = { "autoInputCode": "Introducere automată a codului", "skipBinding": "Omite legarea", "rescan": "Rescanează", - "verifyingDevice": "Se verifică dispozitivul...", "confirmBinding": "Confirmă legarea", "associatingDevice": "Se asociază dispozitivul...", "goToBluetoothSettings": "Mergeți la setările Bluetooth", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Gata de asociere", "preparingPairingEnvironment": "Se pregătește mediul de asociere...", "connectDeepSoundViaSystemBluetooth": @@ -1381,8 +1296,6 @@ const Map roRO = { "waitingCompletePairing": "Vă rugăm așteptați, se finalizează asocierea...", "pairingSuccessRedirecting": "Asociere reușită! Se redirecționează către pagina principală...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Asigurați-vă că sunteți conectat la un dispozitiv Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1394,19 +1307,12 @@ const Map roRO = { "authorizationFailedCheckCode": "Autorizare eșuată, verificați dacă codul de autorizare este corect", "pairingFailedRetry": "Asociere eșuată, reîncercați", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Activați Bluetooth', 'deviceDisconnected': 'Dispozitiv deconectat', 'readyToStartPairing': 'Gata pentru a începe asocierea', 'checkingEnvironment': 'Se verifică mediul...', 'ensureHeadsetOnAndPairingMode': 'Asigurați-vă că căștile sunt pornite și în modul de asociere', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Se stabilește o conexiune sigură...', 'needManualBindingAuthCode': 'Este necesar un cod de autorizare pentru legarea manuală...', @@ -1428,8 +1334,6 @@ const Map roRO = { 'bleConnectionFailed': 'Conexiunea BLE a eșuat', 'deviceAuthorizationFailedCheckCode': 'Autorizarea dispozitivului a eșuat, verificați codul de autorizare', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1442,7 +1346,18 @@ const Map roRO = { 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Feedback utilizator", 'feedbackInfo': 'Oferiți feedback sau sugestii', 'feedbackDescription': @@ -1486,7 +1401,7 @@ const Map roRO = { "removeEarbudsEnsureBattery": "Scoateți ambele căști și asigurați-vă că bateria ambelor este peste 20%", - // 音乐列表页面 + // 音乐模块 "noMusic": "Fără muzică", // 暂无音乐 "noPlayingMusic": "Nicio melodie în redare", // 暂无播放音乐 "unknownSong": "Melodie necunoscută", // 未知歌曲 @@ -1534,22 +1449,122 @@ const Map roRO = { "波斯语": "Persană", "斯瓦希里语": "Swahili", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "E-mail", + "中国": "China", + "美国": "SUA", + "加拿大": "Canada", + "俄罗斯": "Rusia", + "英国": "Regatul Unit", + "德国": "Germania", + "意大利": "Italia", + "法国": "Franța", + "西班牙": "Spania", + "南非": "Africa de Sud", + "沙特阿拉伯": "Arabia Saudită", + "土耳其": "Turcia", + "日本": "Japonia", + "韩国": "Coreea de Sud", + "新加坡": "Singapore", + "马来西亚": "Malaezia", + "泰国": "Thailanda", + "越南": "Vietnam", + "印度": "India", + "巴基斯坦": "Pakistan", + "菲律宾": "Filipine", + "印度尼西亚": "Indonezia", + "阿联酋": "EAU", + "墨西哥": "Mexic", + "巴西": "Brazilia", + "阿根廷": "Argentina", + "澳大利亚": "Australia", + "新西兰": "Noua Zeelandă", + "中国香港": "Hong Kong (China)", + "中国澳门": "Macao (China)", + "中国台湾": "Taiwan (China)", + "埃及": "Egipt", + "希腊": "Grecia", + "荷兰": "Olanda", + "比利时": "Belgia", + "匈牙利": "Ungaria", + "罗马尼亚": "România", + "瑞士": "Elveția", + "奥地利": "Austria", + "丹麦": "Danemarca", + "瑞典": "Suedia", + "挪威": "Norvegia", + "波兰": "Polonia", + "秘鲁": "Peru", + "智利": "Chile", + "哥伦比亚": "Columbia", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portugalia", + "卢森堡": "Luxemburg", + "爱尔兰": "Irlanda", + "冰岛": "Islanda", + "阿尔巴尼亚": "Albania", + "马耳他": "Malta", + "塞浦路斯": "Cipru", + "芬兰": "Finlanda", + "保加利亚": "Bulgaria", + "立陶宛": "Lituania", + "拉脱维亚": "Letonia", + "爱沙尼亚": "Estonia", + "乌克兰": "Ucraina", + "塞尔维亚": "Serbia", + "克罗地亚": "Croația", + "斯洛文尼亚": "Slovenia", + "捷克": "Cehia", + "斯洛伐克": "Slovacia", + "危地马拉": "Guatemala", + "萨尔瓦多": "El Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nicaragua", + "哥斯达黎加": "Costa Rica", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Bolivia", + "厄瓜多尔": "Ecuador", + "巴拉圭": "Paraguay", + "乌拉圭": "Uruguay", + "摩洛哥": "Maroc", + "阿尔及利亚": "Algeria", + "突尼斯": "Tunisia", + "尼日利亚": "Nigeria", + "加纳": "Ghana", + "埃塞俄比亚": "Etiopia", + "肯尼亚": "Kenya", + "坦桑尼亚": "Tanzania", + "乌干达": "Uganda", + "孟加拉国": "Bangladesh", + "以色列": "Israel", + "黎巴嫩": "Liban", + "约旦": "Iordania", + "伊拉克": "Irak", + "科威特": "Kuweit", + "巴林": "Bahrain", + "卡塔尔": "Qatar", + "阿曼": "Oman", + "阿富汗": "Afganistan", + "斯里兰卡": "Sri Lanka", + "缅甸": "Myanmar", + "尼泊尔": "Nepal", + "蒙古": "Mongolia", + "柬埔寨": "Cambodgia", + "老挝": "Laos", + "文莱": "Brunei", + "东帝汶": "Timorul de Est", + "斐济": "Fiji", + "所罗门群岛": "Insulele Solomon", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/ru_ru.dart b/lib/core/translations/language/ru_ru.dart index 9e7e3882f..41b1b9e06 100644 --- a/lib/core/translations/language/ru_ru.dart +++ b/lib/core/translations/language/ru_ru.dart @@ -1,4 +1,5 @@ const Map ruRU = { + // 通用 'continue': 'Продолжить', 'confirm': 'Подтвердить', @@ -18,6 +19,11 @@ const Map ruRU = { "unknownError": "Неизвестная ошибка", "asrConnectionFailed": "Не удалось подключиться к службе распознавания речи. Проверьте сеть и попробуйте ещё раз позже.", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "Соединяя мир, за пределами звука", @@ -28,7 +34,7 @@ const Map ruRU = { "explore": "Обзор", "settings": "Настройки", - // 语言 + // 语言列表 "followingSystem": "Как в системе", "chinese": "Китайский", "english": "Английский", @@ -72,7 +78,7 @@ const Map ruRU = { "arabic": "Арабский", "persian": "Персидский", - // 登录页 + // 登录模块 "welcome": "Добро пожаловать", "loginTips": "Войдите или зарегистрируйтесь, используя номер телефона или электронную почту", @@ -101,13 +107,9 @@ const Map ruRU = { "resendVerificationCode": "Отправить код еще раз", "login": "Войти", "usePasswordLogin": "Войти с паролем", - - // 隐私政策弹窗 "loginDeclaration": "Заявление Voitrans", // Voitrans 声明 "welcomeToThisApp": "Добро пожаловать в Voitrans, пожалуйста, внимательно прочтите", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Не согласен", // 不同意 @@ -167,7 +169,7 @@ const Map ruRU = { 'right': 'Право', 'checkConnectionStatusFailed': 'Не удалось проверить статус подключения', -// 发现页 + // 发现页 "searchAi": "Поиск функций AI...", "exploreSlogan": "Умные наушники, безграничные возможности", "exploreSlogan1": "Умный компаньон, безграничные возможности", @@ -192,6 +194,7 @@ const Map ruRU = { "usageStats": "Статистика использования", "usageStatsInfo": "Просмотрите статистику использования вашего приложения", "scene": "Сценарий", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", @@ -212,7 +215,6 @@ const Map ruRU = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -229,7 +231,6 @@ const Map ruRU = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - // 通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", @@ -238,90 +239,79 @@ const Map ruRU = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', 'remaining': 'Remaining', 'featureDescription': 'Feature Description', - // AI 功能卡片 + 'paymentSuccess': 'Оплата прошла успешно', + 'paymentFailed': 'Оплата не удалась', + 'gotIt': 'Понятно', + 'paymentFailedTryAgain': 'Оплата не удалась. Попробуйте ещё раз.', + 'selectPaymentMethod': 'Выберите способ оплаты', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Не удалось создать заказ WeChat', + 'alipayOrderCreateFailed': 'Не удалось создать заказ Alipay', + 'appleOrderCreateFailed': 'Не удалось создать заказ Apple', + 'googleOrderCreateFailed': 'Не удалось создать заказ Google', + 'paypalOrderCreateFailed': 'Не удалось создать заказ PayPal', + 'paymentException': 'Ошибка оплаты', + 'paymentLaunchFailed': 'Не удалось запустить оплату', + 'paymentExceptionWithError': 'Ошибка оплаты: @error', + 'paymentProcessingCheckLater': 'Ваш заказ обрабатывается. Проверьте позже.', + 'paymentResultQueryException': 'Не удалось запросить результат оплаты: @error', + 'orderConfirmedQuotaRefreshed': 'Заказ подтверждён. Ваша квота обновлена.', + 'paymentCompletedConfirming': 'Оплата завершена. Подтверждение…', + 'paymentCancelled': 'Оплата отменена', + 'paypalOpenedCompleteInBrowser': 'PayPal открыт. Завершите оплату в браузере.', + 'paypalOpenFailed': 'Не удалось открыть страницу оплаты PayPal', + 'paymentTestTitle': 'Тест оплаты', + 'paymentTestOrderInfo': 'Информация о тестовом заказе', + 'paymentTestProductId': 'ID товара', + 'paymentTestProductDescription': 'Описание товара', + 'paymentTestWechatDescription': 'Тест оплаты через WeChat', + 'paymentTestAlipayDescription': 'Тест оплаты через Alipay', + 'paymentTestAmount': 'Сумма', + 'paymentTestSelectAmount': 'Выберите тестовую сумму', + 'paying': 'Оплата...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Статус оплаты', + 'errorInfoWithMessage': 'Ошибка: @message', + 'retest': 'Повторный тест', + 'paymentTestInstructionsTitle': 'Инструкция', + 'paymentTestInstructionsContent': '1. Выберите тестовую сумму (рекомендуется: ¥0.01)\n2. Нажмите кнопку оплаты для начала\n3. Завершите оплату в приложении для оплаты\n4. Вернитесь, чтобы проверить результат', + 'startingWechatPayment': 'Запуск WeChat Pay...', + 'startingAlipayPayment': 'Запуск Alipay...', + 'wechatPaymentSuccess': 'Оплата через WeChat Pay прошла успешно!', + 'wechatPaymentFailed': 'Оплата через WeChat Pay не удалась', + 'wechatPaymentLaunchFailed': 'Не удалось запустить WeChat Pay', + 'cannotLaunchWechatPayment': 'Невозможно запустить WeChat Pay', + 'wechatPaymentException': 'Ошибка WeChat Pay', + 'wechatPaymentTestCompleted': 'Тест оплаты WeChat Pay завершён', + 'alipayPaymentSuccess': 'Оплата через Alipay прошла успешно!', + 'alipayPaymentFailed': 'Оплата через Alipay не удалась', + 'alipayPaymentLaunchFailed': 'Не удалось запустить Alipay', + 'cannotLaunchAlipayPayment': 'Невозможно запустить Alipay', + 'alipayPaymentException': 'Ошибка Alipay', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": + "Insufficient balance, please go to the corresponding recharge page to recharge.", + "recharge": "Go to Recharge", + "aiMemberExpiredDesc": + "AI membership expired, please go to the membership recharge page to renew.", + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Перевод Базовый 100', - 'trans_002_name': 'Перевод Базовый 500', - 'trans_003_name': 'Перевод Базовый 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Включает 100 переводов (голос/текст).', - 'trans_002_desc': 'Включает 500 переводов (голос/текст).', - 'trans_003_desc': 'Включает 1000 переводов (голос/текст).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Синхронный перевод и перевод текста в реальном времени с низкой задержкой голосового озвучивания.', - 'transHeaderDesc2': - 'Подходит для путешествий, бизнеса, выступлений и обучения.', - 'translateZhEn': 'Китайско-английский перевод', - 'lowLatencyVoiceBroadcast': 'Голосовое вещание с низкой задержкой', - 'multiLangTextTranslation': 'Многоязычный перевод текста', - 'termOptimizationContextPreserve': - 'Оптимизация терминологии и сохранение контекста', - 'lexiconTourBusinessLife': - 'Лексика для путешествий/бизнеса/повседневной жизни', - 'personalVocabularyMemory': 'Память персонального словаря', - 'conversationSubtitleLargeText': 'Субтитры беседы / режим крупных шрифтов', - 'colorHighContrast': 'Высокая контрастность цветов', - 'transDisclaimer': - 'Качество перевода зависит от микрофона, сетевой задержки и фонового шума.', - - // AI 商品页描述 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', 'aiHeaderDesc2': @@ -344,7 +334,48 @@ const Map ruRU = { 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Real-time Transcription', + 'sceneLexicon': 'Scenario Glossary', + 'subtitleDisplay': 'Subtitles', + 'transHeaderDesc1': + 'Синхронный перевод и перевод текста в реальном времени с низкой задержкой голосового озвучивания.', + 'transHeaderDesc2': + 'Подходит для путешествий, бизнеса, выступлений и обучения.', + 'translateZhEn': 'Китайско-английский перевод', + 'lowLatencyVoiceBroadcast': 'Голосовое вещание с низкой задержкой', + 'multiLangTextTranslation': 'Многоязычный перевод текста', + 'termOptimizationContextPreserve': + 'Оптимизация терминологии и сохранение контекста', + 'lexiconTourBusinessLife': + 'Лексика для путешествий/бизнеса/повседневной жизни', + 'personalVocabularyMemory': 'Память персонального словаря', + 'conversationSubtitleLargeText': 'Субтитры беседы / режим крупных шрифтов', + 'colorHighContrast': 'Высокая контрастность цветов', + 'transDisclaimer': + 'Качество перевода зависит от микрофона, сетевой задержки и фонового шума.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Meeting Recording', + 'transcriptionAndSummary': 'Transcription & Summary', + 'keywordSearch': 'Keyword Search', + 'collaborationSharing': 'Collaboration & Sharing', + 'meetingHeaderDesc1': + 'Audio recording, transcription, keyword search, and auto summary.', + 'meetingHeaderDesc2': + 'Suitable for business meetings, class notes, and interview minutes.', + 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingSpeakerTagging': 'Speaker labeling', + 'meetingLongAudioTranscription': 'Long audio transcription', + 'meetingKeyPointSummary': 'Key point extraction', + 'meetingTopicNameSearch': 'Search by topic/name', + 'meetingTimelineJump': 'Timeline jump', + 'meetingExportSummary': 'Export minutes', + 'meetingMultiPlatformShare': 'Share across platforms', + 'meetingDisclaimer': + 'Use in quiet environments; performance depends on microphone and network.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Обзор преимуществ', 'higherQuota': 'Более высокая квота использования', 'lowerUnitPrice': 'Низкая цена за единицу', @@ -360,7 +391,32 @@ const Map ruRU = { 'vipDisclaimer': 'Фактические преимущества зависят от деталей пакета и могут меняться с версиями.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Перевод Базовый 100', + 'trans_002_name': 'Перевод Базовый 500', + 'trans_003_name': 'Перевод Базовый 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': 'Включает 100 переводов (голос/текст).', + 'trans_002_desc': 'Включает 500 переводов (голос/текст).', + 'trans_003_desc': 'Включает 1000 переводов (голос/текст).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': 'Пропустить', 'next': 'Next', 'sayLilyHint': 'Say "Lily Lily" to the mic', @@ -371,7 +427,6 @@ const Map ruRU = { 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', 'confirmInput': 'Confirm Input', 'guideClickSendPrefix': 'Tap send, ', - // AI 引导步骤 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', 'guideWeatherInput': 'What’s the weather today?', 'guideWeatherSend': 'Lily will report the weather in real time', @@ -398,7 +453,7 @@ const Map ruRU = { 'guideSmsSend': 'Lily will send the message', 'guideSmsEnd': 'Message sent—voice control is convenient', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Начать встречу", 'edit': 'Редактировать', 'delete': 'Удалить', @@ -410,8 +465,6 @@ const Map ruRU = { 'recordingDetails': 'Детали записи', 'aiSummary': 'AI-резюме', 'meetingTranscript': 'Транскрипт встречи', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -471,7 +524,6 @@ const Map ruRU = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -480,6 +532,97 @@ const Map ruRU = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': 'Создать', + 'templateDetails': 'Детали шаблона', + 'tag': 'Тег', + 'description': 'Описание', + 'template': 'Шаблон', + 'deleteTemplate': 'Удалить шаблон', + 'deleteTemplateConfirm': 'Вы уверены, что хотите удалить этот шаблон?', + 'editTemplate': 'Редактировать шаблон', + 'createTemplate': 'Создать шаблон', + 'name': 'Название', + 'templateContentHint': 'Пожалуйста, введите содержание шаблона! Совет: нажмите кнопку AI выше, чтобы быстро сгенерировать содержание шаблона на основе введённого названия и описания', + 'inputNameHint': 'Пожалуйста, введите название', + 'inputDescHint': 'Пожалуйста, введите описание', + 'custom': 'Пользовательский', + 'pleaseEnter': 'Пожалуйста, введите', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': + 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Сохранить интеллект-карту', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'Экспорт', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Применить ко всем абзацам этого говорящего', + 'summaryWillBeUpdatedAutomatically': + 'Сводка будет автоматически обновляться на основе шаблона', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -498,7 +641,7 @@ const Map ruRU = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -534,8 +677,6 @@ const Map ruRU = { 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -564,105 +705,26 @@ const Map ruRU = { 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Применить ко всем абзацам этого говорящего', - 'summaryWillBeUpdatedAutomatically': - 'Сводка будет автоматически обновляться на основе шаблона', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': 'Анализ не удался, попробуйте позже', + 'transcriptionFailed': 'Транскрипция не удалась, попробуйте позже', + 'summaryFailed': 'Не удалось создать сводку, попробуйте позже', + 'summaryFailedShort': 'Сводка не удалась', + 'transcriptionFailedShort': 'Транскрипция не удалась', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Аудиоплеер не готов, подождите', + 'playFailed': 'Ошибка воспроизведения', + 'audioFileNotFound': 'Аудиофайл не найден', + 'fetchingAudio': 'Получение аудио из облака...', + 'playerLoadFailed': 'Не удалось загрузить аудиоплеер', // 设置页 "systemSettings": "Системные настройки", @@ -715,26 +777,15 @@ const Map ruRU = { "bleHeadsetFirmwareUpgrade": "Обновление версии прошивки наушников BLE", "deviceManagement": "Управление устройствами", "manageConnectedDevices": "Управление подключенными устройствами Bluetooth", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'У вас уже установлена последняя версия {version}', 'checkUpdateFailed': 'Не удалось проверить обновления', 'networkErrorRetry': 'Ошибка сети, попробуйте еще раз позже', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Голосовой чат в реальном времени", "realtimeVoiceChatInfo": "Испытайте функцию интеллектуального голосового взаимодействия (предварительный просмотр)", "loading": "Загрузка...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -749,8 +800,7 @@ const Map ruRU = { "confirmUnbindMessage": "Are you sure you want to unbind device \\", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Очистить историю чата", "online": "В сети", @@ -780,8 +830,9 @@ const Map ruRU = { "swipeUpForMore": "Проведите пальцем вверх, чтобы увидеть больше", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': 'При включении: ИИ не будет прерываться вашим голосом во время ответа и сможет обрабатывать только один раунд разговора за раз. Чтобы начать новый раунд, просто произнесите слово активации.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -793,7 +844,7 @@ const Map ruRU = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': '你好!我是**Lily**,我能帮你:\n\n' '• 回答问题和提供信息\n\n' '• 实时语音翻译\n\n' @@ -813,18 +864,17 @@ const Map ruRU = { 'startVoiceInput': 'Начать голосовой ввод', 'startPhoneCallMode': 'Начать режим звонка, начать голосовой ввод', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Введите ваше сообщение здесь...', // 全屏编辑器输入提示 'characterCount': '{count} символов', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Копировать', 'copySuccess': 'Успешно скопировано', 'report': 'Пожаловаться', 'submitSuccess': 'Успешно отправлено', 'submitFailed': 'Ошибка отправки', 'reportSubmitted': 'Жалоба отправлена, мы ее рассмотрим в ближайшее время', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Вредный/Небезопасный', 'pornographicVulgar': 'Порнографический/Вульгарный', 'misleadingAttack': 'Вводящий в заблуждение/Атака', @@ -834,17 +884,14 @@ const Map ruRU = { 'other': 'Другое', 'reportDescriptionHint': 'Мы хотим знать причину вашей жалобы, вы можете описать проблему, с которой столкнулись.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Сгенерировано AI', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'Вот несколько рекомендованных композиций:', 'playList': 'Плейлист', 'moreMusic': 'Больше музыки', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'км', // 公里单位 'meters': 'м', // 米单位 'hours': 'ч', // 小时单位 @@ -859,7 +906,7 @@ const Map ruRU = { "bicycling": "На велосипеде", "tsransit": "Общественный транспорт", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Запрос погодных условий:', 'highest': 'Макс.', 'lowest': 'Мин.', @@ -889,18 +936,8 @@ const Map ruRU = { "friday": "Пт", "saturday": "Сб", "sunday": "Вс", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Солнечно", "partlyCloudy": "Переменная облачность", "partlySunny": "Частично солнечно", @@ -921,7 +958,130 @@ const Map ruRU = { "haze": "Дымка", "strongWind": "Сильный ветер", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "История переводов", + "enableRecording": "Включить запись", + "viewAudioFiles": "Просмотреть аудиофайлы", + "headsetUser": "Пользователь наушников", + "phoneUser": "Пользователь телефона", + "selectSourceLanguage": "Выберите исходный язык", + "selectTargetLanguage": "Выберите целевой язык", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": + "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "История отсутствует", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "Очистить историю", + "clearHistoryConfirm": + "Вы уверены, что хотите очистить всю историю переводов? Это действие необратимо.", + "unknownLanguage": "Неизвестный язык", + "deleteSessionRecord": "Удалить запись сессии", + "deleteSessionConfirm": + "Вы уверены, что хотите удалить все записи переводов этой сессии? Это действие необратимо.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": + "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": + "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": + "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": + "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Перевести аудиофайлы", + "noAudioFiles": "Аудиофайлы отсутствуют", + "calculating": "Вычисление...", + "playing": "Воспроизведение...", + "paused": "Пауза", + "clickToPlay": "Нажмите, чтобы воспроизвести", + "rename": "Переименовать", + "smartTranscription": "Умная транскрипция", + "renameAudioFile": "Переименовать аудиофайл", + "enterNewFileName": "Пожалуйста, введите новое имя файла", + + // 翻译模块 - 翻译详情 + "originalRecord": "Оригинальная запись", + "recordSummary": "Резюме записи", + "clickToGenerateSummary": + "Нажмите кнопку ниже, чтобы сгенерировать резюме сессии", + "summaryContent": "Содержание резюме", + "copied": "Скопировано", + "summaryCopiledToClipboard": "Резюме скопировано в буфер обмена", + "extractSummary": "Извлечь резюме", + "summaryGenerated": "Резюме сгенерировано", + "generating": "Генерация...", + "regenerate": "Сгенерировать заново", + "summaryTimeoutMessage": + "Тайм-аут запроса на генерацию резюме, возможно, из-за проблем с сетью или загруженности сервера.", + "deleteTranslationRecord": "Удалить запись перевода", + "deleteTranslationConfirm": + "Вы уверены, что хотите удалить эту запись перевода? Это действие необратимо.", + "originalText": "Оригинальный текст", + "translatedText": "Переведенный текст", + "sessionSummary": "Резюме сессии", + "cannotShare": "Невозможно поделиться", + "generateSummaryFirst": "Пожалуйста, сначала сгенерируйте резюме", + "translationSessionRecord": "Запись сессии перевода", + + // 个人资料模块 "editProfile": "Редактировать профиль", "avatar": "Аватар", "nickname": "Псевдоним", @@ -937,8 +1097,6 @@ const Map ruRU = { 'Вы уверены, что хотите навсегда удалить свой аккаунт? Это действие необратимо.', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'Ошибка сетевого подключения, проверьте настройки сети и попробуйте еще раз', 'serverTemporarilyUnavailable': @@ -957,10 +1115,6 @@ const Map ruRU = { 'Ошибка сетевого подключения, проверьте настройки сети', 'serverInternalErrorRetryLater': 'Внутренняя ошибка сервера, попробуйте еще раз позже', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Не удалось сжать изображение', 'avatarUpdateFailed': 'Не удалось обновить аватар', 'usernameCannotBeEmpty': 'Имя пользователя не может быть пустым', @@ -971,8 +1125,6 @@ const Map ruRU = { 'logoutFailedRetry': 'Не удалось выйти, попробуйте еще раз', 'accountPermanentlyDeleted': 'Аккаунт был навсегда удален', 'deleteAccountFailedRetry': 'Не удалось удалить аккаунт, попробуйте еще раз', - - // 账号服务相关 'clearUserDataFailed': 'Не удалось очистить данные пользователя', // 清理用户数据失败 'deleteUserDataFailed': 'Не удалось удалить данные пользователя', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'Выход из стороннего сервиса успешен', // 第三方登录退出成功 @@ -988,7 +1140,12 @@ const Map ruRU = { 'accountServiceInitialized': 'Служба аккаунтов инициализирована', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': + 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', 'getPermissionStatusFailed': 'Не удалось получить статус разрешений', 'communicationPermissions': 'Разрешения на связь', 'bluetoothPermissions': 'Bluetooth Permissions', @@ -1001,7 +1158,6 @@ const Map ruRU = { 'phone': 'Телефон', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'Запись в календарь', @@ -1058,8 +1214,6 @@ const Map ruRU = { 'permanentDenialText': 'Вы навсегда отказали в доступе к {permission}, пожалуйста, перейдите в настройки приложения, чтобы включить его', 'goToSettings': 'Перейти в настройки', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': @@ -1084,7 +1238,6 @@ const Map ruRU = { 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', @@ -1094,6 +1247,12 @@ const Map ruRU = { '检测到您已永久拒绝录音权限。如需继续使用此功能,请前往应用设置中手动开启麦克风权限。', 'storagePermissionPermanentDenial': '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', + 'permissionUtilNeed': 'Need ', + 'permissionUtilPermission': ' Permission', + 'permissionUtilRestricted': ' Permission Restricted', + 'permissionUtilRestrictedMessage': + 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'permissionUtilConfirm': 'OK', // 原生前台服务通知(Android) 'native.notification.appName': 'VOITRANS', // VOITRANS @@ -1110,15 +1269,7 @@ const Map ruRU = { 'native.notification.music.pause': 'Пауза', // 暂停 'native.notification.qqMusic.playing': 'Воспроизведение музыки', // 正在播放音乐 - //permission_util.dart - 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', - 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', - 'permissionUtilConfirm': 'OK', - - // 版本更新对话框 + // 版本更新 'newVersionFound': 'Найдена новая версия', // 版本更新对话框标题 'remindLater': 'Напомнить позже', // 稍后提醒按钮 'updateNow': 'Обновить сейчас', // 立即更新按钮 @@ -1129,253 +1280,7 @@ const Map ruRU = { 'updateErrorRetry': 'Произошла ошибка во время обновления, попробуйте еще раз позже', // 更新错误重试提示 - //国家列表 - "邮箱": "E-mail", - "中国": "Китай", - "美国": "США", - "加拿大": "Канада", - "俄罗斯": "Россия", - "英国": "Великобритания", - "德国": "Германия", - "意大利": "Италия", - "法国": "Франция", - "西班牙": "Испания", - "南非": "Южная Африка", - "沙特阿拉伯": "Саудовская Аравия", - "土耳其": "Турция", - "日本": "Япония", - "韩国": "Южная Корея", - "新加坡": "Сингапур", - "马来西亚": "Малайзия", - "泰国": "Таиланд", - "越南": "Вьетнам", - "印度": "Индия", - "巴基斯坦": "Пакистан", - "菲律宾": "Филиппины", - "印度尼西亚": "Индонезия", - "阿联酋": "ОАЭ", - "墨西哥": "Мексика", - "巴西": "Бразилия", - "阿根廷": "Аргентина", - "澳大利亚": "Австралия", - "新西兰": "Новая Зеландия", - "中国香港": "Гонконг (Китай)", - "中国澳门": "Макао (Китай)", - "中国台湾": "Тайвань (Китай)", - "埃及": "Египет", - "希腊": "Греция", - "荷兰": "Нидерланды", - "比利时": "Бельгия", - "匈牙利": "Венгрия", - "罗马尼亚": "Румыния", - "瑞士": "Швейцария", - "奥地利": "Австрия", - "丹麦": "Дания", - "瑞典": "Швеция", - "挪威": "Норвегия", - "波兰": "Польша", - "秘鲁": "Перу", - "智利": "Чили", - "哥伦比亚": "Колумбия", - "委内瑞拉": "Венесуэла", - "葡萄牙": "Португалия", - "卢森堡": "Люксембург", - "爱尔兰": "Ирландия", - "冰岛": "Исландия", - "阿尔巴尼亚": "Албания", - "马耳他": "Мальта", - "塞浦路斯": "Кипр", - "芬兰": "Финляндия", - "保加利亚": "Болгария", - "立陶宛": "Литва", - "拉脱维亚": "Латвия", - "爱沙尼亚": "Эстония", - "乌克兰": "Украина", - "塞尔维亚": "Сербия", - "克罗地亚": "Хорватия", - "斯洛文尼亚": "Словения", - "捷克": "Чехия", - "斯洛伐克": "Словакия", - "危地马拉": "Гватемала", - "萨尔瓦多": "Сальвадор", - "洪都拉斯": "Гондурас", - "尼加拉瓜": "Никарагуа", - "哥斯达黎加": "Коста-Рика", - "巴拿马": "Панама", - "海地": "Гаити", - "玻利维亚": "Боливия", - "厄瓜多尔": "Эквадор", - "巴拉圭": "Парагвай", - "乌拉圭": "Уругвай", - "摩洛哥": "Марокко", - "阿尔及利亚": "Алжир", - "突尼斯": "Тунис", - "尼日利亚": "Нигерия", - "加纳": "Гана", - "埃塞俄比亚": "Эфиопия", - "肯尼亚": "Кения", - "坦桑尼亚": "Танзания", - "乌干达": "Уганда", - "孟加拉国": "Бангладеш", - "以色列": "Израиль", - "黎巴嫩": "Ливан", - "约旦": "Иордания", - "伊拉克": "Ирак", - "科威特": "Кувейт", - "巴林": "Бахрейн", - "卡塔尔": "Катар", - "阿曼": "Оман", - "阿富汗": "Афганистан", - "斯里兰卡": "Шри-Ланка", - "缅甸": "Мьянма", - "尼泊尔": "Непал", - "蒙古": "Монголия", - "柬埔寨": "Камбоджа", - "老挝": "Лаос", - "文莱": "Бруней", - "东帝汶": "Восточный Тимор", - "斐济": "Фиджи", - "所罗门群岛": "Соломоновы Острова", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "История переводов", - "enableRecording": "Включить запись", - "viewAudioFiles": "Просмотреть аудиофайлы", - "headsetUser": "Пользователь наушников", - "phoneUser": "Пользователь телефона", - "selectSourceLanguage": "Выберите исходный язык", - "selectTargetLanguage": "Выберите целевой язык", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "История отсутствует", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Очистить историю", - "clearHistoryConfirm": - "Вы уверены, что хотите очистить всю историю переводов? Это действие необратимо.", - "unknownLanguage": "Неизвестный язык", - "deleteSessionRecord": "Удалить запись сессии", - "deleteSessionConfirm": - "Вы уверены, что хотите удалить все записи переводов этой сессии? Это действие необратимо.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Перевести аудиофайлы", - "noAudioFiles": "Аудиофайлы отсутствуют", - "calculating": "Вычисление...", - "playing": "Воспроизведение...", - "paused": "Пауза", - "clickToPlay": "Нажмите, чтобы воспроизвести", - "rename": "Переименовать", - "smartTranscription": "Умная транскрипция", - "renameAudioFile": "Переименовать аудиофайл", - "enterNewFileName": "Пожалуйста, введите новое имя файла", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Оригинальная запись", - "recordSummary": "Резюме записи", - "clickToGenerateSummary": - "Нажмите кнопку ниже, чтобы сгенерировать резюме сессии", - "summaryContent": "Содержание резюме", - "copied": "Скопировано", - "summaryCopiledToClipboard": "Резюме скопировано в буфер обмена", - "extractSummary": "Извлечь резюме", - "summaryGenerated": "Резюме сгенерировано", - "generating": "Генерация...", - "regenerate": "Сгенерировать заново", - "summaryTimeoutMessage": - "Тайм-аут запроса на генерацию резюме, возможно, из-за проблем с сетью или загруженности сервера.", - "deleteTranslationRecord": "Удалить запись перевода", - "deleteTranslationConfirm": - "Вы уверены, что хотите удалить эту запись перевода? Это действие необратимо.", - "originalText": "Оригинальный текст", - "translatedText": "Переведенный текст", - "sessionSummary": "Резюме сессии", - "cannotShare": "Невозможно поделиться", - "generateSummaryFirst": "Пожалуйста, сначала сгенерируйте резюме", - "translationSessionRecord": "Запись сессии перевода", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Сопряжение устройства", "connectYourDeepSoundHeadset": "Подключите ваши наушники Voitrans", "bind": "Привязать", @@ -1384,14 +1289,11 @@ const Map ruRU = { "autoInputCode": "Автоматический ввод кода", "skipBinding": "Пропустить привязку", "rescan": "Повторное сканирование", - "verifyingDevice": "Проверка устройства...", "confirmBinding": "Подтвердить привязку", "associatingDevice": "Связывание устройства...", "goToBluetoothSettings": "Перейти в настройки Bluetooth", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Готово к сопряжению", "preparingPairingEnvironment": "Подготовка среды для сопряжения...", "connectDeepSoundViaSystemBluetooth": @@ -1401,8 +1303,6 @@ const Map ruRU = { "waitingCompletePairing": "Пожалуйста, подождите, завершается сопряжение...", "pairingSuccessRedirecting": "Сопряжение успешно! Перенаправление на главную страницу...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Убедитесь, что вы подключены к устройству Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1415,19 +1315,12 @@ const Map ruRU = { "authorizationFailedCheckCode": "Ошибка авторизации, проверьте правильность кода авторизации", "pairingFailedRetry": "Не удалось выполнить сопряжение, попробуйте еще раз", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Пожалуйста, включите Bluetooth', 'deviceDisconnected': 'Устройство отключено', 'readyToStartPairing': 'Готово к началу сопряжения', 'checkingEnvironment': 'Проверка среды...', 'ensureHeadsetOnAndPairingMode': 'Убедитесь, что наушники включены и находятся в режиме сопряжения', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Установление безопасного соединения...', 'needManualBindingAuthCode': 'Требуется код авторизации для ручной привязки...', @@ -1450,8 +1343,6 @@ const Map ruRU = { 'bleConnectionFailed': 'Не удалось подключиться через BLE', 'deviceAuthorizationFailedCheckCode': 'Ошибка авторизации устройства, проверьте код авторизации', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1464,7 +1355,18 @@ const Map ruRU = { 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Отзыв пользователя", 'feedbackInfo': 'Оставить отзыв или предложение', 'feedbackDescription': @@ -1507,7 +1409,7 @@ const Map ruRU = { "removeEarbudsEnsureBattery": "Извлеките оба наушника и убедитесь, что уровень заряда батареи в обоих превышает 20%", - // 音乐列表页面 + // 音乐模块 "noMusic": "Нет музыки", // 暂无音乐 "noPlayingMusic": "Нет воспроизводимой музыки", // 暂无播放音乐 "unknownSong": "Неизвестная песня", // 未知歌曲 @@ -1555,22 +1457,122 @@ const Map ruRU = { "波斯语": "Персидский", "斯瓦希里语": "Суахили", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - "Insufficient balance, please go to the corresponding recharge page to recharge.", - "recharge": "Go to Recharge", - // 会员到期提示 - "aiMemberExpiredDesc": - "AI membership expired, please go to the membership recharge page to renew.", + // 国家列表 + "邮箱": "E-mail", + "中国": "Китай", + "美国": "США", + "加拿大": "Канада", + "俄罗斯": "Россия", + "英国": "Великобритания", + "德国": "Германия", + "意大利": "Италия", + "法国": "Франция", + "西班牙": "Испания", + "南非": "Южная Африка", + "沙特阿拉伯": "Саудовская Аравия", + "土耳其": "Турция", + "日本": "Япония", + "韩国": "Южная Корея", + "新加坡": "Сингапур", + "马来西亚": "Малайзия", + "泰国": "Таиланд", + "越南": "Вьетнам", + "印度": "Индия", + "巴基斯坦": "Пакистан", + "菲律宾": "Филиппины", + "印度尼西亚": "Индонезия", + "阿联酋": "ОАЭ", + "墨西哥": "Мексика", + "巴西": "Бразилия", + "阿根廷": "Аргентина", + "澳大利亚": "Австралия", + "新西兰": "Новая Зеландия", + "中国香港": "Гонконг (Китай)", + "中国澳门": "Макао (Китай)", + "中国台湾": "Тайвань (Китай)", + "埃及": "Египет", + "希腊": "Греция", + "荷兰": "Нидерланды", + "比利时": "Бельгия", + "匈牙利": "Венгрия", + "罗马尼亚": "Румыния", + "瑞士": "Швейцария", + "奥地利": "Австрия", + "丹麦": "Дания", + "瑞典": "Швеция", + "挪威": "Норвегия", + "波兰": "Польша", + "秘鲁": "Перу", + "智利": "Чили", + "哥伦比亚": "Колумбия", + "委内瑞拉": "Венесуэла", + "葡萄牙": "Португалия", + "卢森堡": "Люксембург", + "爱尔兰": "Ирландия", + "冰岛": "Исландия", + "阿尔巴尼亚": "Албания", + "马耳他": "Мальта", + "塞浦路斯": "Кипр", + "芬兰": "Финляндия", + "保加利亚": "Болгария", + "立陶宛": "Литва", + "拉脱维亚": "Латвия", + "爱沙尼亚": "Эстония", + "乌克兰": "Украина", + "塞尔维亚": "Сербия", + "克罗地亚": "Хорватия", + "斯洛文尼亚": "Словения", + "捷克": "Чехия", + "斯洛伐克": "Словакия", + "危地马拉": "Гватемала", + "萨尔瓦多": "Сальвадор", + "洪都拉斯": "Гондурас", + "尼加拉瓜": "Никарагуа", + "哥斯达黎加": "Коста-Рика", + "巴拿马": "Панама", + "海地": "Гаити", + "玻利维亚": "Боливия", + "厄瓜多尔": "Эквадор", + "巴拉圭": "Парагвай", + "乌拉圭": "Уругвай", + "摩洛哥": "Марокко", + "阿尔及利亚": "Алжир", + "突尼斯": "Тунис", + "尼日利亚": "Нигерия", + "加纳": "Гана", + "埃塞俄比亚": "Эфиопия", + "肯尼亚": "Кения", + "坦桑尼亚": "Танзания", + "乌干达": "Уганда", + "孟加拉国": "Бангладеш", + "以色列": "Израиль", + "黎巴嫩": "Ливан", + "约旦": "Иордания", + "伊拉克": "Ирак", + "科威特": "Кувейт", + "巴林": "Бахрейн", + "卡塔尔": "Катар", + "阿曼": "Оман", + "阿富汗": "Афганистан", + "斯里兰卡": "Шри-Ланка", + "缅甸": "Мьянма", + "尼泊尔": "Непал", + "蒙古": "Монголия", + "柬埔寨": "Камбоджа", + "老挝": "Лаос", + "文莱": "Бруней", + "东帝汶": "Восточный Тимор", + "斐济": "Фиджи", + "所罗门群岛": "Соломоновы Острова", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/sk_sk.dart b/lib/core/translations/language/sk_sk.dart index 027611447..d745bad26 100644 --- a/lib/core/translations/language/sk_sk.dart +++ b/lib/core/translations/language/sk_sk.dart @@ -1,4 +1,5 @@ const Map skSK = { + // 通用 'continue': 'Pokračovať', 'confirm': 'Potvrdiť', @@ -18,6 +19,11 @@ const Map skSK = { "unknownError": "Neznáma chyba", "asrConnectionFailed": "Pripojenie k službe rozpoznávania reči zlyhalo. Skontrolujte sieť alebo to skúste znova neskôr.", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "Pripájanie sveta, za hranicami zvuku", @@ -28,7 +34,7 @@ const Map skSK = { "explore": "Preskúmať", "settings": "Nastavenia", - // 语言 + // 语言列表 "followingSystem": "Podľa systému", "chinese": "Čínština", "english": "Angličtina", @@ -72,7 +78,7 @@ const Map skSK = { "arabic": "Arabčina", "persian": "Persčina", - // 登录页 + // 登录模块 "welcome": "Vitajte", "loginTips": "Prihláste sa alebo sa zaregistrujte pomocou telefónneho čísla alebo e-mailu", @@ -101,13 +107,9 @@ const Map skSK = { "resendVerificationCode": "Znova odoslať overovací kód", "login": "Prihlásiť sa", "usePasswordLogin": "Prihlásiť sa heslom", - - // 隐私政策弹窗 "loginDeclaration": "Vyhlásenie Voitrans", // Voitrans 声明 "welcomeToThisApp": "Vitajte v Voitrans, prečítajte si prosím pozorne", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Nesúhlasím", // 不同意 @@ -167,7 +169,7 @@ const Map skSK = { 'right': 'Vpravo', 'checkConnectionStatusFailed': 'Kontrola stavu pripojenia zlyhala', -// 发现页 + // 发现页 "searchAi": "Hľadať AI funkcie...", "exploreSlogan": "Inteligentné slúchadlá, nekonečné možnosti", "exploreSlogan1": "Inteligentný spoločník, nekonečné možnosti", @@ -192,6 +194,7 @@ const Map skSK = { "usageStats": "Statistiky využitia", "usageStatsInfo": "Zobrazte vaše využitie aplikácie", "scene": "Scenár", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", @@ -212,7 +215,6 @@ const Map skSK = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -229,7 +231,6 @@ const Map skSK = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - // 通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", @@ -238,88 +239,79 @@ const Map skSK = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', 'remaining': 'Remaining', 'featureDescription': 'Feature Description', - // AI 功能卡片 + 'paymentSuccess': 'Platba úspešná', + 'paymentFailed': 'Platba zlyhala', + 'gotIt': 'Rozumiem', + 'paymentFailedTryAgain': 'Platba zlyhala. Skúste to znova.', + 'selectPaymentMethod': 'Vyberte spôsob platby', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Vytvorenie objednávky WeChat zlyhalo', + 'alipayOrderCreateFailed': 'Vytvorenie objednávky Alipay zlyhalo', + 'appleOrderCreateFailed': 'Vytvorenie objednávky Apple zlyhalo', + 'googleOrderCreateFailed': 'Vytvorenie objednávky Google zlyhalo', + 'paypalOrderCreateFailed': 'Vytvorenie objednávky PayPal zlyhalo', + 'paymentException': 'Výnimka platby', + 'paymentLaunchFailed': 'Spustenie platby zlyhalo', + 'paymentExceptionWithError': 'Výnimka platby: @error', + 'paymentProcessingCheckLater': 'Vaša objednávka sa spracováva. Skontrolujte neskôr.', + 'paymentResultQueryException': 'Nepodarilo sa zistiť výsledok platby: @error', + 'orderConfirmedQuotaRefreshed': 'Objednávka potvrdená. Váš limit bol obnovený.', + 'paymentCompletedConfirming': 'Platba dokončená. Potvrdzovanie…', + 'paymentCancelled': 'Platba bola zrušená', + 'paypalOpenedCompleteInBrowser': 'PayPal je otvorený. Dokončite platbu v prehliadači.', + 'paypalOpenFailed': 'Nie je možné otvoriť platobnú stránku PayPal', + 'paymentTestTitle': 'Test platby', + 'paymentTestOrderInfo': 'Informácie o testovacej objednávke', + 'paymentTestProductId': 'ID produktu', + 'paymentTestProductDescription': 'Popis produktu', + 'paymentTestWechatDescription': 'Test platby WeChat', + 'paymentTestAlipayDescription': 'Test platby Alipay', + 'paymentTestAmount': 'Suma', + 'paymentTestSelectAmount': 'Vyberte testovaciu sumu', + 'paying': 'Platba prebieha...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Stav platby', + 'errorInfoWithMessage': 'Chyba: @message', + 'retest': 'Znova otestovať', + 'paymentTestInstructionsTitle': 'Pokyny', + 'paymentTestInstructionsContent': '1. Vyberte testovaciu sumu (odporúčané: ¥0.01)\n2. Kliknite na tlačidlo platby pre spustenie\n3. Dokončite platbu v platobnej aplikácii\n4. Vráťte sa a skontrolujte výsledok', + 'startingWechatPayment': 'Spúšťanie WeChat Pay...', + 'startingAlipayPayment': 'Spúšťanie Alipay...', + 'wechatPaymentSuccess': 'Platba WeChat Pay úspešná!', + 'wechatPaymentFailed': 'Platba WeChat Pay zlyhala', + 'wechatPaymentLaunchFailed': 'Spustenie WeChat Pay zlyhalo', + 'cannotLaunchWechatPayment': 'Nie je možné spustiť WeChat Pay', + 'wechatPaymentException': 'Výnimka WeChat Pay', + 'wechatPaymentTestCompleted': 'Test platby WeChat Pay dokončený', + 'alipayPaymentSuccess': 'Platba Alipay úspešná!', + 'alipayPaymentFailed': 'Platba Alipay zlyhala', + 'alipayPaymentLaunchFailed': 'Spustenie Alipay zlyhalo', + 'cannotLaunchAlipayPayment': 'Nie je možné spustiť Alipay', + 'alipayPaymentException': 'Výnimka Alipay', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": + "Insufficient balance, please go to the corresponding recharge page to recharge.", + "recharge": "Go to Recharge", + "aiMemberExpiredDesc": + "AI membership expired, please go to the membership recharge page to renew.", + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', 'aiHeaderDesc2': @@ -342,7 +334,46 @@ const Map skSK = { 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Real-time Transcription', + 'sceneLexicon': 'Scenario Glossary', + 'subtitleDisplay': 'Subtitles', + 'transHeaderDesc1': + 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', + 'translateZhEn': 'Chinese-English translation', + 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', + 'multiLangTextTranslation': 'Multilingual text translation', + 'termOptimizationContextPreserve': + 'Terminology optimization and context preservation', + 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', + 'personalVocabularyMemory': 'Personal vocabulary memory', + 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', + 'colorHighContrast': 'High color contrast', + 'transDisclaimer': + 'Translation performance depends on microphone, network latency, and ambient noise.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Meeting Recording', + 'transcriptionAndSummary': 'Transcription & Summary', + 'keywordSearch': 'Keyword Search', + 'collaborationSharing': 'Collaboration & Sharing', + 'meetingHeaderDesc1': + 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'meetingHeaderDesc2': + 'Suitable for business meetings, class notes, and interview minutes.', + 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingSpeakerTagging': 'Speaker labeling', + 'meetingLongAudioTranscription': 'Long audio transcription', + 'meetingKeyPointSummary': 'Key point extraction', + 'meetingTopicNameSearch': 'Search by topic/name', + 'meetingTimelineJump': 'Timeline jump', + 'meetingExportSummary': 'Export minutes', + 'meetingMultiPlatformShare': 'Share across platforms', + 'meetingDisclaimer': + 'Use in quiet environments; performance depends on microphone and network.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', 'higherQuota': 'Higher usage quota', 'lowerUnitPrice': 'Lower unit price', @@ -358,7 +389,32 @@ const Map skSK = { 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Translation Basic 100', + 'trans_002_name': 'Translation Basic 500', + 'trans_003_name': 'Translation Basic 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': 'Includes 100 translations (voice/text).', + 'trans_002_desc': 'Includes 500 translations (voice/text).', + 'trans_003_desc': 'Includes 1000 translations (voice/text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': 'Preskočiť', 'next': 'Next', 'sayLilyHint': 'Say "Lily Lily" to the mic', @@ -369,7 +425,6 @@ const Map skSK = { 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', 'confirmInput': 'Confirm Input', 'guideClickSendPrefix': 'Tap send, ', - // AI 引导步骤 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', 'guideWeatherInput': 'What’s the weather today?', 'guideWeatherSend': 'Lily will report the weather in real time', @@ -396,7 +451,7 @@ const Map skSK = { 'guideSmsSend': 'Lily will send the message', 'guideSmsEnd': 'Message sent—voice control is convenient', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Začať stretnutie", 'edit': 'Upraviť', 'delete': 'Odstrániť', @@ -408,8 +463,6 @@ const Map skSK = { 'recordingDetails': 'Podrobnosti záznamu', 'aiSummary': 'AI zhrnutie', 'meetingTranscript': 'Prepis stretnutia', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -468,7 +521,6 @@ const Map skSK = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -477,6 +529,97 @@ const Map skSK = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': 'Vytvoriť', + 'templateDetails': 'Podrobnosti šablóny', + 'tag': 'Štítok', + 'description': 'Popis', + 'template': 'Šablóna', + 'deleteTemplate': 'Odstrániť šablónu', + 'deleteTemplateConfirm': 'Ste si istí, že chcete odstrániť túto šablónu?', + 'editTemplate': 'Upraviť šablónu', + 'createTemplate': 'Vytvoriť šablónu', + 'name': 'Názov', + 'templateContentHint': 'Prosím zadajte obsah šablóny! Tip: Kliknite na tlačidlo AI vyššie pre rýchle vygenerovanie obsahu šablóny na základe zadaného názvu a popisu', + 'inputNameHint': 'Prosím zadajte názov', + 'inputDescHint': 'Prosím zadajte popis', + 'custom': 'Vlastné', + 'pleaseEnter': 'Prosím zadajte', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': + 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Uložiť myšlienkovú mapu', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'Exportovať', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Použiť na všetky odseky tohto rečníka', + 'summaryWillBeUpdatedAutomatically': + 'Zhrnutie sa bude automaticky aktualizovať podľa šablóny', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -495,7 +638,7 @@ const Map skSK = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -531,8 +674,6 @@ const Map skSK = { 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -561,105 +702,26 @@ const Map skSK = { 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Použiť na všetky odseky tohto rečníka', - 'summaryWillBeUpdatedAutomatically': - 'Zhrnutie sa bude automaticky aktualizovať podľa šablóny', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': 'Analýza zlyhala, skúste to znova neskôr', + 'transcriptionFailed': 'Prepis zlyhal, skúste to znova neskôr', + 'summaryFailed': 'Zhrnutie zlyhalo, skúste to znova neskôr', + 'summaryFailedShort': 'Zhrnutie zlyhalo', + 'transcriptionFailedShort': 'Prepis zlyhal', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Zvukový prehrávač nie je pripravený, prosím počkajte', + 'playFailed': 'Prehrávanie zlyhalo', + 'audioFileNotFound': 'Zvukový súbor sa nenašiel', + 'fetchingAudio': 'Načítavanie zvuku z cloudu...', + 'playerLoadFailed': 'Zvukový prehrávač sa nepodarilo načítať', // 设置页 "systemSettings": "Systémové nastavenia", @@ -711,26 +773,15 @@ const Map skSK = { "bleHeadsetFirmwareUpgrade": "Aktualizácia verzie firmvéru slúchadiel BLE", "deviceManagement": "Správa zariadení", "manageConnectedDevices": "Správa pripojených Bluetooth zariadení", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Momentálne máte najnovšiu verziu {version}', 'checkUpdateFailed': 'Kontrola aktualizácií zlyhala', 'networkErrorRetry': 'Chyba siete, skúste to znova neskôr', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Hlasový chat v reálnom čase", "realtimeVoiceChatInfo": "Vyskúšajte funkciu inteligentnej hlasovej interakcie (ukážka funkcie)", "loading": "Načítava sa...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -745,8 +796,7 @@ const Map skSK = { "confirmUnbindMessage": "Are you sure you want to unbind device \\", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Vymazať históriu chatu", "online": "Online", @@ -776,8 +826,9 @@ const Map skSK = { "swipeUpForMore": "Potiahnite nahor pre viac", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': 'Keď je zapnuté: AI nebude prerušený vaším hlasom počas rozprávania a môže spracovať iba jedno kolo konverzácie naraz. Pre začatie nového kola stačí povedať aktivačné slovo.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -789,7 +840,7 @@ const Map skSK = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': '你好!我是**Lily**,我能帮你:\n\n' '• 回答问题和提供信息\n\n' '• 实时语音翻译\n\n' @@ -809,18 +860,17 @@ const Map skSK = { 'startVoiceInput': 'Začať hlasový vstup', 'startPhoneCallMode': 'Začať režim volania, začať hlasový vstup', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Sem zadajte svoju správu...', // 全屏编辑器输入提示 'characterCount': '{count} znakov', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopírovať', 'copySuccess': 'Úspešne skopírované', 'report': 'Nahlásiť', 'submitSuccess': 'Úspešne odoslané', 'submitFailed': 'Odoslanie zlyhalo', 'reportSubmitted': 'Hlásenie bolo odoslané, spracujeme ho čo najskôr', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Škodlivé/Nebezpečné', 'pornographicVulgar': 'Pornografické/Vulgárne', 'misleadingAttack': 'Zavádzajúce/Útok', @@ -830,17 +880,14 @@ const Map skSK = { 'other': 'Iné', 'reportDescriptionHint': 'Chceme vedieť dôvod vášho hlásenia, môžete opísať problém, s ktorým ste sa stretli.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Vygenerované AI', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'Tu sú niektoré odporúčané skladby:', 'playList': 'Zoznam skladieb', 'moreMusic': 'Viac hudby', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'hodín', // 小时单位 @@ -855,7 +902,7 @@ const Map skSK = { "bicycling": "Bicyklovanie", "tsransit": "Verejná doprava", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Dotaz na poveternostné podmienky:', 'highest': 'Najvyššia', 'lowest': 'Najnižšia', @@ -884,18 +931,8 @@ const Map skSK = { "friday": "Pi", "saturday": "So", "sunday": "Ne", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Slnečno", "partlyCloudy": "Polooblačno", "partlySunny": "Prevažne slnečno", @@ -916,7 +953,130 @@ const Map skSK = { "haze": "Opar", "strongWind": "Silný vietor", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "História prekladov", + "enableRecording": "Povoliť nahrávanie", + "viewAudioFiles": "Zobraziť zvukové súbory", + "headsetUser": "Používateľ slúchadiel", + "phoneUser": "Používateľ telefónu", + "selectSourceLanguage": "Vyberte zdrojový jazyk", + "selectTargetLanguage": "Vyberte cieľový jazyk", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": + "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Žiadna história", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "Vymazať históriu", + "clearHistoryConfirm": + "Ste si istí, že chcete vymazať celú históriu prekladov? Túto akciu nie je možné vrátiť späť.", + "unknownLanguage": "Neznámy jazyk", + "deleteSessionRecord": "Odstrániť záznam relácie", + "deleteSessionConfirm": + "Ste si istí, že chcete odstrániť všetky záznamy prekladov pre túto reláciu? Túto akciu nie je možné vrátiť späť.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": + "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": + "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": + "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": + "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Preložiť zvukové súbory", + "noAudioFiles": "Žiadne zvukové súbory", + "calculating": "Vypočítava sa...", + "playing": "Prehráva sa...", + "paused": "Pozastavené", + "clickToPlay": "Kliknite pre prehratie", + "rename": "Premenovať", + "smartTranscription": "Inteligentný prepis", + "renameAudioFile": "Premenovať zvukový súbor", + "enterNewFileName": "Zadajte nový názov súboru", + + // 翻译模块 - 翻译详情 + "originalRecord": "Pôvodný záznam", + "recordSummary": "Zhrnutie záznamu", + "clickToGenerateSummary": + "Kliknite na tlačidlo nižšie pre vygenerovanie zhrnutia relácie", + "summaryContent": "Obsah zhrnutia", + "copied": "Skopírované", + "summaryCopiledToClipboard": "Zhrnutie skopírované do schránky", + "extractSummary": "Extrahovať zhrnutie", + "summaryGenerated": "Zhrnutie vygenerované", + "generating": "Generuje sa...", + "regenerate": "Znova vygenerovať", + "summaryTimeoutMessage": + "Požiadavka na generovanie zhrnutia vypršala, môže to byť spôsobené problémami so sieťou alebo zaneprázdneným serverom.", + "deleteTranslationRecord": "Odstrániť záznam prekladu", + "deleteTranslationConfirm": + "Ste si istí, že chcete odstrániť tento záznam prekladu? Túto akciu nie je možné vrátiť späť.", + "originalText": "Pôvodný text", + "translatedText": "Preložený text", + "sessionSummary": "Zhrnutie relácie", + "cannotShare": "Nie je možné zdieľať", + "generateSummaryFirst": "Najprv vygenerujte zhrnutie", + "translationSessionRecord": "Záznam relácie prekladu", + + // 个人资料模块 "editProfile": "Upraviť osobné údaje", "avatar": "Avatar", "nickname": "Prezývka", @@ -932,8 +1092,6 @@ const Map skSK = { 'Ste si istí, že chcete natrvalo odstrániť svoj účet? Túto akciu nie je možné vrátiť späť.', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'Sieťové pripojenie zlyhalo, skontrolujte nastavenia siete a skúste to znova', 'serverTemporarilyUnavailable': @@ -950,10 +1108,6 @@ const Map skSK = { 'Sieťové pripojenie zlyhalo, skontrolujte nastavenia siete', 'serverInternalErrorRetryLater': 'Interná chyba servera, skúste to znova neskôr', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Kompresia obrázka zlyhala', 'avatarUpdateFailed': 'Aktualizácia avatara zlyhala', 'usernameCannotBeEmpty': 'Používateľské meno nemôže byť prázdne', @@ -964,8 +1118,6 @@ const Map skSK = { 'logoutFailedRetry': 'Odhlásenie zlyhalo, skúste to znova', 'accountPermanentlyDeleted': 'Účet bol natrvalo odstránený', 'deleteAccountFailedRetry': 'Odstránenie účtu zlyhalo, skúste to znova', - - // 账号服务相关 'clearUserDataFailed': 'Vymazanie používateľských údajov zlyhalo', // 清理用户数据失败 'deleteUserDataFailed': 'Odstránenie používateľských údajov zlyhalo', // 删除用户数据失败 @@ -981,7 +1133,12 @@ const Map skSK = { 'accountServiceInitialized': 'Služba účtu bola inicializovaná', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': + 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', 'getPermissionStatusFailed': 'Získanie stavu povolenia zlyhalo', 'communicationPermissions': 'Komunikačné povolenia', 'bluetoothPermissions': 'Bluetooth Permissions', @@ -994,7 +1151,6 @@ const Map skSK = { 'phone': 'Telefón', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'Zápis do kalendára', @@ -1050,8 +1206,6 @@ const Map skSK = { 'permanentDenialText': 'Trvalo ste odmietli povolenie {permission}, prejdite do nastavení aplikácie, aby ste ho povolili', 'goToSettings': 'Prejsť do nastavení', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': @@ -1076,7 +1230,6 @@ const Map skSK = { 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', @@ -1086,8 +1239,6 @@ const Map skSK = { '检测到您已永久拒绝录音权限。如需继续使用此功能,请前往应用设置中手动开启麦克风权限。', 'storagePermissionPermanentDenial': '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - //permission_util.dart 'permissionUtilNeed': 'Need ', 'permissionUtilPermission': ' Permission', 'permissionUtilRestricted': ' Permission Restricted', @@ -1095,7 +1246,20 @@ const Map skSK = { 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigácia prebieha', + 'native.notification.navigation.keepRunning': 'Navigácia, ponechajte aplikáciu spustenú', + 'native.notification.bleAgent.running': 'Hlasový asistent je spustený', + 'native.notification.audioRecording.recording': 'Nahrávanie zvuku, ťuknite pre návrat do aplikácie', + 'native.notification.music.waiting': 'Čakanie na prehranie', + 'native.notification.music.previous': 'Predchádzajúca', + 'native.notification.music.next': 'Ďalšia', + 'native.notification.music.play': 'Prehrať', + 'native.notification.music.pause': 'Pozastaviť', + 'native.notification.qqMusic.playing': 'Prehrávanie hudby', + + // 版本更新 'newVersionFound': 'Nájdená nová verzia', // 版本更新对话框标题 'remindLater': 'Pripomenúť neskôr', // 稍后提醒按钮 'updateNow': 'Aktualizovať teraz', // 立即更新按钮 @@ -1106,253 +1270,7 @@ const Map skSK = { 'updateErrorRetry': 'Počas aktualizácie sa vyskytla chyba, skúste to znova neskôr', // 更新错误重试提示 - //国家列表 - "邮箱": "E-mail", - "中国": "Čína", - "美国": "USA", - "加拿大": "Kanada", - "俄罗斯": "Rusko", - "英国": "Spojené kráľovstvo", - "德国": "Nemecko", - "意大利": "Taliansko", - "法国": "Francúzsko", - "西班牙": "Španielsko", - "南非": "Južná Afrika", - "沙特阿拉伯": "Saudská Arábia", - "土耳其": "Turecko", - "日本": "Japonsko", - "韩国": "Južná Kórea", - "新加坡": "Singapur", - "马来西亚": "Malajzia", - "泰国": "Thajsko", - "越南": "Vietnam", - "印度": "India", - "巴基斯坦": "Pakistan", - "菲律宾": "Filipíny", - "印度尼西亚": "Indonézia", - "阿联酋": "SAE", - "墨西哥": "Mexiko", - "巴西": "Brazília", - "阿根廷": "Argentína", - "澳大利亚": "Austrália", - "新西兰": "Nový Zéland", - "中国香港": "Hongkong (Čína)", - "中国澳门": "Macao (Čína)", - "中国台湾": "Taiwan (Čína)", - "埃及": "Egypt", - "希腊": "Grécko", - "荷兰": "Holandsko", - "比利时": "Belgicko", - "匈牙利": "Maďarsko", - "罗马尼亚": "Rumunsko", - "瑞士": "Švajčiarsko", - "奥地利": "Rakúsko", - "丹麦": "Dánsko", - "瑞典": "Švédsko", - "挪威": "Nórsko", - "波兰": "Poľsko", - "秘鲁": "Peru", - "智利": "Čile", - "哥伦比亚": "Kolumbia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugalsko", - "卢森堡": "Luxembursko", - "爱尔兰": "Írsko", - "冰岛": "Island", - "阿尔巴尼亚": "Albánsko", - "马耳他": "Malta", - "塞浦路斯": "Cyprus", - "芬兰": "Fínsko", - "保加利亚": "Bulharsko", - "立陶宛": "Litva", - "拉脱维亚": "Lotyšsko", - "爱沙尼亚": "Estónsko", - "乌克兰": "Ukrajina", - "塞尔维亚": "Srbsko", - "克罗地亚": "Chorvátsko", - "斯洛文尼亚": "Slovinsko", - "捷克": "Česko", - "斯洛伐克": "Slovensko", - "危地马拉": "Guatemala", - "萨尔瓦多": "Salvádor", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nikaragua", - "哥斯达黎加": "Kostarika", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolívia", - "厄瓜多尔": "Ekvádor", - "巴拉圭": "Paraguaj", - "乌拉圭": "Uruguaj", - "摩洛哥": "Maroko", - "阿尔及利亚": "Alžírsko", - "突尼斯": "Tunisko", - "尼日利亚": "Nigéria", - "加纳": "Ghana", - "埃塞俄比亚": "Etiópia", - "肯尼亚": "Keňa", - "坦桑尼亚": "Tanzánia", - "乌干达": "Uganda", - "孟加拉国": "Bangladéš", - "以色列": "Izrael", - "黎巴嫩": "Libanon", - "约旦": "Jordánsko", - "伊拉克": "Irak", - "科威特": "Kuvajt", - "巴林": "Bahrajn", - "卡塔尔": "Katar", - "阿曼": "Omán", - "阿富汗": "Afganistan", - "斯里兰卡": "Srí Lanka", - "缅甸": "Mjanmarsko", - "尼泊尔": "Nepál", - "蒙古": "Mongolsko", - "柬埔寨": "Kambodža", - "老挝": "Laos", - "文莱": "Brunej", - "东帝汶": "Východný Timor", - "斐济": "Fidži", - "所罗门群岛": "Šalamúnove ostrovy", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "História prekladov", - "enableRecording": "Povoliť nahrávanie", - "viewAudioFiles": "Zobraziť zvukové súbory", - "headsetUser": "Používateľ slúchadiel", - "phoneUser": "Používateľ telefónu", - "selectSourceLanguage": "Vyberte zdrojový jazyk", - "selectTargetLanguage": "Vyberte cieľový jazyk", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Žiadna história", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Vymazať históriu", - "clearHistoryConfirm": - "Ste si istí, že chcete vymazať celú históriu prekladov? Túto akciu nie je možné vrátiť späť.", - "unknownLanguage": "Neznámy jazyk", - "deleteSessionRecord": "Odstrániť záznam relácie", - "deleteSessionConfirm": - "Ste si istí, že chcete odstrániť všetky záznamy prekladov pre túto reláciu? Túto akciu nie je možné vrátiť späť.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Preložiť zvukové súbory", - "noAudioFiles": "Žiadne zvukové súbory", - "calculating": "Vypočítava sa...", - "playing": "Prehráva sa...", - "paused": "Pozastavené", - "clickToPlay": "Kliknite pre prehratie", - "rename": "Premenovať", - "smartTranscription": "Inteligentný prepis", - "renameAudioFile": "Premenovať zvukový súbor", - "enterNewFileName": "Zadajte nový názov súboru", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Pôvodný záznam", - "recordSummary": "Zhrnutie záznamu", - "clickToGenerateSummary": - "Kliknite na tlačidlo nižšie pre vygenerovanie zhrnutia relácie", - "summaryContent": "Obsah zhrnutia", - "copied": "Skopírované", - "summaryCopiledToClipboard": "Zhrnutie skopírované do schránky", - "extractSummary": "Extrahovať zhrnutie", - "summaryGenerated": "Zhrnutie vygenerované", - "generating": "Generuje sa...", - "regenerate": "Znova vygenerovať", - "summaryTimeoutMessage": - "Požiadavka na generovanie zhrnutia vypršala, môže to byť spôsobené problémami so sieťou alebo zaneprázdneným serverom.", - "deleteTranslationRecord": "Odstrániť záznam prekladu", - "deleteTranslationConfirm": - "Ste si istí, že chcete odstrániť tento záznam prekladu? Túto akciu nie je možné vrátiť späť.", - "originalText": "Pôvodný text", - "translatedText": "Preložený text", - "sessionSummary": "Zhrnutie relácie", - "cannotShare": "Nie je možné zdieľať", - "generateSummaryFirst": "Najprv vygenerujte zhrnutie", - "translationSessionRecord": "Záznam relácie prekladu", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Párovanie zariadenia", "connectYourDeepSoundHeadset": "Pripojte svoje slúchadlá Voitrans", "bind": "Prepojiť", @@ -1361,14 +1279,11 @@ const Map skSK = { "autoInputCode": "Automatické zadanie kódu", "skipBinding": "Preskočiť prepojenie", "rescan": "Znova skenovať", - "verifyingDevice": "Overuje sa zariadenie...", "confirmBinding": "Potvrdiť prepojenie", "associatingDevice": "Priraďuje sa zariadenie...", "goToBluetoothSettings": "Prejsť do nastavení Bluetooth", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Pripravené na párovanie", "preparingPairingEnvironment": "Príprava prostredia na párovanie...", "connectDeepSoundViaSystemBluetooth": @@ -1378,8 +1293,6 @@ const Map skSK = { "waitingCompletePairing": "Počkajte, prosím, párovanie sa dokončuje...", "pairingSuccessRedirecting": "Párovanie úspešné! Presmerováva sa na domovskú stránku...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Uistite sa, že ste pripojení k zariadeniu Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1391,19 +1304,12 @@ const Map skSK = { "authorizationFailedCheckCode": "Autorizácia zlyhala, skontrolujte, či je autorizačný kód správny", "pairingFailedRetry": "Párovanie zlyhalo, skúste to znova", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Zapnite Bluetooth', 'deviceDisconnected': 'Zariadenie odpojené', 'readyToStartPairing': 'Pripravené na začatie párovania', 'checkingEnvironment': 'Kontrola prostredia...', 'ensureHeadsetOnAndPairingMode': 'Uistite sa, že sú slúchadlá zapnuté a v režime párovania', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Vytvára sa bezpečné pripojenie...', 'needManualBindingAuthCode': 'Vyžaduje sa kód pre autorizáciu manuálneho prepojenia...', @@ -1425,8 +1331,6 @@ const Map skSK = { 'bleConnectionFailed': 'Pripojenie BLE zlyhalo', 'deviceAuthorizationFailedCheckCode': 'Autorizácia zariadenia zlyhala, skontrolujte autorizačný kód', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1439,7 +1343,18 @@ const Map skSK = { 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Spätná väzba používateľa", 'feedbackInfo': 'Poskytnite spätnú väzbu alebo návrhy', 'feedbackDescription': @@ -1483,7 +1398,7 @@ const Map skSK = { "removeEarbudsEnsureBattery": "Vyberte obe slúchadlá a uistite sa, že batéria oboch je nad 20%", - // 音乐列表页面 + // 音乐模块 "noMusic": "Žiadna hudba", // 暂无音乐 "noPlayingMusic": "Neprehráva sa žiadna hudba", // 暂无播放音乐 "unknownSong": "Neznáma pieseň", // 未知歌曲 @@ -1531,22 +1446,122 @@ const Map skSK = { "波斯语": "Perzština", "斯瓦希里语": "Svahilčina", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - "Insufficient balance, please go to the corresponding recharge page to recharge.", - "recharge": "Go to Recharge", - // 会员到期提示 - "aiMemberExpiredDesc": - "AI membership expired, please go to the membership recharge page to renew.", + // 国家列表 + "邮箱": "E-mail", + "中国": "Čína", + "美国": "USA", + "加拿大": "Kanada", + "俄罗斯": "Rusko", + "英国": "Spojené kráľovstvo", + "德国": "Nemecko", + "意大利": "Taliansko", + "法国": "Francúzsko", + "西班牙": "Španielsko", + "南非": "Južná Afrika", + "沙特阿拉伯": "Saudská Arábia", + "土耳其": "Turecko", + "日本": "Japonsko", + "韩国": "Južná Kórea", + "新加坡": "Singapur", + "马来西亚": "Malajzia", + "泰国": "Thajsko", + "越南": "Vietnam", + "印度": "India", + "巴基斯坦": "Pakistan", + "菲律宾": "Filipíny", + "印度尼西亚": "Indonézia", + "阿联酋": "SAE", + "墨西哥": "Mexiko", + "巴西": "Brazília", + "阿根廷": "Argentína", + "澳大利亚": "Austrália", + "新西兰": "Nový Zéland", + "中国香港": "Hongkong (Čína)", + "中国澳门": "Macao (Čína)", + "中国台湾": "Taiwan (Čína)", + "埃及": "Egypt", + "希腊": "Grécko", + "荷兰": "Holandsko", + "比利时": "Belgicko", + "匈牙利": "Maďarsko", + "罗马尼亚": "Rumunsko", + "瑞士": "Švajčiarsko", + "奥地利": "Rakúsko", + "丹麦": "Dánsko", + "瑞典": "Švédsko", + "挪威": "Nórsko", + "波兰": "Poľsko", + "秘鲁": "Peru", + "智利": "Čile", + "哥伦比亚": "Kolumbia", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portugalsko", + "卢森堡": "Luxembursko", + "爱尔兰": "Írsko", + "冰岛": "Island", + "阿尔巴尼亚": "Albánsko", + "马耳他": "Malta", + "塞浦路斯": "Cyprus", + "芬兰": "Fínsko", + "保加利亚": "Bulharsko", + "立陶宛": "Litva", + "拉脱维亚": "Lotyšsko", + "爱沙尼亚": "Estónsko", + "乌克兰": "Ukrajina", + "塞尔维亚": "Srbsko", + "克罗地亚": "Chorvátsko", + "斯洛文尼亚": "Slovinsko", + "捷克": "Česko", + "斯洛伐克": "Slovensko", + "危地马拉": "Guatemala", + "萨尔瓦多": "Salvádor", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nikaragua", + "哥斯达黎加": "Kostarika", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Bolívia", + "厄瓜多尔": "Ekvádor", + "巴拉圭": "Paraguaj", + "乌拉圭": "Uruguaj", + "摩洛哥": "Maroko", + "阿尔及利亚": "Alžírsko", + "突尼斯": "Tunisko", + "尼日利亚": "Nigéria", + "加纳": "Ghana", + "埃塞俄比亚": "Etiópia", + "肯尼亚": "Keňa", + "坦桑尼亚": "Tanzánia", + "乌干达": "Uganda", + "孟加拉国": "Bangladéš", + "以色列": "Izrael", + "黎巴嫩": "Libanon", + "约旦": "Jordánsko", + "伊拉克": "Irak", + "科威特": "Kuvajt", + "巴林": "Bahrajn", + "卡塔尔": "Katar", + "阿曼": "Omán", + "阿富汗": "Afganistan", + "斯里兰卡": "Srí Lanka", + "缅甸": "Mjanmarsko", + "尼泊尔": "Nepál", + "蒙古": "Mongolsko", + "柬埔寨": "Kambodža", + "老挝": "Laos", + "文莱": "Brunej", + "东帝汶": "Východný Timor", + "斐济": "Fidži", + "所罗门群岛": "Šalamúnove ostrovy", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/sl_si.dart b/lib/core/translations/language/sl_si.dart index 3329d82d5..9fdfb8e19 100644 --- a/lib/core/translations/language/sl_si.dart +++ b/lib/core/translations/language/sl_si.dart @@ -1,4 +1,5 @@ const Map slSI = { + // 通用 'continue': 'Nadaljuj', 'confirm': 'Potrdi', @@ -18,6 +19,11 @@ const Map slSI = { "unknownError": "Neznana napaka", "asrConnectionFailed": "Povezava s storitvijo za prepoznavanje govora ni uspela. Preverite omrežje ali poskusite znova pozneje.", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "Povezovanje sveta, onkraj zvoka", @@ -28,7 +34,7 @@ const Map slSI = { "explore": "Razišči", "settings": "Nastavitve", - // 语言 + // 语言列表 "followingSystem": "Sledi sistemu", "chinese": "Kitajščina", "english": "Angleščina", @@ -72,7 +78,7 @@ const Map slSI = { "arabic": "Arabščina", "persian": "Persščina", - // 登录页 + // 登录模块 "welcome": "Dobrodošli", "loginTips": "Prijavite se ali registrirajte s svojo telefonsko številko ali e-pošto", @@ -101,13 +107,9 @@ const Map slSI = { "resendVerificationCode": "Ponovno pošlji verifikacijsko kodo", "login": "Prijava", "usePasswordLogin": "Prijava z geslom", - - // 隐私政策弹窗 "loginDeclaration": "Izjava Voitrans", // Voitrans 声明 "welcomeToThisApp": "Dobrodošli v Voitrans, prosimo, da natančno preberete", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Ne strinjam se", // 不同意 @@ -167,7 +169,7 @@ const Map slSI = { 'right': 'Desno', 'checkConnectionStatusFailed': 'Preverjanje stanja povezave ni uspelo', -// 发现页 + // 发现页 "searchAi": "Išči funkcije AI...", "exploreSlogan": "Pametne slušalke, neskončne možnosti", "exploreSlogan1": "Pametni spremljevalec, neskončne možnosti", @@ -192,6 +194,7 @@ const Map slSI = { "usageStats": "Statistika uporabe", "usageStatsInfo": "Pregledajte vaše uporabo aplikacije", "scene": "Scenarij", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", @@ -212,7 +215,6 @@ const Map slSI = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -229,7 +231,6 @@ const Map slSI = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - // 通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", @@ -238,88 +239,79 @@ const Map slSI = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', 'remaining': 'Remaining', 'featureDescription': 'Feature Description', - // AI 功能卡片 + 'paymentSuccess': 'Plačilo uspešno', + 'paymentFailed': 'Plačilo ni uspelo', + 'gotIt': 'Razumem', + 'paymentFailedTryAgain': 'Plačilo ni uspelo. Poskusite znova.', + 'selectPaymentMethod': 'Izberite način plačila', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Ustvarjanje naročila WeChat ni uspelo', + 'alipayOrderCreateFailed': 'Ustvarjanje naročila Alipay ni uspelo', + 'appleOrderCreateFailed': 'Ustvarjanje naročila Apple ni uspelo', + 'googleOrderCreateFailed': 'Ustvarjanje naročila Google ni uspelo', + 'paypalOrderCreateFailed': 'Ustvarjanje naročila PayPal ni uspelo', + 'paymentException': 'Izjema pri plačilu', + 'paymentLaunchFailed': 'Zagon plačila ni uspel', + 'paymentExceptionWithError': 'Izjema pri plačilu: @error', + 'paymentProcessingCheckLater': 'Vaše naročilo se obdeluje. Preverite pozneje.', + 'paymentResultQueryException': 'Poizvedba o rezultatu plačila ni uspela: @error', + 'orderConfirmedQuotaRefreshed': 'Naročilo je potrjeno. Vaša kvota je bila osvežena.', + 'paymentCompletedConfirming': 'Plačilo je zaključeno. Potrjevanje…', + 'paymentCancelled': 'Plačilo je preklicano', + 'paypalOpenedCompleteInBrowser': 'PayPal je odprt. Prosimo dokončajte plačilo v brskalniku.', + 'paypalOpenFailed': 'Ni mogoče odpreti strani za plačilo PayPal', + 'paymentTestTitle': 'Test plačila', + 'paymentTestOrderInfo': 'Informacije o testnem naročilu', + 'paymentTestProductId': 'ID izdelka', + 'paymentTestProductDescription': 'Opis izdelka', + 'paymentTestWechatDescription': 'Test plačila WeChat', + 'paymentTestAlipayDescription': 'Test plačila Alipay', + 'paymentTestAmount': 'Znesek', + 'paymentTestSelectAmount': 'Izberite testni znesek', + 'paying': 'Plačevanje...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Stanje plačila', + 'errorInfoWithMessage': 'Napaka: @message', + 'retest': 'Ponovno testiraj', + 'paymentTestInstructionsTitle': 'Navodila', + 'paymentTestInstructionsContent': '1. Izberite testni znesek (priporočeno: ¥0.01)\n2. Kliknite gumb za plačilo za začetek\n3. Dokončajte plačilo v aplikaciji za plačila\n4. Vrnite se in preverite rezultat', + 'startingWechatPayment': 'Zaganjanje WeChat Pay...', + 'startingAlipayPayment': 'Zaganjanje Alipay...', + 'wechatPaymentSuccess': 'Plačilo WeChat Pay uspešno!', + 'wechatPaymentFailed': 'Plačilo WeChat Pay ni uspelo', + 'wechatPaymentLaunchFailed': 'Zagon WeChat Pay ni uspel', + 'cannotLaunchWechatPayment': 'Ni mogoče zagnati WeChat Pay', + 'wechatPaymentException': 'Izjema WeChat Pay', + 'wechatPaymentTestCompleted': 'Test plačila WeChat Pay je zaključen', + 'alipayPaymentSuccess': 'Plačilo Alipay uspešno!', + 'alipayPaymentFailed': 'Plačilo Alipay ni uspelo', + 'alipayPaymentLaunchFailed': 'Zagon Alipay ni uspel', + 'cannotLaunchAlipayPayment': 'Ni mogoče zagnati Alipay', + 'alipayPaymentException': 'Izjema Alipay', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": + "Insufficient balance, please go to the corresponding recharge page to recharge.", + "recharge": "Go to Recharge", + "aiMemberExpiredDesc": + "AI membership expired, please go to the membership recharge page to renew.", + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', 'aiHeaderDesc2': @@ -342,7 +334,46 @@ const Map slSI = { 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Real-time Transcription', + 'sceneLexicon': 'Scenario Glossary', + 'subtitleDisplay': 'Subtitles', + 'transHeaderDesc1': + 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', + 'translateZhEn': 'Chinese-English translation', + 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', + 'multiLangTextTranslation': 'Multilingual text translation', + 'termOptimizationContextPreserve': + 'Terminology optimization and context preservation', + 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', + 'personalVocabularyMemory': 'Personal vocabulary memory', + 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', + 'colorHighContrast': 'High color contrast', + 'transDisclaimer': + 'Translation performance depends on microphone, network latency, and ambient noise.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Meeting Recording', + 'transcriptionAndSummary': 'Transcription & Summary', + 'keywordSearch': 'Keyword Search', + 'collaborationSharing': 'Collaboration & Sharing', + 'meetingHeaderDesc1': + 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'meetingHeaderDesc2': + 'Suitable for business meetings, class notes, and interview minutes.', + 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingSpeakerTagging': 'Speaker labeling', + 'meetingLongAudioTranscription': 'Long audio transcription', + 'meetingKeyPointSummary': 'Key point extraction', + 'meetingTopicNameSearch': 'Search by topic/name', + 'meetingTimelineJump': 'Timeline jump', + 'meetingExportSummary': 'Export minutes', + 'meetingMultiPlatformShare': 'Share across platforms', + 'meetingDisclaimer': + 'Use in quiet environments; performance depends on microphone and network.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', 'higherQuota': 'Higher usage quota', 'lowerUnitPrice': 'Lower unit price', @@ -358,7 +389,32 @@ const Map slSI = { 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Translation Basic 100', + 'trans_002_name': 'Translation Basic 500', + 'trans_003_name': 'Translation Basic 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': 'Includes 100 translations (voice/text).', + 'trans_002_desc': 'Includes 500 translations (voice/text).', + 'trans_003_desc': 'Includes 1000 translations (voice/text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': 'Preskoči', 'next': 'Next', 'sayLilyHint': 'Say "Lily Lily" to the mic', @@ -369,7 +425,6 @@ const Map slSI = { 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', 'confirmInput': 'Confirm Input', 'guideClickSendPrefix': 'Tap send, ', - // AI 引导步骤 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', 'guideWeatherInput': 'What’s the weather today?', 'guideWeatherSend': 'Lily will report the weather in real time', @@ -396,7 +451,7 @@ const Map slSI = { 'guideSmsSend': 'Lily will send the message', 'guideSmsEnd': 'Message sent—voice control is convenient', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Začni sestanek", 'edit': 'Uredi', 'delete': 'Izbriši', @@ -408,8 +463,6 @@ const Map slSI = { 'recordingDetails': 'Podrobnosti posnetka', 'aiSummary': 'Povzetek AI', 'meetingTranscript': 'Prepis sestanka', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -467,7 +520,6 @@ const Map slSI = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -476,6 +528,97 @@ const Map slSI = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': 'Ustvari', + 'templateDetails': 'Podrobnosti predloge', + 'tag': 'Oznaka', + 'description': 'Opis', + 'template': 'Predloga', + 'deleteTemplate': 'Izbriši predlogo', + 'deleteTemplateConfirm': 'Ali ste prepričani, da želite izbrisati to predlogo?', + 'editTemplate': 'Uredi predlogo', + 'createTemplate': 'Ustvari predlogo', + 'name': 'Ime', + 'templateContentHint': 'Prosimo vnesite vsebino predloge! Namig: Kliknite gumb AI zgoraj za hitro ustvarjanje vsebine predloge na podlagi vnesenega imena in opisa', + 'inputNameHint': 'Prosimo vnesite ime', + 'inputDescHint': 'Prosimo vnesite opis', + 'custom': 'Po meri', + 'pleaseEnter': 'Prosimo vnesite', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': + 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Shrani miselni zemljevid', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'Izvozi', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Uporabi za vse odstavke tega govorca', + 'summaryWillBeUpdatedAutomatically': + 'Povzetek se bo samodejno posodabljal glede na predlogo', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -494,7 +637,7 @@ const Map slSI = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -530,8 +673,6 @@ const Map slSI = { 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -560,105 +701,26 @@ const Map slSI = { 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Uporabi za vse odstavke tega govorca', - 'summaryWillBeUpdatedAutomatically': - 'Povzetek se bo samodejno posodabljal glede na predlogo', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': 'Analiza ni uspela, poskusite znova pozneje', + 'transcriptionFailed': 'Prepis ni uspel, poskusite znova pozneje', + 'summaryFailed': 'Povzetek ni uspel, poskusite znova pozneje', + 'summaryFailedShort': 'Povzetek ni uspel', + 'transcriptionFailedShort': 'Prepis ni uspel', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Zvočni predvajalnik ni pripravljen, prosimo počakajte', + 'playFailed': 'Predvajanje ni uspelo', + 'audioFileNotFound': 'Zvočna datoteka ni bila najdena', + 'fetchingAudio': 'Pridobivanje zvoka iz oblaka...', + 'playerLoadFailed': 'Zvočni predvajalnik se ni uspel naložiti', // 设置页 "systemSettings": "Sistemske nastavitve", @@ -712,26 +774,15 @@ const Map slSI = { "Nadgradnja različice vdelane programske opreme slušalk BLE", "deviceManagement": "Upravljanje naprav", "manageConnectedDevices": "Upravljanje povezanih naprav Bluetooth", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Trenutno imate najnovejšo različico {version}', 'checkUpdateFailed': 'Preverjanje posodobitev ni uspelo', 'networkErrorRetry': 'Napaka v omrežju, poskusite znova kasneje', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Glasovni klepet v realnem času", "realtimeVoiceChatInfo": "Izkusite funkcijo inteligentne glasovne interakcije (predogled funkcije)", "loading": "Nalaganje...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -746,8 +797,7 @@ const Map slSI = { "confirmUnbindMessage": "Are you sure you want to unbind device \\", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Počisti zgodovino klepeta", "online": "Na spletu", @@ -777,8 +827,9 @@ const Map slSI = { "swipeUpForMore": "Povlecite navzgor za več", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': 'Ko je vklopljeno: AI ne bo prekinjen z vašim glasom med govorjenjem in lahko obdela le en krog pogovora naenkrat. Za začetek novega kroga preprosto izgovorite prebujeno besedo.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -790,7 +841,7 @@ const Map slSI = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': '你好!我是**Lily**,我能帮你:\n\n' '• 回答问题和提供信息\n\n' '• 实时语音翻译\n\n' @@ -810,11 +861,11 @@ const Map slSI = { 'startVoiceInput': 'Začni glasovni vnos', 'startPhoneCallMode': 'Začni način klicanja, začni glasovni vnos', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Tukaj vnesite svoje sporočilo...', // 全屏编辑器输入提示 'characterCount': '{count} znakov', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopiraj', 'copySuccess': 'Uspešno kopirano', 'report': 'Prijavi', @@ -822,7 +873,6 @@ const Map slSI = { 'submitFailed': 'Pošiljanje ni uspelo', 'reportSubmitted': 'Prijava je bila poslana, obdelali jo bomo v najkrajšem možnem času', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Škodljivo/Nevarno', 'pornographicVulgar': 'Pornografsko/Vulgarno', 'misleadingAttack': 'Zavajajoče/Napad', @@ -832,17 +882,14 @@ const Map slSI = { 'other': 'Drugo', 'reportDescriptionHint': 'Želimo vedeti, zakaj prijavljate, lahko opišete težavo, s katero ste se soočili.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Generirano s strani AI', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'Tukaj je nekaj priporočene glasbe:', 'playList': 'Seznam predvajanja', 'moreMusic': 'Več glasbe', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'ur', // 小时单位 @@ -857,7 +904,7 @@ const Map slSI = { "bicycling": "Kolesarjenje", "tsransit": "Javni prevoz", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Poizvedba o vremenskih razmerah:', 'highest': 'Najvišja', 'lowest': 'Najnižja', @@ -887,18 +934,8 @@ const Map slSI = { "friday": "Pet", "saturday": "Sob", "sunday": "Ned", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Sončno", "partlyCloudy": "Delno oblačno", "partlySunny": "Pretežno sončno", @@ -919,7 +956,130 @@ const Map slSI = { "haze": "Meglica", "strongWind": "Močan veter", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "Zgodovina prevodov", + "enableRecording": "Omogoči snemanje", + "viewAudioFiles": "Ogled zvočnih datotek", + "headsetUser": "Uporabnik slušalk", + "phoneUser": "Uporabnik telefona", + "selectSourceLanguage": "Izberi izvorni jezik", + "selectTargetLanguage": "Izberi ciljni jezik", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": + "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Ni zgodovine", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "Počisti zgodovino", + "clearHistoryConfirm": + "Ali ste prepričani, da želite počistiti vso zgodovino prevodov? Tega dejanja ni mogoče razveljaviti.", + "unknownLanguage": "Neznan jezik", + "deleteSessionRecord": "Izbriši zapis seje", + "deleteSessionConfirm": + "Ali ste prepričani, da želite izbrisati vse zapise prevodov za to sejo? Tega dejanja ni mogoče razveljaviti.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": + "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": + "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": + "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": + "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Prevedi zvočne datoteke", + "noAudioFiles": "Ni zvočnih datotek", + "calculating": "Izračunavanje...", + "playing": "Predvajanje...", + "paused": "Premor", + "clickToPlay": "Kliknite za predvajanje", + "rename": "Preimenuj", + "smartTranscription": "Pametna transkripcija", + "renameAudioFile": "Preimenuj zvočno datoteko", + "enterNewFileName": "Vnesite novo ime datoteke", + + // 翻译模块 - 翻译详情 + "originalRecord": "Originalni zapis", + "recordSummary": "Povzetek zapisa", + "clickToGenerateSummary": + "Kliknite spodnji gumb za generiranje povzetka seje", + "summaryContent": "Vsebina povzetka", + "copied": "Kopirano", + "summaryCopiledToClipboard": "Povzetek je bil kopiran v odložišče", + "extractSummary": "Izvleci povzetek", + "summaryGenerated": "Povzetek je bil generiran", + "generating": "Generiranje...", + "regenerate": "Ponovno generiraj", + "summaryTimeoutMessage": + "Čas za generiranje povzetka je potekel, morda zaradi težav z omrežjem ali zasedenosti strežnika.", + "deleteTranslationRecord": "Izbriši zapis prevoda", + "deleteTranslationConfirm": + "Ali ste prepričani, da želite izbrisati ta zapis prevoda? Tega dejanja ni mogoče razveljaviti.", + "originalText": "Originalno besedilo", + "translatedText": "Prevedeno besedilo", + "sessionSummary": "Povzetek seje", + "cannotShare": "Ni mogoče deliti", + "generateSummaryFirst": "Najprej generirajte povzetek", + "translationSessionRecord": "Zapis seje prevajanja", + + // 个人资料模块 "editProfile": "Uredi osebne podatke", "avatar": "Avatar", "nickname": "Vzdevek", @@ -936,8 +1096,6 @@ const Map slSI = { 'Ali ste prepričani, da želite trajno izbrisati svoj račun? Tega dejanja ni mogoče razveljaviti', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'Napaka v omrežni povezavi, preverite nastavitve omrežja in poskusite znova', 'serverTemporarilyUnavailable': @@ -954,10 +1112,6 @@ const Map slSI = { 'Napaka v omrežni povezavi, preverite nastavitve omrežja', 'serverInternalErrorRetryLater': 'Notranja napaka strežnika, poskusite znova kasneje', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Stiskanje slike ni uspelo', 'avatarUpdateFailed': 'Posodobitev avatarja ni uspela', 'usernameCannotBeEmpty': 'Uporabniško ime ne sme biti prazno', @@ -968,8 +1122,6 @@ const Map slSI = { 'logoutFailedRetry': 'Odjava ni uspela, poskusite znova', 'accountPermanentlyDeleted': 'Račun je bil trajno izbrisan', 'deleteAccountFailedRetry': 'Brisanje računa ni uspelo, poskusite znova', - - // 账号服务相关 'clearUserDataFailed': 'Čiščenje uporabniških podatkov ni uspelo', // 清理用户数据失败 'deleteUserDataFailed': 'Brisanje uporabniških podatkov ni uspelo', // 删除用户数据失败 @@ -984,7 +1136,12 @@ const Map slSI = { 'accountServiceInitialized': 'AccountService je bil inicializiran', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': + 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', 'getPermissionStatusFailed': 'Pridobivanje stanja dovoljenja ni uspelo', 'communicationPermissions': 'Dovoljenja za komunikacijo', 'bluetoothPermissions': 'Bluetooth Permissions', @@ -997,7 +1154,6 @@ const Map slSI = { 'phone': 'Telefon', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'Pisanje v koledar', @@ -1054,8 +1210,6 @@ const Map slSI = { 'permanentDenialText': 'Trajno ste zavrnili dovoljenje za {permission}, pojdite v nastavitve aplikacije, da ga omogočite', 'goToSettings': 'Pojdi na nastavitve', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': @@ -1080,7 +1234,6 @@ const Map slSI = { 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', @@ -1090,8 +1243,6 @@ const Map slSI = { '检测到您已永久拒绝录音权限。如需继续使用此功能,请前往应用设置中手动开启麦克风权限。', 'storagePermissionPermanentDenial': '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - //permission_util.dart 'permissionUtilNeed': 'Need ', 'permissionUtilPermission': ' Permission', 'permissionUtilRestricted': ' Permission Restricted', @@ -1099,7 +1250,20 @@ const Map slSI = { 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigacija poteka', + 'native.notification.navigation.keepRunning': 'Navigacija, ohranite aplikacijo zagnano', + 'native.notification.bleAgent.running': 'Glasovni pomočnik deluje', + 'native.notification.audioRecording.recording': 'Snemanje zvoka, tapnite za vrnitev v aplikacijo', + 'native.notification.music.waiting': 'Čakanje na predvajanje', + 'native.notification.music.previous': 'Prejšnja', + 'native.notification.music.next': 'Naslednja', + 'native.notification.music.play': 'Predvajaj', + 'native.notification.music.pause': 'Premor', + 'native.notification.qqMusic.playing': 'Predvajanje glasbe', + + // 版本更新 'newVersionFound': 'Najdena nova različica', // 版本更新对话框标题 'remindLater': 'Opomni me kasneje', // 稍后提醒按钮 'updateNow': 'Posodobi zdaj', // 立即更新按钮 @@ -1110,253 +1274,7 @@ const Map slSI = { 'updateErrorRetry': 'Prišlo je do napake med posodabljanjem, poskusite znova kasneje', // 更新错误重试提示 - //国家列表 - "邮箱": "E-pošta", - "中国": "Kitajska", - "美国": "ZDA", - "加拿大": "Kanada", - "俄罗斯": "Rusija", - "英国": "Združeno kraljestvo", - "德国": "Nemčija", - "意大利": "Italija", - "法国": "Francija", - "西班牙": "Španija", - "南非": "Južna Afrika", - "沙特阿拉伯": "Saudova Arabija", - "土耳其": "Turčija", - "日本": "Japonska", - "韩国": "Južna Koreja", - "新加坡": "Singapur", - "马来西亚": "Malezija", - "泰国": "Tajska", - "越南": "Vietnam", - "印度": "Indija", - "巴基斯坦": "Pakistan", - "菲律宾": "Filipini", - "印度尼西亚": "Indonezija", - "阿联酋": "ZAE", - "墨西哥": "Mehika", - "巴西": "Brazilija", - "阿根廷": "Argentina", - "澳大利亚": "Avstralija", - "新西兰": "Nova Zelandija", - "中国香港": "Hongkong (Kitajska)", - "中国澳门": "Macao (Kitajska)", - "中国台湾": "Tajvan (Kitajska)", - "埃及": "Egipt", - "希腊": "Grčija", - "荷兰": "Nizozemska", - "比利时": "Belgija", - "匈牙利": "Madžarska", - "罗马尼亚": "Romunija", - "瑞士": "Švica", - "奥地利": "Avstrija", - "丹麦": "Danska", - "瑞典": "Švedska", - "挪威": "Norveška", - "波兰": "Poljska", - "秘鲁": "Peru", - "智利": "Čile", - "哥伦比亚": "Kolumbija", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugalska", - "卢森堡": "Luksemburg", - "爱尔兰": "Irska", - "冰岛": "Islandija", - "阿尔巴尼亚": "Albanija", - "马耳他": "Malta", - "塞浦路斯": "Ciper", - "芬兰": "Finska", - "保加利亚": "Bolgarija", - "立陶宛": "Litva", - "拉脱维亚": "Latvija", - "爱沙尼亚": "Estonija", - "乌克兰": "Ukrajina", - "塞尔维亚": "Srbija", - "克罗地亚": "Hrvaška", - "斯洛文尼亚": "Slovenija", - "捷克": "Češka", - "斯洛伐克": "Slovaška", - "危地马拉": "Gvatemala", - "萨尔瓦多": "Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nikaragva", - "哥斯达黎加": "Kostarika", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolivija", - "厄瓜多尔": "Ekvador", - "巴拉圭": "Paragvaj", - "乌拉圭": "Urugvaj", - "摩洛哥": "Maroko", - "阿尔及利亚": "Alžirija", - "突尼斯": "Tunizija", - "尼日利亚": "Nigerija", - "加纳": "Gana", - "埃塞俄比亚": "Etiopija", - "肯尼亚": "Kenija", - "坦桑尼亚": "Tanzanija", - "乌干达": "Uganda", - "孟加拉国": "Bangladeš", - "以色列": "Izrael", - "黎巴嫩": "Libanon", - "约旦": "Jordanija", - "伊拉克": "Irak", - "科威特": "Kuvajt", - "巴林": "Bahrajn", - "卡塔尔": "Katar", - "阿曼": "Oman", - "阿富汗": "Afganistan", - "斯里兰卡": "Šrilanka", - "缅甸": "Mjanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongolija", - "柬埔寨": "Kambodža", - "老挝": "Laos", - "文莱": "Brunej", - "东帝汶": "Vzhodni Timor", - "斐济": "Fidži", - "所罗门群岛": "Salomonovi otoki", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Zgodovina prevodov", - "enableRecording": "Omogoči snemanje", - "viewAudioFiles": "Ogled zvočnih datotek", - "headsetUser": "Uporabnik slušalk", - "phoneUser": "Uporabnik telefona", - "selectSourceLanguage": "Izberi izvorni jezik", - "selectTargetLanguage": "Izberi ciljni jezik", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Ni zgodovine", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Počisti zgodovino", - "clearHistoryConfirm": - "Ali ste prepričani, da želite počistiti vso zgodovino prevodov? Tega dejanja ni mogoče razveljaviti.", - "unknownLanguage": "Neznan jezik", - "deleteSessionRecord": "Izbriši zapis seje", - "deleteSessionConfirm": - "Ali ste prepričani, da želite izbrisati vse zapise prevodov za to sejo? Tega dejanja ni mogoče razveljaviti.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Prevedi zvočne datoteke", - "noAudioFiles": "Ni zvočnih datotek", - "calculating": "Izračunavanje...", - "playing": "Predvajanje...", - "paused": "Premor", - "clickToPlay": "Kliknite za predvajanje", - "rename": "Preimenuj", - "smartTranscription": "Pametna transkripcija", - "renameAudioFile": "Preimenuj zvočno datoteko", - "enterNewFileName": "Vnesite novo ime datoteke", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Originalni zapis", - "recordSummary": "Povzetek zapisa", - "clickToGenerateSummary": - "Kliknite spodnji gumb za generiranje povzetka seje", - "summaryContent": "Vsebina povzetka", - "copied": "Kopirano", - "summaryCopiledToClipboard": "Povzetek je bil kopiran v odložišče", - "extractSummary": "Izvleci povzetek", - "summaryGenerated": "Povzetek je bil generiran", - "generating": "Generiranje...", - "regenerate": "Ponovno generiraj", - "summaryTimeoutMessage": - "Čas za generiranje povzetka je potekel, morda zaradi težav z omrežjem ali zasedenosti strežnika.", - "deleteTranslationRecord": "Izbriši zapis prevoda", - "deleteTranslationConfirm": - "Ali ste prepričani, da želite izbrisati ta zapis prevoda? Tega dejanja ni mogoče razveljaviti.", - "originalText": "Originalno besedilo", - "translatedText": "Prevedeno besedilo", - "sessionSummary": "Povzetek seje", - "cannotShare": "Ni mogoče deliti", - "generateSummaryFirst": "Najprej generirajte povzetek", - "translationSessionRecord": "Zapis seje prevajanja", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Seznanjanje naprave", "connectYourDeepSoundHeadset": "Povežite svoje slušalke Voitrans", "bind": "Poveži", @@ -1365,14 +1283,11 @@ const Map slSI = { "autoInputCode": "Samodejni vnos kode", "skipBinding": "Preskoči povezavo", "rescan": "Ponovno skeniraj", - "verifyingDevice": "Preverjanje naprave...", "confirmBinding": "Potrdi povezavo", "associatingDevice": "Povezovanje naprave...", "goToBluetoothSettings": "Pojdi na nastavitve Bluetooth", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Pripravljen za seznanjanje", "preparingPairingEnvironment": "Priprava okolja za seznanjanje...", "connectDeepSoundViaSystemBluetooth": @@ -1382,8 +1297,6 @@ const Map slSI = { "waitingCompletePairing": "Počakajte, seznanjanje se zaključuje...", "pairingSuccessRedirecting": "Seznanjanje uspelo! Preusmerjanje na domačo stran...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Prepričajte se, da ste povezani z napravo Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1395,19 +1308,12 @@ const Map slSI = { "authorizationFailedCheckCode": "Avtorizacija ni uspela, preverite, ali je avtorizacijska koda pravilna", "pairingFailedRetry": "Seznanjanje ni uspelo, poskusite znova", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Omogočite Bluetooth', 'deviceDisconnected': 'Naprava je bila odklopljena', 'readyToStartPairing': 'Pripravljen za začetek seznanjanja', 'checkingEnvironment': 'Preverjanje okolja...', 'ensureHeadsetOnAndPairingMode': 'Prepričajte se, da so slušalke vklopljene in v načinu seznanjanja', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Vzpostavljanje varne povezave...', 'needManualBindingAuthCode': 'Potrebna je koda za avtorizacijo ročne povezave...', @@ -1430,8 +1336,6 @@ const Map slSI = { 'bleConnectionFailed': 'Povezava BLE ni uspela', 'deviceAuthorizationFailedCheckCode': 'Avtorizacija naprave ni uspela, preverite avtorizacijsko kodo', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1444,7 +1348,18 @@ const Map slSI = { 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Povratne informacije uporabnikov", 'feedbackInfo': 'Podajte povratne informacije ali predloge', 'feedbackDescription': @@ -1487,7 +1402,7 @@ const Map slSI = { "removeEarbudsEnsureBattery": "Odstranite obe slušalki in se prepričajte, da je baterija obeh nad 20%", - // 音乐列表页面 + // 音乐模块 "noMusic": "Ni glasbe", // 暂无音乐 "noPlayingMusic": "Ni predvajane glasbe", // 暂无播放音乐 "unknownSong": "Neznana pesem", // 未知歌曲 @@ -1535,22 +1450,122 @@ const Map slSI = { "波斯语": "Perzijščina", "斯瓦希里语": "Svahilščina", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - "Insufficient balance, please go to the corresponding recharge page to recharge.", - "recharge": "Go to Recharge", - // 会员到期提示 - "aiMemberExpiredDesc": - "AI membership expired, please go to the membership recharge page to renew.", + // 国家列表 + "邮箱": "E-pošta", + "中国": "Kitajska", + "美国": "ZDA", + "加拿大": "Kanada", + "俄罗斯": "Rusija", + "英国": "Združeno kraljestvo", + "德国": "Nemčija", + "意大利": "Italija", + "法国": "Francija", + "西班牙": "Španija", + "南非": "Južna Afrika", + "沙特阿拉伯": "Saudova Arabija", + "土耳其": "Turčija", + "日本": "Japonska", + "韩国": "Južna Koreja", + "新加坡": "Singapur", + "马来西亚": "Malezija", + "泰国": "Tajska", + "越南": "Vietnam", + "印度": "Indija", + "巴基斯坦": "Pakistan", + "菲律宾": "Filipini", + "印度尼西亚": "Indonezija", + "阿联酋": "ZAE", + "墨西哥": "Mehika", + "巴西": "Brazilija", + "阿根廷": "Argentina", + "澳大利亚": "Avstralija", + "新西兰": "Nova Zelandija", + "中国香港": "Hongkong (Kitajska)", + "中国澳门": "Macao (Kitajska)", + "中国台湾": "Tajvan (Kitajska)", + "埃及": "Egipt", + "希腊": "Grčija", + "荷兰": "Nizozemska", + "比利时": "Belgija", + "匈牙利": "Madžarska", + "罗马尼亚": "Romunija", + "瑞士": "Švica", + "奥地利": "Avstrija", + "丹麦": "Danska", + "瑞典": "Švedska", + "挪威": "Norveška", + "波兰": "Poljska", + "秘鲁": "Peru", + "智利": "Čile", + "哥伦比亚": "Kolumbija", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portugalska", + "卢森堡": "Luksemburg", + "爱尔兰": "Irska", + "冰岛": "Islandija", + "阿尔巴尼亚": "Albanija", + "马耳他": "Malta", + "塞浦路斯": "Ciper", + "芬兰": "Finska", + "保加利亚": "Bolgarija", + "立陶宛": "Litva", + "拉脱维亚": "Latvija", + "爱沙尼亚": "Estonija", + "乌克兰": "Ukrajina", + "塞尔维亚": "Srbija", + "克罗地亚": "Hrvaška", + "斯洛文尼亚": "Slovenija", + "捷克": "Češka", + "斯洛伐克": "Slovaška", + "危地马拉": "Gvatemala", + "萨尔瓦多": "Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nikaragva", + "哥斯达黎加": "Kostarika", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Bolivija", + "厄瓜多尔": "Ekvador", + "巴拉圭": "Paragvaj", + "乌拉圭": "Urugvaj", + "摩洛哥": "Maroko", + "阿尔及利亚": "Alžirija", + "突尼斯": "Tunizija", + "尼日利亚": "Nigerija", + "加纳": "Gana", + "埃塞俄比亚": "Etiopija", + "肯尼亚": "Kenija", + "坦桑尼亚": "Tanzanija", + "乌干达": "Uganda", + "孟加拉国": "Bangladeš", + "以色列": "Izrael", + "黎巴嫩": "Libanon", + "约旦": "Jordanija", + "伊拉克": "Irak", + "科威特": "Kuvajt", + "巴林": "Bahrajn", + "卡塔尔": "Katar", + "阿曼": "Oman", + "阿富汗": "Afganistan", + "斯里兰卡": "Šrilanka", + "缅甸": "Mjanmar", + "尼泊尔": "Nepal", + "蒙古": "Mongolija", + "柬埔寨": "Kambodža", + "老挝": "Laos", + "文莱": "Brunej", + "东帝汶": "Vzhodni Timor", + "斐济": "Fidži", + "所罗门群岛": "Salomonovi otoki", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/sr_rs.dart b/lib/core/translations/language/sr_rs.dart index 092355fa5..3c70a1417 100644 --- a/lib/core/translations/language/sr_rs.dart +++ b/lib/core/translations/language/sr_rs.dart @@ -1,4 +1,5 @@ const Map srRS = { + // 通用 'continue': 'Nastavi', 'confirm': 'Potvrdi', @@ -18,6 +19,11 @@ const Map srRS = { "unknownError": "Nepoznata greška", "asrConnectionFailed": "Povezivanje sa servisom za prepoznavanje govora nije uspelo. Proverite mrežu i pokušajte ponovo kasnije.", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "Povezivanje sveta, izvan zvuka", @@ -28,7 +34,7 @@ const Map srRS = { "explore": "Istraži", "settings": "Podešavanja", - // 语言 + // 语言列表 "followingSystem": "Prati sistem", "chinese": "Kineski", "english": "Engleski", @@ -72,7 +78,7 @@ const Map srRS = { "arabic": "Arabski", "persian": "Perski", - // 登录页 + // 登录模块 "welcome": "Dobrodošli", "loginTips": "Prijavite se ili registrujte putem broja telefona ili e-pošte", "accountNumber": "Broj telefona ili e-pošta", @@ -100,13 +106,9 @@ const Map srRS = { "resendVerificationCode": "Ponovo pošalji verifikacioni kod", "login": "Prijavi se", "usePasswordLogin": "Prijavi se lozinkom", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans izjava", // Voitrans 声明 "welcomeToThisApp": "Dobrodošli u Voitrans, molimo vas da pažljivo pročitate", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Ne slažem se", // 不同意 @@ -167,7 +169,7 @@ const Map srRS = { 'right': 'Desno', 'checkConnectionStatusFailed': 'Neuspešna provera statusa veze', -// 发现页 + // 发现页 "searchAi": "Pretraži AI funkcije...", "exploreSlogan": "Pametne slušalice, beskonačne mogućnosti", "exploreSlogan1": "Pametni pratilac, beskonačne mogućnosti", @@ -191,6 +193,7 @@ const Map srRS = { "usageStats": "Statistika korišćenja", "usageStatsInfo": "Pregledajte vaše korišćenje aplikacije", "scene": "Scena", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", @@ -211,7 +214,6 @@ const Map srRS = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -228,7 +230,6 @@ const Map srRS = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - // 通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", @@ -237,88 +238,79 @@ const Map srRS = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', 'remaining': 'Remaining', 'featureDescription': 'Feature Description', - // AI 功能卡片 + 'paymentSuccess': 'Plaćanje uspešno', + 'paymentFailed': 'Plaćanje nije uspelo', + 'gotIt': 'Razumem', + 'paymentFailedTryAgain': 'Plaćanje nije uspelo. Pokušajte ponovo.', + 'selectPaymentMethod': 'Izaberite način plaćanja', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Kreiranje WeChat porudžbine nije uspelo', + 'alipayOrderCreateFailed': 'Kreiranje Alipay porudžbine nije uspelo', + 'appleOrderCreateFailed': 'Kreiranje Apple porudžbine nije uspelo', + 'googleOrderCreateFailed': 'Kreiranje Google porudžbine nije uspelo', + 'paypalOrderCreateFailed': 'Kreiranje PayPal porudžbine nije uspelo', + 'paymentException': 'Izuzetak pri plaćanju', + 'paymentLaunchFailed': 'Pokretanje plaćanja nije uspelo', + 'paymentExceptionWithError': 'Izuzetak pri plaćanju: @error', + 'paymentProcessingCheckLater': 'Vaša porudžbina se obrađuje. Proverite kasnije.', + 'paymentResultQueryException': 'Neuspešno pretraživanje rezultata plaćanja: @error', + 'orderConfirmedQuotaRefreshed': 'Porudžbina je potvrđena. Vaša kvota je osvežena.', + 'paymentCompletedConfirming': 'Plaćanje je završeno. Potvrđivanje…', + 'paymentCancelled': 'Plaćanje je otkazano', + 'paypalOpenedCompleteInBrowser': 'PayPal je otvoren. Molimo završite plaćanje u pretraživaču.', + 'paypalOpenFailed': 'Nije moguće otvoriti PayPal stranicu za plaćanje', + 'paymentTestTitle': 'Test plaćanja', + 'paymentTestOrderInfo': 'Informacije o test porudžbini', + 'paymentTestProductId': 'ID proizvoda', + 'paymentTestProductDescription': 'Opis proizvoda', + 'paymentTestWechatDescription': 'Test WeChat plaćanja', + 'paymentTestAlipayDescription': 'Test Alipay plaćanja', + 'paymentTestAmount': 'Iznos', + 'paymentTestSelectAmount': 'Izaberite test iznos', + 'paying': 'Plaćanje...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Status plaćanja', + 'errorInfoWithMessage': 'Greška: @message', + 'retest': 'Ponovo testiraj', + 'paymentTestInstructionsTitle': 'Uputstva', + 'paymentTestInstructionsContent': '1. Izaberite test iznos (preporučeno: ¥0.01)\n2. Kliknite dugme za plaćanje da započnete\n3. Završite plaćanje u aplikaciji za plaćanje\n4. Vratite se da proverite rezultat', + 'startingWechatPayment': 'Pokretanje WeChat Pay-a...', + 'startingAlipayPayment': 'Pokretanje Alipay-a...', + 'wechatPaymentSuccess': 'WeChat Pay plaćanje uspešno!', + 'wechatPaymentFailed': 'WeChat Pay plaćanje nije uspelo', + 'wechatPaymentLaunchFailed': 'Pokretanje WeChat Pay-a nije uspelo', + 'cannotLaunchWechatPayment': 'Nije moguće pokrenuti WeChat Pay', + 'wechatPaymentException': 'WeChat Pay izuzetak', + 'wechatPaymentTestCompleted': 'Test WeChat Pay plaćanja je završen', + 'alipayPaymentSuccess': 'Alipay plaćanje uspešno!', + 'alipayPaymentFailed': 'Alipay plaćanje nije uspelo', + 'alipayPaymentLaunchFailed': 'Pokretanje Alipay-a nije uspelo', + 'cannotLaunchAlipayPayment': 'Nije moguće pokrenuti Alipay', + 'alipayPaymentException': 'Alipay izuzetak', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": + "Insufficient balance, please go to the corresponding recharge page to recharge.", + "recharge": "Go to Recharge", + "aiMemberExpiredDesc": + "AI membership expired, please go to the membership recharge page to renew.", + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', 'aiHeaderDesc2': @@ -341,7 +333,46 @@ const Map srRS = { 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Real-time Transcription', + 'sceneLexicon': 'Scenario Glossary', + 'subtitleDisplay': 'Subtitles', + 'transHeaderDesc1': + 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', + 'translateZhEn': 'Chinese-English translation', + 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', + 'multiLangTextTranslation': 'Multilingual text translation', + 'termOptimizationContextPreserve': + 'Terminology optimization and context preservation', + 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', + 'personalVocabularyMemory': 'Personal vocabulary memory', + 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', + 'colorHighContrast': 'High color contrast', + 'transDisclaimer': + 'Translation performance depends on microphone, network latency, and ambient noise.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Meeting Recording', + 'transcriptionAndSummary': 'Transcription & Summary', + 'keywordSearch': 'Keyword Search', + 'collaborationSharing': 'Collaboration & Sharing', + 'meetingHeaderDesc1': + 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'meetingHeaderDesc2': + 'Suitable for business meetings, class notes, and interview minutes.', + 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingSpeakerTagging': 'Speaker labeling', + 'meetingLongAudioTranscription': 'Long audio transcription', + 'meetingKeyPointSummary': 'Key point extraction', + 'meetingTopicNameSearch': 'Search by topic/name', + 'meetingTimelineJump': 'Timeline jump', + 'meetingExportSummary': 'Export minutes', + 'meetingMultiPlatformShare': 'Share across platforms', + 'meetingDisclaimer': + 'Use in quiet environments; performance depends on microphone and network.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', 'higherQuota': 'Higher usage quota', 'lowerUnitPrice': 'Lower unit price', @@ -357,7 +388,32 @@ const Map srRS = { 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Translation Basic 100', + 'trans_002_name': 'Translation Basic 500', + 'trans_003_name': 'Translation Basic 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': 'Includes 100 translations (voice/text).', + 'trans_002_desc': 'Includes 500 translations (voice/text).', + 'trans_003_desc': 'Includes 1000 translations (voice/text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': 'Preskoči', 'next': 'Next', 'sayLilyHint': 'Say "Lily Lily" to the mic', @@ -368,7 +424,6 @@ const Map srRS = { 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', 'confirmInput': 'Confirm Input', 'guideClickSendPrefix': 'Tap send, ', - // AI 引导步骤 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', 'guideWeatherInput': 'What’s the weather today?', 'guideWeatherSend': 'Lily will report the weather in real time', @@ -395,7 +450,7 @@ const Map srRS = { 'guideSmsSend': 'Lily will send the message', 'guideSmsEnd': 'Message sent—voice control is convenient', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Započni sastanak", 'edit': 'Uredi', 'delete': 'Obriši', @@ -407,8 +462,6 @@ const Map srRS = { 'recordingDetails': 'Detalji snimka', 'aiSummary': 'AI sažetak', 'meetingTranscript': 'Transkript sastanka', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -466,7 +519,6 @@ const Map srRS = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -475,6 +527,97 @@ const Map srRS = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': 'Kreiraj', + 'templateDetails': 'Detalji šablona', + 'tag': 'Oznaka', + 'description': 'Opis', + 'template': 'Šablon', + 'deleteTemplate': 'Obriši šablon', + 'deleteTemplateConfirm': 'Da li ste sigurni da želite da obrišete ovaj šablon?', + 'editTemplate': 'Uredi šablon', + 'createTemplate': 'Kreiraj šablon', + 'name': 'Ime', + 'templateContentHint': 'Molimo unesite sadržaj šablona! Savet: Kliknite na AI dugme iznad da brzo generišete sadržaj šablona na osnovu imena i opisa koje ste uneli', + 'inputNameHint': 'Molimo unesite ime', + 'inputDescHint': 'Molimo unesite opis', + 'custom': 'Prilagođeno', + 'pleaseEnter': 'Молимо унесите', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': + 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Sačuvaj mentalnu mapu', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'Izvezi', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Primeni na sve pasuse ovog govornika', + 'summaryWillBeUpdatedAutomatically': + 'Sažetak će se automatski ažurirati prema šablonu', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -493,7 +636,7 @@ const Map srRS = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -529,8 +672,6 @@ const Map srRS = { 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -559,105 +700,26 @@ const Map srRS = { 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Primeni na sve pasuse ovog govornika', - 'summaryWillBeUpdatedAutomatically': - 'Sažetak će se automatski ažurirati prema šablonu', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': 'Analiza nije uspela, pokušajte ponovo kasnije', + 'transcriptionFailed': 'Transkripcija nije uspela, pokušajte ponovo kasnije', + 'summaryFailed': 'Sažetak nije uspeo, pokušajte ponovo kasnije', + 'summaryFailedShort': 'Sažetak nije uspeo', + 'transcriptionFailedShort': 'Transkripcija nije uspela', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Audio plejer nije spreman, molimo sačekajte', + 'playFailed': 'Reprodukcija nije uspela', + 'audioFileNotFound': 'Audio datoteka nije pronađena', + 'fetchingAudio': 'Preuzimanje audio zapisa iz oblaka...', + 'playerLoadFailed': 'Audio plejer nije uspeo da se učita', // 设置页 "systemSettings": "Sistemska podešavanja", @@ -710,26 +772,15 @@ const Map srRS = { "bleHeadsetFirmwareUpgrade": "Nadogradnja verzije firmvera BLE slušalica", "deviceManagement": "Upravljanje uređajima", "manageConnectedDevices": "Upravljanje povezanim Bluetooth uređajima", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Trenutno imate najnoviju verziju {version}', 'checkUpdateFailed': 'Neuspešna provera ažuriranja', 'networkErrorRetry': 'Mrežna greška, pokušajte ponovo kasnije', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Glasovno ćaskanje u realnom vremenu", "realtimeVoiceChatInfo": "Iskusite funkciju inteligentne glasovne interakcije (pregled funkcije)", "loading": "Učitavanje...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -744,8 +795,7 @@ const Map srRS = { "confirmUnbindMessage": "Are you sure you want to unbind device \\", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Obriši istoriju ćaskanja", "online": "Na mreži", @@ -775,8 +825,9 @@ const Map srRS = { "swipeUpForMore": "Prevucite nagore za više", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': 'Kada je uključeno: AI neće biti prekinut vašim glasom dok govori i može da obradi samo jedan krug razgovora. Da biste započeli novi krug, samo izgovorite reč za buđenje.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -788,7 +839,7 @@ const Map srRS = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': '你好!我是**Lily**,我能帮你:\n\n' '• 回答问题和提供信息\n\n' '• 实时语音翻译\n\n' @@ -808,18 +859,17 @@ const Map srRS = { 'startVoiceInput': 'Započni unos glasom', 'startPhoneCallMode': 'Započni režim poziva, započni unos glasom', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Unesite svoju poruku ovde...', // 全屏编辑器输入提示 'characterCount': '{count} karaktera', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopiraj', 'copySuccess': 'Uspešno kopirano', 'report': 'Prijavi', 'submitSuccess': 'Uspešno poslato', 'submitFailed': 'Neuspešno slanje', 'reportSubmitted': 'Prijava je poslata, obradićemo je što je pre moguće', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Štetno/Opasno', 'pornographicVulgar': 'Pornografski/Prostački', 'misleadingAttack': 'Obmanjujuće/Napad', @@ -829,17 +879,14 @@ const Map srRS = { 'other': 'Ostalo', 'reportDescriptionHint': 'Želimo da znamo razlog vaše prijave, možete opisati problem sa kojim ste se suočili.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Generisano od strane AI', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'Evo nekoliko preporučenih pesama:', 'playList': 'Lista pesama', 'moreMusic': 'Još muzike', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'sati', // 小时单位 @@ -854,7 +901,7 @@ const Map srRS = { "bicycling": "Biciklizam", "tsransit": "Javni prevoz", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Upit o vremenskim uslovima:', 'highest': 'Najviša', 'lowest': 'Najniža', @@ -883,18 +930,8 @@ const Map srRS = { "friday": "Pet", "saturday": "Sub", "sunday": "Ned", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Sunčano", "partlyCloudy": "Delimično oblačno", "partlySunny": "Pretežno sunčano", @@ -915,7 +952,130 @@ const Map srRS = { "haze": "Sumaglica", "strongWind": "Jak vetar", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "Istorija prevođenja", + "enableRecording": "Omogući snimanje", + "viewAudioFiles": "Prikaži audio datoteke", + "headsetUser": "Korisnik slušalica", + "phoneUser": "Korisnik telefona", + "selectSourceLanguage": "Izaberi izvorni jezik", + "selectTargetLanguage": "Izaberi ciljni jezik", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": + "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Nema istorije", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "Obriši istoriju", + "clearHistoryConfirm": + "Da li ste sigurni da želite da obrišete celu istoriju prevođenja? Ova radnja se ne može opozvati.", + "unknownLanguage": "Nepoznat jezik", + "deleteSessionRecord": "Obriši zapis sesije", + "deleteSessionConfirm": + "Da li ste sigurni da želite da obrišete sve zapise prevođenja za ovu sesiju? Ova radnja se ne može opozvati.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": + "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": + "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": + "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": + "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Prevedi audio datoteke", + "noAudioFiles": "Nema audio datoteka", + "calculating": "Izračunavanje...", + "playing": "Reprodukcija...", + "paused": "Pauzirano", + "clickToPlay": "Kliknite da biste reprodukovali", + "rename": "Preimenuj", + "smartTranscription": "Pametna transkripcija", + "renameAudioFile": "Preimenuj audio datoteku", + "enterNewFileName": "Unesite novi naziv datoteke", + + // 翻译模块 - 翻译详情 + "originalRecord": "Originalni zapis", + "recordSummary": "Sažetak zapisa", + "clickToGenerateSummary": + "Kliknite na dugme ispod da biste generisali sažetak sesije", + "summaryContent": "Sadržaj sažetka", + "copied": "Kopirano", + "summaryCopiledToClipboard": "Sažetak je kopiran u međuspremnik", + "extractSummary": "Izdvoji sažetak", + "summaryGenerated": "Sažetak je generisan", + "generating": "Generisanje...", + "regenerate": "Ponovo generiši", + "summaryTimeoutMessage": + "Isteklo je vreme za generisanje sažetka, možda zbog problema sa mrežom ili zauzetosti servera.", + "deleteTranslationRecord": "Obriši zapis prevođenja", + "deleteTranslationConfirm": + "Da li ste sigurni da želite da obrišete ovaj zapis prevođenja? Ova radnja se ne može opozvati.", + "originalText": "Originalni tekst", + "translatedText": "Prevedeni tekst", + "sessionSummary": "Sažetak sesije", + "cannotShare": "Nije moguće deliti", + "generateSummaryFirst": "Prvo generišite sažetak", + "translationSessionRecord": "Zapis sesije prevođenja", + + // 个人资料模块 "editProfile": "Uredi lične podatke", "avatar": "Avatar", "nickname": "Nadimak", @@ -932,8 +1092,6 @@ const Map srRS = { 'Da li ste sigurni da želite trajno da obrišete svoj nalog? Ova radnja se ne može opozvati', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'Neuspešna mrežna veza, proverite podešavanja mreže i pokušajte ponovo', 'serverTemporarilyUnavailable': @@ -950,10 +1108,6 @@ const Map srRS = { 'Neuspešna mrežna veza, proverite podešavanja mreže', 'serverInternalErrorRetryLater': 'Interna greška na serveru, pokušajte ponovo kasnije', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Neuspešna kompresija slike', 'avatarUpdateFailed': 'Neuspešno ažuriranje avatara', 'usernameCannotBeEmpty': 'Korisničko ime ne može biti prazno', @@ -964,8 +1118,6 @@ const Map srRS = { 'logoutFailedRetry': 'Neuspešno odjavljivanje, pokušajte ponovo', 'accountPermanentlyDeleted': 'Nalog je trajno obrisan', 'deleteAccountFailedRetry': 'Neuspešno brisanje naloga, pokušajte ponovo', - - // 账号服务相关 'clearUserDataFailed': 'Neuspešno brisanje korisničkih podataka', // 清理用户数据失败 'deleteUserDataFailed': 'Neuspešno brisanje korisničkih podataka', // 删除用户数据失败 'thirdPartyLogoutSuccess': @@ -982,7 +1134,12 @@ const Map srRS = { 'accountServiceInitialized': 'AccountService je inicijalizovan', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': + 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', 'getPermissionStatusFailed': 'Neuspešno dobijanje statusa dozvole', 'communicationPermissions': 'Dozvole za komunikaciju', 'bluetoothPermissions': 'Bluetooth Permissions', @@ -995,7 +1152,6 @@ const Map srRS = { 'phone': 'Telefon', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'Pisanje u kalendar', @@ -1051,8 +1207,6 @@ const Map srRS = { 'permanentDenialText': 'Trajno ste odbili dozvolu za {permission}, idite u podešavanja aplikacije da biste je omogućili', 'goToSettings': 'Idi na podešavanja', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': @@ -1077,7 +1231,6 @@ const Map srRS = { 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', @@ -1087,8 +1240,6 @@ const Map srRS = { '检测到您已永久拒绝录音权限。如需继续使用此功能,请前往应用设置中手动开启麦克风权限。', 'storagePermissionPermanentDenial': '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - //permission_util.dart 'permissionUtilNeed': 'Need ', 'permissionUtilPermission': ' Permission', 'permissionUtilRestricted': ' Permission Restricted', @@ -1096,7 +1247,20 @@ const Map srRS = { 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigacija u toku', + 'native.notification.navigation.keepRunning': 'Navigacija, držite aplikaciju pokrenutom', + 'native.notification.bleAgent.running': 'Glasovni asistent radi', + 'native.notification.audioRecording.recording': 'Snimanje zvuka, dodirnite za povratak u aplikaciju', + 'native.notification.music.waiting': 'Čekanje na reprodukciju', + 'native.notification.music.previous': 'Prethodna', + 'native.notification.music.next': 'Sledeća', + 'native.notification.music.play': 'Reprodukuj', + 'native.notification.music.pause': 'Pauza', + 'native.notification.qqMusic.playing': 'Reprodukcija muzike', + + // 版本更新 'newVersionFound': 'Pronađena nova verzija', // 版本更新对话框标题 'remindLater': 'Podseti me kasnije', // 稍后提醒按钮 'updateNow': 'Ažuriraj sada', // 立即更新按钮 @@ -1107,253 +1271,7 @@ const Map srRS = { 'updateErrorRetry': 'Došlo je do greške tokom ažuriranja, pokušajte ponovo kasnije', // 更新错误重试提示 - //国家列表 - "邮箱": "E-pošta", - "中国": "Kina", - "美国": "SAD", - "加拿大": "Kanada", - "俄罗斯": "Rusija", - "英国": "Ujedinjeno Kraljevstvo", - "德国": "Nemačka", - "意大利": "Italija", - "法国": "Francuska", - "西班牙": "Španija", - "南非": "Južna Afrika", - "沙特阿拉伯": "Saudijska Arabija", - "土耳其": "Turska", - "日本": "Japan", - "韩国": "Južna Koreja", - "新加坡": "Singapur", - "马来西亚": "Malezija", - "泰国": "Tajland", - "越南": "Vijetnam", - "印度": "Indija", - "巴基斯坦": "Pakistan", - "菲律宾": "Filipini", - "印度尼西亚": "Indonezija", - "阿联酋": "UAE", - "墨西哥": "Meksiko", - "巴西": "Brazil", - "阿根廷": "Argentina", - "澳大利亚": "Australija", - "新西兰": "Novi Zeland", - "中国香港": "Hongkong (Kina)", - "中国澳门": "Makao (Kina)", - "中国台湾": "Tajvan (Kina)", - "埃及": "Egipat", - "希腊": "Grčka", - "荷兰": "Holandija", - "比利时": "Belgija", - "匈牙利": "Mađarska", - "罗马尼亚": "Rumunija", - "瑞士": "Švajcarska", - "奥地利": "Austrija", - "丹麦": "Danska", - "瑞典": "Švedska", - "挪威": "Norveška", - "波兰": "Poljska", - "秘鲁": "Peru", - "智利": "Čile", - "哥伦比亚": "Kolumbija", - "委内瑞拉": "Venecuela", - "葡萄牙": "Portugalija", - "卢森堡": "Luksemburg", - "爱尔兰": "Irska", - "冰岛": "Island", - "阿尔巴尼亚": "Albanija", - "马耳他": "Malta", - "塞浦路斯": "Kipar", - "芬兰": "Finska", - "保加利亚": "Bugarska", - "立陶宛": "Litvanija", - "拉脱维亚": "Letonija", - "爱沙尼亚": "Estonija", - "乌克兰": "Ukrajina", - "塞尔维亚": "Srbija", - "克罗地亚": "Hrvatska", - "斯洛文尼亚": "Slovenija", - "捷克": "Češka", - "斯洛伐克": "Slovačka", - "危地马拉": "Gvatemala", - "萨尔瓦多": "Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nikaragva", - "哥斯达黎加": "Kostarika", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolivija", - "厄瓜多尔": "Ekvador", - "巴拉圭": "Paragvaj", - "乌拉圭": "Urugvaj", - "摩洛哥": "Maroko", - "阿尔及利亚": "Alžir", - "突尼斯": "Tunis", - "尼日利亚": "Nigerija", - "加纳": "Gana", - "埃塞俄比亚": "Etiopija", - "肯尼亚": "Kenija", - "坦桑尼亚": "Tanzanija", - "乌干达": "Uganda", - "孟加拉国": "Bangladeš", - "以色列": "Izrael", - "黎巴嫩": "Liban", - "约旦": "Jordan", - "伊拉克": "Irak", - "科威特": "Kuvajt", - "巴林": "Bahrein", - "卡塔尔": "Katar", - "阿曼": "Oman", - "阿富汗": "Avganistan", - "斯里兰卡": "Šri Lanka", - "缅甸": "Mijanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongolija", - "柬埔寨": "Kambodža", - "老挝": "Laos", - "文莱": "Brunej", - "东帝汶": "Istočni Timor", - "斐济": "Fidži", - "所罗门群岛": "Solomonska Ostrva", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Istorija prevođenja", - "enableRecording": "Omogući snimanje", - "viewAudioFiles": "Prikaži audio datoteke", - "headsetUser": "Korisnik slušalica", - "phoneUser": "Korisnik telefona", - "selectSourceLanguage": "Izaberi izvorni jezik", - "selectTargetLanguage": "Izaberi ciljni jezik", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Nema istorije", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Obriši istoriju", - "clearHistoryConfirm": - "Da li ste sigurni da želite da obrišete celu istoriju prevođenja? Ova radnja se ne može opozvati.", - "unknownLanguage": "Nepoznat jezik", - "deleteSessionRecord": "Obriši zapis sesije", - "deleteSessionConfirm": - "Da li ste sigurni da želite da obrišete sve zapise prevođenja za ovu sesiju? Ova radnja se ne može opozvati.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Prevedi audio datoteke", - "noAudioFiles": "Nema audio datoteka", - "calculating": "Izračunavanje...", - "playing": "Reprodukcija...", - "paused": "Pauzirano", - "clickToPlay": "Kliknite da biste reprodukovali", - "rename": "Preimenuj", - "smartTranscription": "Pametna transkripcija", - "renameAudioFile": "Preimenuj audio datoteku", - "enterNewFileName": "Unesite novi naziv datoteke", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Originalni zapis", - "recordSummary": "Sažetak zapisa", - "clickToGenerateSummary": - "Kliknite na dugme ispod da biste generisali sažetak sesije", - "summaryContent": "Sadržaj sažetka", - "copied": "Kopirano", - "summaryCopiledToClipboard": "Sažetak je kopiran u međuspremnik", - "extractSummary": "Izdvoji sažetak", - "summaryGenerated": "Sažetak je generisan", - "generating": "Generisanje...", - "regenerate": "Ponovo generiši", - "summaryTimeoutMessage": - "Isteklo je vreme za generisanje sažetka, možda zbog problema sa mrežom ili zauzetosti servera.", - "deleteTranslationRecord": "Obriši zapis prevođenja", - "deleteTranslationConfirm": - "Da li ste sigurni da želite da obrišete ovaj zapis prevođenja? Ova radnja se ne može opozvati.", - "originalText": "Originalni tekst", - "translatedText": "Prevedeni tekst", - "sessionSummary": "Sažetak sesije", - "cannotShare": "Nije moguće deliti", - "generateSummaryFirst": "Prvo generišite sažetak", - "translationSessionRecord": "Zapis sesije prevođenja", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Uparivanje uređaja", "connectYourDeepSoundHeadset": "Povežite svoje Voitrans slušalice", "bind": "Poveži", @@ -1362,14 +1280,11 @@ const Map srRS = { "autoInputCode": "Automatski unos koda", "skipBinding": "Preskoči povezivanje", "rescan": "Ponovo skeniraj", - "verifyingDevice": "Verifikacija uređaja...", "confirmBinding": "Potvrdi povezivanje", "associatingDevice": "Povezivanje uređaja...", "goToBluetoothSettings": "Idite na Bluetooth podešavanja", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Spremno za uparivanje", "preparingPairingEnvironment": "Priprema okruženja za uparivanje...", "connectDeepSoundViaSystemBluetooth": @@ -1379,8 +1294,6 @@ const Map srRS = { "waitingCompletePairing": "Molimo sačekajte, uparivanje se završava...", "pairingSuccessRedirecting": "Uparivanje uspešno! Preusmeravanje na početnu stranicu...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Uverite se da ste povezani sa Voitrans uređajem", "deviceAlreadyBoundToOtherAccount": @@ -1392,19 +1305,12 @@ const Map srRS = { "authorizationFailedCheckCode": "Neuspešna autorizacija, proverite da li je autorizacioni kod tačan", "pairingFailedRetry": "Neuspešno uparivanje, pokušajte ponovo", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Omogućite Bluetooth', 'deviceDisconnected': 'Uređaj je isključen', 'readyToStartPairing': 'Spremno za početak uparivanja', 'checkingEnvironment': 'Provera okruženja...', 'ensureHeadsetOnAndPairingMode': 'Uverite se da su slušalice uključene i u režimu uparivanja', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Uspostavljanje bezbedne veze...', 'needManualBindingAuthCode': 'Potreban je kod za autorizaciju ručnog povezivanja...', @@ -1426,8 +1332,6 @@ const Map srRS = { 'bleConnectionFailed': 'Neuspešna BLE veza', 'deviceAuthorizationFailedCheckCode': 'Neuspešna autorizacija uređaja, proverite autorizacioni kod', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1440,7 +1344,18 @@ const Map srRS = { 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Povratne informacije korisnika", 'feedbackInfo': 'Dajte povratne informacije ili predloge', 'feedbackDescription': @@ -1483,7 +1398,7 @@ const Map srRS = { "removeEarbudsEnsureBattery": "Izvadite obe slušalice i uverite se da je baterija obe iznad 20%", - // 音乐列表页面 + // 音乐模块 "noMusic": "Nema muzike", // 暂无音乐 "noPlayingMusic": "Nema muzike koja se reprodukuje", // 暂无播放音乐 "unknownSong": "Nepoznata pesma", // 未知歌曲 @@ -1531,22 +1446,122 @@ const Map srRS = { "波斯语": "Persijski", "斯瓦希里语": "Svahili", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - "Insufficient balance, please go to the corresponding recharge page to recharge.", - "recharge": "Go to Recharge", - // 会员到期提示 - "aiMemberExpiredDesc": - "AI membership expired, please go to the membership recharge page to renew.", + // 国家列表 + "邮箱": "E-pošta", + "中国": "Kina", + "美国": "SAD", + "加拿大": "Kanada", + "俄罗斯": "Rusija", + "英国": "Ujedinjeno Kraljevstvo", + "德国": "Nemačka", + "意大利": "Italija", + "法国": "Francuska", + "西班牙": "Španija", + "南非": "Južna Afrika", + "沙特阿拉伯": "Saudijska Arabija", + "土耳其": "Turska", + "日本": "Japan", + "韩国": "Južna Koreja", + "新加坡": "Singapur", + "马来西亚": "Malezija", + "泰国": "Tajland", + "越南": "Vijetnam", + "印度": "Indija", + "巴基斯坦": "Pakistan", + "菲律宾": "Filipini", + "印度尼西亚": "Indonezija", + "阿联酋": "UAE", + "墨西哥": "Meksiko", + "巴西": "Brazil", + "阿根廷": "Argentina", + "澳大利亚": "Australija", + "新西兰": "Novi Zeland", + "中国香港": "Hongkong (Kina)", + "中国澳门": "Makao (Kina)", + "中国台湾": "Tajvan (Kina)", + "埃及": "Egipat", + "希腊": "Grčka", + "荷兰": "Holandija", + "比利时": "Belgija", + "匈牙利": "Mađarska", + "罗马尼亚": "Rumunija", + "瑞士": "Švajcarska", + "奥地利": "Austrija", + "丹麦": "Danska", + "瑞典": "Švedska", + "挪威": "Norveška", + "波兰": "Poljska", + "秘鲁": "Peru", + "智利": "Čile", + "哥伦比亚": "Kolumbija", + "委内瑞拉": "Venecuela", + "葡萄牙": "Portugalija", + "卢森堡": "Luksemburg", + "爱尔兰": "Irska", + "冰岛": "Island", + "阿尔巴尼亚": "Albanija", + "马耳他": "Malta", + "塞浦路斯": "Kipar", + "芬兰": "Finska", + "保加利亚": "Bugarska", + "立陶宛": "Litvanija", + "拉脱维亚": "Letonija", + "爱沙尼亚": "Estonija", + "乌克兰": "Ukrajina", + "塞尔维亚": "Srbija", + "克罗地亚": "Hrvatska", + "斯洛文尼亚": "Slovenija", + "捷克": "Češka", + "斯洛伐克": "Slovačka", + "危地马拉": "Gvatemala", + "萨尔瓦多": "Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nikaragva", + "哥斯达黎加": "Kostarika", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Bolivija", + "厄瓜多尔": "Ekvador", + "巴拉圭": "Paragvaj", + "乌拉圭": "Urugvaj", + "摩洛哥": "Maroko", + "阿尔及利亚": "Alžir", + "突尼斯": "Tunis", + "尼日利亚": "Nigerija", + "加纳": "Gana", + "埃塞俄比亚": "Etiopija", + "肯尼亚": "Kenija", + "坦桑尼亚": "Tanzanija", + "乌干达": "Uganda", + "孟加拉国": "Bangladeš", + "以色列": "Izrael", + "黎巴嫩": "Liban", + "约旦": "Jordan", + "伊拉克": "Irak", + "科威特": "Kuvajt", + "巴林": "Bahrein", + "卡塔尔": "Katar", + "阿曼": "Oman", + "阿富汗": "Avganistan", + "斯里兰卡": "Šri Lanka", + "缅甸": "Mijanmar", + "尼泊尔": "Nepal", + "蒙古": "Mongolija", + "柬埔寨": "Kambodža", + "老挝": "Laos", + "文莱": "Brunej", + "东帝汶": "Istočni Timor", + "斐济": "Fidži", + "所罗门群岛": "Solomonska Ostrva", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/sv_se.dart b/lib/core/translations/language/sv_se.dart index 1b2b34428..4df7005a5 100644 --- a/lib/core/translations/language/sv_se.dart +++ b/lib/core/translations/language/sv_se.dart @@ -1,4 +1,5 @@ const Map svSE = { + // 通用 'continue': 'Fortsätt', 'confirm': 'Bekräfta', @@ -18,6 +19,11 @@ const Map svSE = { "unknownError": "Okänt fel", "asrConnectionFailed": "Anslutning till tjänsten för röstigenkänning misslyckades. Kontrollera nätverket eller försök igen senare.", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "Anslut världen, bortom ljudet", @@ -28,7 +34,7 @@ const Map svSE = { "explore": "Utforska", "settings": "Inställningar", - // 语言 + // 语言列表 "followingSystem": "Följ systemet", "chinese": "Kinesiska", "english": "Engelska", @@ -72,7 +78,7 @@ const Map svSE = { "arabic": "Arabiska", "persian": "Persiska", - // 登录页 + // 登录模块 "welcome": "Välkommen", "loginTips": "Logga in eller registrera dig med ditt telefonnummer eller din e-postadress", "accountNumber": "Telefonnummer eller e-post", @@ -99,12 +105,8 @@ const Map svSE = { "resendVerificationCode": "Skicka verifieringskod igen", "login": "Logga in", "usePasswordLogin": "Logga in med lösenord", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans-deklaration", // Voitrans 声明 "welcomeToThisApp": "Välkommen till Voitrans, vänligen läs noggrant", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Godkänner inte", // 不同意 @@ -159,7 +161,7 @@ const Map svSE = { 'right': 'Höger', 'checkConnectionStatusFailed': 'Kontroll av anslutningsstatus misslyckades', -// 发现页 + // 发现页 "searchAi": "Sök AI-funktioner...", "exploreSlogan": "Smarta hörlurar, oändliga möjligheter", "exploreSlogan1": "Smart sällskap, oändliga möjligheter", @@ -182,6 +184,7 @@ const Map svSE = { "usageStats": "Användningsstatistik", "usageStatsInfo": "Visa din användningsstatistik", "scene": "Scenario", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", @@ -202,7 +205,6 @@ const Map svSE = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -219,7 +221,6 @@ const Map svSE = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - // 通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", "cleanupComplete": "Cleanup Complete", @@ -227,56 +228,114 @@ const Map svSE = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', 'remaining': 'Remaining', 'featureDescription': 'Feature Description', - // AI 功能卡片 + 'paymentSuccess': 'Betalning lyckades', + 'paymentFailed': 'Betalning misslyckades', + 'gotIt': 'Förstått', + 'paymentFailedTryAgain': 'Betalning misslyckades. Försök igen.', + 'selectPaymentMethod': 'Välj betalningsmetod', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Kunde inte skapa WeChat-order', + 'alipayOrderCreateFailed': 'Kunde inte skapa Alipay-order', + 'appleOrderCreateFailed': 'Kunde inte skapa Apple-order', + 'googleOrderCreateFailed': 'Kunde inte skapa Google-order', + 'paypalOrderCreateFailed': 'Kunde inte skapa PayPal-order', + 'paymentException': 'Betalningsundantag', + 'paymentLaunchFailed': 'Kunde inte starta betalning', + 'paymentExceptionWithError': 'Betalningsundantag: @error', + 'paymentProcessingCheckLater': 'Din order behandlas. Kontrollera igen senare.', + 'paymentResultQueryException': 'Kunde inte hämta betalningsresultat: @error', + 'orderConfirmedQuotaRefreshed': 'Order bekräftad. Din kvot har uppdaterats.', + 'paymentCompletedConfirming': 'Betalning slutförd. Bekräftar…', + 'paymentCancelled': 'Betalning avbruten', + 'paypalOpenedCompleteInBrowser': 'PayPal har öppnats. Slutför betalningen i din webbläsare.', + 'paypalOpenFailed': 'Kan inte öppna PayPal-betalningssidan', + 'paymentTestTitle': 'Betalningstest', + 'paymentTestOrderInfo': 'Testorderinformation', + 'paymentTestProductId': 'Produkt-ID', + 'paymentTestProductDescription': 'Produktbeskrivning', + 'paymentTestWechatDescription': 'WeChat Pay betalningstest', + 'paymentTestAlipayDescription': 'Alipay betalningstest', + 'paymentTestAmount': 'Belopp', + 'paymentTestSelectAmount': 'Välj testbelopp', + 'paying': 'Betalar...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Betalningsstatus', + 'errorInfoWithMessage': 'Fel: @message', + 'retest': 'Testa igen', + 'paymentTestInstructionsTitle': 'Instruktioner', + 'paymentTestInstructionsContent': '1. Välj ett testbelopp (rekommenderat: ¥0,01)\n2. Klicka på betalningsknappen för att starta\n3. Slutför betalningen i betalningsappen\n4. Gå tillbaka för att kontrollera resultatet', + 'startingWechatPayment': 'Startar WeChat Pay...', + 'startingAlipayPayment': 'Startar Alipay...', + 'wechatPaymentSuccess': 'WeChat Pay lyckades!', + 'wechatPaymentFailed': 'WeChat Pay misslyckades', + 'wechatPaymentLaunchFailed': 'Kunde inte starta WeChat Pay', + 'cannotLaunchWechatPayment': 'Kan inte starta WeChat Pay', + 'wechatPaymentException': 'WeChat Pay-undantag', + 'wechatPaymentTestCompleted': 'WeChat Pay-test slutfört', + 'alipayPaymentSuccess': 'Alipay lyckades!', + 'alipayPaymentFailed': 'Alipay misslyckades', + 'alipayPaymentLaunchFailed': 'Kunde inte starta Alipay', + 'cannotLaunchAlipayPayment': 'Kan inte starta Alipay', + 'alipayPaymentException': 'Alipay-undantag', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": "Insufficient balance, please go to the corresponding recharge page to recharge.", + "recharge": "Go to Recharge", + "aiMemberExpiredDesc": "AI membership expired, please go to the membership recharge page to renew.", + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 + 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', + 'aiHeaderDesc2': 'Suitable for agent Q&A, summarization, analysis, and task execution.', + 'musicSearchPlaybackControl': 'Music library search and playback control', + 'smartPlaylistAndSimilarRecommendations': 'Smart playlist and similar song recommendations', + 'routePlanningAndCongestionAvoidance': 'Route planning and congestion avoidance', + 'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings', + 'realTimeWeatherForecast': 'Real-time weather and forecast', + 'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders', + 'poiSearchFoodGasParking': 'POI search: dining / gas / parking', + 'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing', + 'hotNewsAndTopicOverview': 'Hot news and topic overview', + 'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points', + 'helpCallAndSMS': 'Help with calls and SMS', + 'templatedMessagesAndScheduleReminders': 'Template messages and schedule reminders', + 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', + + // 商品模块 - 翻译商品页 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 'sceneLexicon': 'Scenario Glossary', 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 + 'transHeaderDesc1': 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', + 'translateZhEn': 'Chinese-English translation', + 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', + 'multiLangTextTranslation': 'Multilingual text translation', + 'termOptimizationContextPreserve': 'Terminology optimization and context preservation', + 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', + 'personalVocabularyMemory': 'Personal vocabulary memory', + 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', + 'colorHighContrast': 'High color contrast', + 'transDisclaimer': 'Translation performance depends on microphone, network latency, and ambient noise.', + + // 商品模块 - 会议商品页 'meetingRecording': 'Meeting Recording', 'transcriptionAndSummary': 'Transcription & Summary', 'keywordSearch': 'Keyword Search', 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 'meetingHeaderDesc1': 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', 'meetingHeaderDesc2': 'Suitable for business meetings, class notes, and interview minutes.', 'meetingAutoRecording': 'Auto recording and segmentation', @@ -289,37 +348,7 @@ const Map svSE = { 'meetingMultiPlatformShare': 'Share across platforms', 'meetingDisclaimer': 'Use in quiet environments; performance depends on microphone and network.', - // 同传/翻译商品页描述 - 'transHeaderDesc1': 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 - 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', - 'aiHeaderDesc2': 'Suitable for agent Q&A, summarization, analysis, and task execution.', - 'musicSearchPlaybackControl': 'Music library search and playback control', - 'smartPlaylistAndSimilarRecommendations': 'Smart playlist and similar song recommendations', - 'routePlanningAndCongestionAvoidance': 'Route planning and congestion avoidance', - 'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings', - 'realTimeWeatherForecast': 'Real-time weather and forecast', - 'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders', - 'poiSearchFoodGasParking': 'POI search: dining / gas / parking', - 'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing', - 'hotNewsAndTopicOverview': 'Hot news and topic overview', - 'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points', - 'helpCallAndSMS': 'Help with calls and SMS', - 'templatedMessagesAndScheduleReminders': 'Template messages and schedule reminders', - 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - - // 会员商品页 + // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', 'higherQuota': 'Higher usage quota', 'lowerUnitPrice': 'Lower unit price', @@ -334,7 +363,32 @@ const Map svSE = { 'crossDeviceSync': 'Cross-device sync', 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Translation Basic 100', + 'trans_002_name': 'Translation Basic 500', + 'trans_003_name': 'Translation Basic 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': 'Includes 100 translations (voice/text).', + 'trans_002_desc': 'Includes 500 translations (voice/text).', + 'trans_003_desc': 'Includes 1000 translations (voice/text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': 'Hoppa över', 'next': 'Next', 'sayLilyHint': 'Say "Lily Lily" to the mic', @@ -345,7 +399,6 @@ const Map svSE = { 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', 'confirmInput': 'Confirm Input', 'guideClickSendPrefix': 'Tap send, ', - // AI 引导步骤 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', 'guideWeatherInput': 'What’s the weather today?', 'guideWeatherSend': 'Lily will report the weather in real time', @@ -371,7 +424,7 @@ const Map svSE = { 'guideSmsSend': 'Lily will send the message', 'guideSmsEnd': 'Message sent—voice control is convenient', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Starta möte", 'edit': 'Redigera', 'delete': 'Ta bort', @@ -383,8 +436,6 @@ const Map svSE = { 'recordingDetails': 'Inspelningsdetaljer', 'aiSummary': 'AI-sammanfattning', 'meetingTranscript': 'Mötesutskrift', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -437,7 +488,6 @@ const Map svSE = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -446,6 +496,94 @@ const Map svSE = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': 'Skapa', + 'templateDetails': 'Malldetaljer', + 'tag': 'Tagg', + 'description': 'Beskrivning', + 'template': 'Mall', + 'deleteTemplate': 'Ta bort mall', + 'deleteTemplateConfirm': 'Är du säker på att du vill ta bort denna mall?', + 'editTemplate': 'Redigera mall', + 'createTemplate': 'Skapa mall', + 'name': 'Namn', + 'templateContentHint': 'Vänligen ange mallinnehåll! Tips: Klicka på AI-knappen ovan för att snabbt generera mallinnehåll baserat på namn och beskrivning du angett', + 'inputNameHint': 'Vänligen ange namn', + 'inputDescHint': 'Vänligen ange beskrivning', + 'custom': 'Anpassad', + 'pleaseEnter': 'Vänligen ange', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Spara tankekarta', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'Exportera', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Använd på alla stycken för denna talare', + 'summaryWillBeUpdatedAutomatically': 'Sammanfattningen uppdateras automatiskt baserat på mallen', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -464,7 +602,7 @@ const Map svSE = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -490,8 +628,6 @@ const Map svSE = { 'aiVoiceEnhancementDesc': 'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.', 'audioImportDesc': 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -516,101 +652,26 @@ const Map svSE = { 'validityNote': 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Använd på alla stycken för denna talare', - 'summaryWillBeUpdatedAutomatically': 'Sammanfattningen uppdateras automatiskt baserat på mallen', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': 'Summary speakers will be updated automatically', - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': 'Analysen misslyckades, försök igen senare', + 'transcriptionFailed': 'Transkribering misslyckades, försök igen senare', + 'summaryFailed': 'Sammanfattning misslyckades, försök igen senare', + 'summaryFailedShort': 'Sammanfattning misslyckades', + 'transcriptionFailedShort': 'Transkribering misslyckades', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Ljudspelaren är inte redo, vänligen vänta', + 'playFailed': 'Uppspelning misslyckades', + 'audioFileNotFound': 'Ljudfilen hittades inte', + 'fetchingAudio': 'Hämtar ljud från molnet...', + 'playerLoadFailed': 'Ljudspelaren kunde inte laddas', // 设置页 "systemSettings": "Systeminställningar", @@ -659,25 +720,14 @@ const Map svSE = { "bleHeadsetFirmwareUpgrade": "Uppgradera firmware-version för BLE-hörlurar", "deviceManagement": "Enhetshantering", "manageConnectedDevices": "Hantera anslutna Bluetooth-enheter", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Du har redan den senaste versionen {version}', 'checkUpdateFailed': 'Kontroll av uppdatering misslyckades', 'networkErrorRetry': 'Nätverksfel, försök igen senare', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Realtids röstchatt", "realtimeVoiceChatInfo": "Upplev intelligent röstinteraktionsfunktion (funktionsförhandsvisning)", "loading": "Laddar...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -692,8 +742,7 @@ const Map svSE = { "confirmUnbindMessage": "Are you sure you want to unbind device \\", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Rensa chatthistorik", "online": "Online", @@ -723,8 +772,9 @@ const Map svSE = { "swipeUpForMore": "Svep upp för mer", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': 'När aktiverad: AI:n avbryts inte av din röst medan den talar och kan bara hantera en samtalsrunda åt gången. För att starta en ny runda, säg bara väckordet.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -736,7 +786,7 @@ const Map svSE = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': '你好!我是**Lily**,我能帮你:\n\n' '• 回答问题和提供信息\n\n' '• 实时语音翻译\n\n' @@ -752,18 +802,17 @@ const Map svSE = { 'startVoiceInput': 'Starta röstinmatning', 'startPhoneCallMode': 'Starta samtalsläge, starta röstinmatning', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Skriv ditt meddelande här...', // 全屏编辑器输入提示 'characterCount': '{count} tecken', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopiera', 'copySuccess': 'Kopierat', 'report': 'Anmäl', 'submitSuccess': 'Inskickat', 'submitFailed': 'Inskickning misslyckades', 'reportSubmitted': 'Anmälan inskickad, vi behandlar den så snart som möjligt', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Skadligt/Osäkert', 'pornographicVulgar': 'Pornografiskt/Vulgärt', 'misleadingAttack': 'Vilseledande/Attack', @@ -772,17 +821,14 @@ const Map svSE = { 'copyrightViolation': 'Inkräktar på min upphovsrätt, anseende, etc.', 'other': 'Annat', 'reportDescriptionHint': 'Vi vill veta varför du anmäler, du kan beskriva problemet du stött på.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Genererad av AI', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'Här är några rekommenderade låtar:', 'playList': 'Spellista', 'moreMusic': 'Mer musik', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'timmar', // 小时单位 @@ -797,7 +843,7 @@ const Map svSE = { "bicycling": "Cykling", "tsransit": "Kollektivtrafik", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Söker väderinformation:', 'highest': 'Högsta', 'lowest': 'Lägsta', @@ -818,18 +864,8 @@ const Map svSE = { "friday": "Fre", "saturday": "Lör", "sunday": "Sön", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Soligt", "partlyCloudy": "Delvis molnigt", "partlySunny": "Växlande molnighet", @@ -850,7 +886,119 @@ const Map svSE = { "haze": "Dis", "strongWind": "Stark vind", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "Översättningshistorik", + "enableRecording": "Aktivera inspelning", + "viewAudioFiles": "Visa ljudfiler", + "headsetUser": "Hörlursanvändare", + "phoneUser": "Telefonanvändare", + "selectSourceLanguage": "Välj källspråk", + "selectTargetLanguage": "Välj målspråk", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Ingen historik ännu", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "Rensa historik", + "clearHistoryConfirm": "Är du säker på att du vill rensa all översättningshistorik? Denna åtgärd kan inte ångras.", + "unknownLanguage": "Okänt språk", + "deleteSessionRecord": "Ta bort sessionsinspelning", + "deleteSessionConfirm": "Är du säker på att du vill ta bort alla översättningsinspelningar för denna session? Denna åtgärd kan inte ångras.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Översätt ljudfiler", + "noAudioFiles": "Inga ljudfiler ännu", + "calculating": "Beräknar...", + "playing": "Spelar upp...", + "paused": "Pausad", + "clickToPlay": "Klicka för att spela", + "rename": "Byt namn", + "smartTranscription": "Smart transkription", + "renameAudioFile": "Byt namn på ljudfil", + "enterNewFileName": "Ange ett nytt filnamn", + + // 翻译模块 - 翻译详情 + "originalRecord": "Originalinspelning", + "recordSummary": "Inspelningssammanfattning", + "clickToGenerateSummary": "Klicka på knappen nedan för att generera en sessionssammanfattning", + "summaryContent": "Sammanfattningsinnehåll", + "copied": "Kopierad", + "summaryCopiledToClipboard": "Sammanfattning kopierad till urklipp", + "extractSummary": "Extrahera sammanfattning", + "summaryGenerated": "Sammanfattning genererad", + "generating": "Genererar...", + "regenerate": "Generera igen", + "summaryTimeoutMessage": "Begäran om att generera sammanfattning nådde tidsgräns, det kan bero på nätverksproblem eller upptagen server.", + "deleteTranslationRecord": "Ta bort översättningsinspelning", + "deleteTranslationConfirm": "Är du säker på att du vill ta bort denna översättningsinspelning? Denna åtgärd kan inte ångras.", + "originalText": "Originaltext", + "translatedText": "Översatt text", + "sessionSummary": "Sessionssammanfattning", + "cannotShare": "Kan inte dela", + "generateSummaryFirst": "Generera en sammanfattning först", + "translationSessionRecord": "Översättningssessionsinspelning", + + // 个人资料模块 "editProfile": "Redigera personlig information", "avatar": "Avatar", "nickname": "Smeknamn", @@ -865,8 +1013,6 @@ const Map svSE = { 'deleteAccountTips': 'Är du säker på att du vill ta bort ditt konto permanent? Denna åtgärd kan inte ångras', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'Nätverksanslutning misslyckades, kontrollera dina nätverksinställningar och försök igen', 'serverTemporarilyUnavailable': 'Servern är tillfälligt otillgänglig, försök igen senare', 'loginExpiredPleaseRelogin': 'Din session har gått ut, vänligen logga in igen', @@ -878,10 +1024,6 @@ const Map svSE = { 'serverError': 'Serverfel', 'networkConnectionFailedCheckSettings': 'Nätverksanslutning misslyckades, kontrollera dina nätverksinställningar', 'serverInternalErrorRetryLater': 'Internt serverfel, försök igen senare', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Bildkomprimering misslyckades', 'avatarUpdateFailed': 'Avataruppdatering misslyckades', 'usernameCannotBeEmpty': 'Användarnamn kan inte vara tomt', @@ -892,8 +1034,6 @@ const Map svSE = { 'logoutFailedRetry': 'Utloggning misslyckades, försök igen', 'accountPermanentlyDeleted': 'Kontot har tagits bort permanent', 'deleteAccountFailedRetry': 'Borttagning av konto misslyckades, försök igen', - - // 账号服务相关 'clearUserDataFailed': 'Rensning av användardata misslyckades', // 清理用户数据失败 'deleteUserDataFailed': 'Borttagning av användardata misslyckades', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'Utloggning från tredje part lyckades', // 第三方登录退出成功 @@ -904,7 +1044,11 @@ const Map svSE = { 'allUserDataClearSuccess': 'All användardata har rensats', // 所有用户数据清理成功 'accountServiceInitialized': 'Kontotjänsten har initierats', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', 'getPermissionStatusFailed': 'Hämtning av behörighetsstatus misslyckades', 'communicationPermissions': 'Kommunikationsbehörigheter', 'bluetoothPermissions': 'Bluetooth Permissions', @@ -917,7 +1061,6 @@ const Map svSE = { 'phone': 'Telefon', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'Skriv till kalender', @@ -956,8 +1099,6 @@ const Map svSE = { 'appNeedsPermissionForFullFunction': 'Appen behöver denna behörighet för full funktionalitet', 'permanentDenialText': 'Du har permanent nekat {permission}-behörighet, vänligen gå till appinställningarna för att aktivera den', 'goToSettings': 'Gå till inställningar', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', @@ -972,7 +1113,6 @@ const Map svSE = { 'locationPermissionExplanation': 'Location permission is required to get current location.', 'notificationPermissionPermanentDenial': 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', 'storagePermissionExplanation': 'We need storage permission so you can select and upload audio files.', @@ -980,15 +1120,26 @@ const Map svSE = { '检测到您已永久拒绝录音权限。如需继续使用此功能,请前往应用设置中手动开启麦克风权限。', 'storagePermissionPermanentDenial': '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - //permission_util.dart 'permissionUtilNeed': 'Need ', 'permissionUtilPermission': ' Permission', 'permissionUtilRestricted': ' Permission Restricted', 'permissionUtilRestrictedMessage': 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigering pågår', + 'native.notification.navigation.keepRunning': 'Navigerar, håll appen igång', + 'native.notification.bleAgent.running': 'Röstassistenten körs', + 'native.notification.audioRecording.recording': 'Spelar in ljud, tryck för att gå tillbaka till appen', + 'native.notification.music.waiting': 'Väntar på uppspelning', + 'native.notification.music.previous': 'Föregående', + 'native.notification.music.next': 'Nästa', + 'native.notification.music.play': 'Spela', + 'native.notification.music.pause': 'Pausa', + 'native.notification.qqMusic.playing': 'Spelar musik', + + // 版本更新 'newVersionFound': 'Ny version hittad', // 版本更新对话框标题 'remindLater': 'Påminn mig senare', // 稍后提醒按钮 'updateNow': 'Uppdatera nu', // 立即更新按钮 @@ -997,242 +1148,7 @@ const Map svSE = { 'cannotOpenAppStore': 'Kan inte öppna appbutiken, vänligen gå till appbutiken manuellt för att uppdatera', // 无法打开应用商店提示 'updateErrorRetry': 'Ett fel uppstod under uppdateringen, försök igen senare', // 更新错误重试提示 - //国家列表 - "邮箱": "E-post", - "中国": "Kina", - "美国": "USA", - "加拿大": "Kanada", - "俄罗斯": "Ryssland", - "英国": "Storbritannien", - "德国": "Tyskland", - "意大利": "Italien", - "法国": "Frankrike", - "西班牙": "Spanien", - "南非": "Sydafrika", - "沙特阿拉伯": "Saudiarabien", - "土耳其": "Turkiet", - "日本": "Japan", - "韩国": "Sydkorea", - "新加坡": "Singapore", - "马来西亚": "Malaysia", - "泰国": "Thailand", - "越南": "Vietnam", - "印度": "Indien", - "巴基斯坦": "Pakistan", - "菲律宾": "Filippinerna", - "印度尼西亚": "Indonesien", - "阿联酋": "Förenade Arabemiraten", - "墨西哥": "Mexiko", - "巴西": "Brasilien", - "阿根廷": "Argentina", - "澳大利亚": "Australien", - "新西兰": "Nya Zeeland", - "中国香港": "Hongkong (Kina)", - "中国澳门": "Macao (Kina)", - "中国台湾": "Taiwan (Kina)", - "埃及": "Egypten", - "希腊": "Grekland", - "荷兰": "Nederländerna", - "比利时": "Belgien", - "匈牙利": "Ungern", - "罗马尼亚": "Rumänien", - "瑞士": "Schweiz", - "奥地利": "Österrike", - "丹麦": "Danmark", - "瑞典": "Sverige", - "挪威": "Norge", - "波兰": "Polen", - "秘鲁": "Peru", - "智利": "Chile", - "哥伦比亚": "Colombia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugal", - "卢森堡": "Luxemburg", - "爱尔兰": "Irland", - "冰岛": "Island", - "阿尔巴尼亚": "Albanien", - "马耳他": "Malta", - "塞浦路斯": "Cypern", - "芬兰": "Finland", - "保加利亚": "Bulgarien", - "立陶宛": "Litauen", - "拉脱维亚": "Lettland", - "爱沙尼亚": "Estland", - "乌克兰": "Ukraina", - "塞尔维亚": "Serbien", - "克罗地亚": "Kroatien", - "斯洛文尼亚": "Slovenien", - "捷克": "Tjeckien", - "斯洛伐克": "Slovakien", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolivia", - "厄瓜多尔": "Ecuador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Marocko", - "阿尔及利亚": "Algeriet", - "突尼斯": "Tunisien", - "尼日利亚": "Nigeria", - "加纳": "Ghana", - "埃塞俄比亚": "Etiopien", - "肯尼亚": "Kenya", - "坦桑尼亚": "Tanzania", - "乌干达": "Uganda", - "孟加拉国": "Bangladesh", - "以色列": "Israel", - "黎巴嫩": "Libanon", - "约旦": "Jordanien", - "伊拉克": "Irak", - "科威特": "Kuwait", - "巴林": "Bahrain", - "卡塔尔": "Qatar", - "阿曼": "Oman", - "阿富汗": "Afghanistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongoliet", - "柬埔寨": "Kambodja", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "Östtimor", - "斐济": "Fiji", - "所罗门群岛": "Salomonöarna", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Översättningshistorik", - "enableRecording": "Aktivera inspelning", - "viewAudioFiles": "Visa ljudfiler", - "headsetUser": "Hörlursanvändare", - "phoneUser": "Telefonanvändare", - "selectSourceLanguage": "Välj källspråk", - "selectTargetLanguage": "Välj målspråk", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Ingen historik ännu", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Rensa historik", - "clearHistoryConfirm": "Är du säker på att du vill rensa all översättningshistorik? Denna åtgärd kan inte ångras.", - "unknownLanguage": "Okänt språk", - "deleteSessionRecord": "Ta bort sessionsinspelning", - "deleteSessionConfirm": "Är du säker på att du vill ta bort alla översättningsinspelningar för denna session? Denna åtgärd kan inte ångras.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Översätt ljudfiler", - "noAudioFiles": "Inga ljudfiler ännu", - "calculating": "Beräknar...", - "playing": "Spelar upp...", - "paused": "Pausad", - "clickToPlay": "Klicka för att spela", - "rename": "Byt namn", - "smartTranscription": "Smart transkription", - "renameAudioFile": "Byt namn på ljudfil", - "enterNewFileName": "Ange ett nytt filnamn", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Originalinspelning", - "recordSummary": "Inspelningssammanfattning", - "clickToGenerateSummary": "Klicka på knappen nedan för att generera en sessionssammanfattning", - "summaryContent": "Sammanfattningsinnehåll", - "copied": "Kopierad", - "summaryCopiledToClipboard": "Sammanfattning kopierad till urklipp", - "extractSummary": "Extrahera sammanfattning", - "summaryGenerated": "Sammanfattning genererad", - "generating": "Genererar...", - "regenerate": "Generera igen", - "summaryTimeoutMessage": "Begäran om att generera sammanfattning nådde tidsgräns, det kan bero på nätverksproblem eller upptagen server.", - "deleteTranslationRecord": "Ta bort översättningsinspelning", - "deleteTranslationConfirm": "Är du säker på att du vill ta bort denna översättningsinspelning? Denna åtgärd kan inte ångras.", - "originalText": "Originaltext", - "translatedText": "Översatt text", - "sessionSummary": "Sessionssammanfattning", - "cannotShare": "Kan inte dela", - "generateSummaryFirst": "Generera en sammanfattning först", - "translationSessionRecord": "Översättningssessionsinspelning", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Enhetsparkoppling", "connectYourDeepSoundHeadset": "Anslut dina Voitrans-hörlurar", "bind": "Bind", @@ -1241,14 +1157,11 @@ const Map svSE = { "autoInputCode": "Ange koden automatiskt", "skipBinding": "Hoppa över bindning", "rescan": "Skanna igen", - "verifyingDevice": "Verifierar enhet...", "confirmBinding": "Bekräfta bindning", "associatingDevice": "Associerar enhet...", "goToBluetoothSettings": "Gå till Bluetooth-inställningar", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Redo att parkoppla", "preparingPairingEnvironment": "Förbereder parkopplingsmiljö...", "connectDeepSoundViaSystemBluetooth": "Anslut först till Voitrans-enheten via systemets Bluetooth", @@ -1256,8 +1169,6 @@ const Map svSE = { "establishingDeviceAssociation": "Upprättar enhetsassociation...", "waitingCompletePairing": "Vänta, slutför parkoppling...", "pairingSuccessRedirecting": "Parkoppling lyckades! Omdirigerar till startsidan...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Se till att du är ansluten till en Voitrans-enhet", "deviceAlreadyBoundToOtherAccount": "Denna enhet är redan bunden till ett annat konto", "deviceAssociationFailed": "Enhetsassociation misslyckades, försök igen", @@ -1265,18 +1176,11 @@ const Map svSE = { "networkError": "Nätverksfel", "authorizationFailedCheckCode": "Auktorisering misslyckades, kontrollera att auktoriseringskoden är korrekt", "pairingFailedRetry": "Parkoppling misslyckades, försök igen", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Aktivera Bluetooth', 'deviceDisconnected': 'Enheten frånkopplad', 'readyToStartPairing': 'Redo att starta parkoppling', 'checkingEnvironment': 'Kontrollerar miljö...', 'ensureHeadsetOnAndPairingMode': 'Se till att hörlurarna är på och i parkopplingsläge', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Upprättar säker anslutning...', 'needManualBindingAuthCode': 'Manuell bindningsauktoriseringskod krävs...', 'pairingSuccessful': 'Parkoppling lyckades!', @@ -1295,8 +1199,6 @@ const Map svSE = { 'blePairingStartupFailed': 'Start av BLE-parkoppling misslyckades', 'bleConnectionFailed': 'BLE-anslutning misslyckades', 'deviceAuthorizationFailedCheckCode': 'Enhetsauktorisering misslyckades, kontrollera auktoriseringskoden', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 @@ -1305,7 +1207,18 @@ const Map svSE = { 'bluetoothGuideTip': 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Användarfeedback", 'feedbackInfo': 'Ge feedback eller förslag', 'feedbackDescription': 'Beskriv problemet du stött på eller ditt förslag', @@ -1340,7 +1253,7 @@ const Map svSE = { "updateContent": "Uppdateringsinnehåll", "removeEarbudsEnsureBattery": "Ta ut båda hörlurarna och se till att batterinivån är över 20 % på båda", - // 音乐列表页面 + // 音乐模块 "noMusic": "Ingen musik", // 暂无音乐 "noPlayingMusic": "Ingen musik spelas", // 暂无播放音乐 "unknownSong": "Okänd låt", // 未知歌曲 @@ -1388,20 +1301,122 @@ const Map svSE = { "波斯语": "Persiska", "斯瓦希里语": "Swahili", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": "Insufficient balance, please go to the corresponding recharge page to recharge.", - "recharge": "Go to Recharge", - // 会员到期提示 - "aiMemberExpiredDesc": "AI membership expired, please go to the membership recharge page to renew.", + // 国家列表 + "邮箱": "E-post", + "中国": "Kina", + "美国": "USA", + "加拿大": "Kanada", + "俄罗斯": "Ryssland", + "英国": "Storbritannien", + "德国": "Tyskland", + "意大利": "Italien", + "法国": "Frankrike", + "西班牙": "Spanien", + "南非": "Sydafrika", + "沙特阿拉伯": "Saudiarabien", + "土耳其": "Turkiet", + "日本": "Japan", + "韩国": "Sydkorea", + "新加坡": "Singapore", + "马来西亚": "Malaysia", + "泰国": "Thailand", + "越南": "Vietnam", + "印度": "Indien", + "巴基斯坦": "Pakistan", + "菲律宾": "Filippinerna", + "印度尼西亚": "Indonesien", + "阿联酋": "Förenade Arabemiraten", + "墨西哥": "Mexiko", + "巴西": "Brasilien", + "阿根廷": "Argentina", + "澳大利亚": "Australien", + "新西兰": "Nya Zeeland", + "中国香港": "Hongkong (Kina)", + "中国澳门": "Macao (Kina)", + "中国台湾": "Taiwan (Kina)", + "埃及": "Egypten", + "希腊": "Grekland", + "荷兰": "Nederländerna", + "比利时": "Belgien", + "匈牙利": "Ungern", + "罗马尼亚": "Rumänien", + "瑞士": "Schweiz", + "奥地利": "Österrike", + "丹麦": "Danmark", + "瑞典": "Sverige", + "挪威": "Norge", + "波兰": "Polen", + "秘鲁": "Peru", + "智利": "Chile", + "哥伦比亚": "Colombia", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portugal", + "卢森堡": "Luxemburg", + "爱尔兰": "Irland", + "冰岛": "Island", + "阿尔巴尼亚": "Albanien", + "马耳他": "Malta", + "塞浦路斯": "Cypern", + "芬兰": "Finland", + "保加利亚": "Bulgarien", + "立陶宛": "Litauen", + "拉脱维亚": "Lettland", + "爱沙尼亚": "Estland", + "乌克兰": "Ukraina", + "塞尔维亚": "Serbien", + "克罗地亚": "Kroatien", + "斯洛文尼亚": "Slovenien", + "捷克": "Tjeckien", + "斯洛伐克": "Slovakien", + "危地马拉": "Guatemala", + "萨尔瓦多": "El Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nicaragua", + "哥斯达黎加": "Costa Rica", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Bolivia", + "厄瓜多尔": "Ecuador", + "巴拉圭": "Paraguay", + "乌拉圭": "Uruguay", + "摩洛哥": "Marocko", + "阿尔及利亚": "Algeriet", + "突尼斯": "Tunisien", + "尼日利亚": "Nigeria", + "加纳": "Ghana", + "埃塞俄比亚": "Etiopien", + "肯尼亚": "Kenya", + "坦桑尼亚": "Tanzania", + "乌干达": "Uganda", + "孟加拉国": "Bangladesh", + "以色列": "Israel", + "黎巴嫩": "Libanon", + "约旦": "Jordanien", + "伊拉克": "Irak", + "科威特": "Kuwait", + "巴林": "Bahrain", + "卡塔尔": "Qatar", + "阿曼": "Oman", + "阿富汗": "Afghanistan", + "斯里兰卡": "Sri Lanka", + "缅甸": "Myanmar", + "尼泊尔": "Nepal", + "蒙古": "Mongoliet", + "柬埔寨": "Kambodja", + "老挝": "Laos", + "文莱": "Brunei", + "东帝汶": "Östtimor", + "斐济": "Fiji", + "所罗门群岛": "Salomonöarna", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/th_th.dart b/lib/core/translations/language/th_th.dart index 6f7679c82..3e99a65b2 100644 --- a/lib/core/translations/language/th_th.dart +++ b/lib/core/translations/language/th_th.dart @@ -1,4 +1,5 @@ const Map thTH = { + // 通用 'continue': 'ดำเนินการต่อ', 'confirm': 'ยืนยัน', @@ -18,6 +19,11 @@ const Map thTH = { "unknownError": "ข้อผิดพลาดที่ไม่รู้จัก", "asrConnectionFailed": "เชื่อมต่อกับบริการรู้จำเสียงไม่สำเร็จ กรุณาตรวจสอบเครือข่ายแล้วลองใหม่อีกครั้งภายหลัง", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "เชื่อมต่อโลก ก้าวล้ำเหนือเสียง", @@ -28,7 +34,7 @@ const Map thTH = { "explore": "สำรวจ", "settings": "การตั้งค่า", - // 语言 + // 语言列表 "followingSystem": "ตามระบบ", "chinese": "ภาษาจีน", "english": "ภาษาอังกฤษ", @@ -72,7 +78,7 @@ const Map thTH = { "arabic": "ภาษาアラビア", "persian": "ภาษาญี่ปุ่น", - // 登录页 + // 登录模块 "welcome": "ยินดีต้อนรับ", "loginTips": "กรุณาเข้าสู่ระบบหรือลงทะเบียนด้วยหมายเลขโทรศัพท์หรืออีเมล", "accountNumber": "หมายเลขโทรศัพท์หรืออีเมล", @@ -99,12 +105,8 @@ const Map thTH = { "resendVerificationCode": "ส่งรหัสยืนยันอีกครั้ง", "login": "เข้าสู่ระบบ", "usePasswordLogin": "เข้าสู่ระบบด้วยรหัสผ่าน", - - // 隐私政策弹窗 "loginDeclaration": "คำประกาศของ Voitrans", // Voitrans 声明 "welcomeToThisApp": "ยินดีต้อนรับสู่ Voitrans กรุณาอ่านอย่างละเอียด", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "ไม่ยอมรับ", // 不同意 @@ -159,7 +161,7 @@ const Map thTH = { 'right': 'ขวา', 'checkConnectionStatusFailed': 'ตรวจสอบสถานะการเชื่อมต่อล้มเหลว', -// 发现页 + // 发现页 "searchAi": "ค้นหาฟังก์ชัน AI...", "exploreSlogan": "หูฟังอัจฉริยะ ความเป็นไปได้ไม่สิ้นสุด", "exploreSlogan1": "เพื่อนคู่อัจฉริยะ ความเป็นไปได้ไม่สิ้นสุด", @@ -182,6 +184,7 @@ const Map thTH = { "usageStats": "สถิติการใช้งาน", "usageStatsInfo": "ดูสถิติการใช้งานของคุณ", "scene": "สถานการณ์", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", @@ -202,7 +205,6 @@ const Map thTH = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -219,7 +221,6 @@ const Map thTH = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - // 通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", "cleanupComplete": "Cleanup Complete", @@ -227,56 +228,114 @@ const Map thTH = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', 'remaining': 'Remaining', 'featureDescription': 'Feature Description', - // AI 功能卡片 + 'paymentSuccess': 'ชำระเงินสำเร็จ', + 'paymentFailed': 'การชำระเงินล้มเหลว', + 'gotIt': 'เข้าใจแล้ว', + 'paymentFailedTryAgain': 'การชำระเงินล้มเหลว กรุณาลองใหม่อีกครั้ง', + 'selectPaymentMethod': 'เลือกวิธีการชำระเงิน', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'ไม่สามารถสร้างคำสั่งซื้อ WeChat ได้', + 'alipayOrderCreateFailed': 'ไม่สามารถสร้างคำสั่งซื้อ Alipay ได้', + 'appleOrderCreateFailed': 'ไม่สามารถสร้างคำสั่งซื้อ Apple ได้', + 'googleOrderCreateFailed': 'ไม่สามารถสร้างคำสั่งซื้อ Google ได้', + 'paypalOrderCreateFailed': 'ไม่สามารถสร้างคำสั่งซื้อ PayPal ได้', + 'paymentException': 'การชำระเงินผิดปกติ', + 'paymentLaunchFailed': 'ไม่สามารถเปิดการชำระเงินได้', + 'paymentExceptionWithError': 'การชำระเงินผิดปกติ: @error', + 'paymentProcessingCheckLater': 'คำสั่งซื้อของคุณกำลังดำเนินการ กรุณาตรวจสอบภายหลัง', + 'paymentResultQueryException': 'ไม่สามารถสอบถามผลการชำระเงินได้: @error', + 'orderConfirmedQuotaRefreshed': 'ยืนยันคำสั่งซื้อแล้ว โควตาของคุณได้รับการรีเฟรชแล้ว', + 'paymentCompletedConfirming': 'ชำระเงินเสร็จสิ้น กำลังยืนยัน…', + 'paymentCancelled': 'ยกเลิกการชำระเงินแล้ว', + 'paypalOpenedCompleteInBrowser': 'PayPal เปิดแล้ว กรุณาชำระเงินในเบราว์เซอร์', + 'paypalOpenFailed': 'ไม่สามารถเปิดหน้าชำระเงิน PayPal ได้', + 'paymentTestTitle': 'ทดสอบการชำระเงิน', + 'paymentTestOrderInfo': 'ข้อมูลคำสั่งซื้อทดสอบ', + 'paymentTestProductId': 'รหัสสินค้า', + 'paymentTestProductDescription': 'คำอธิบายสินค้า', + 'paymentTestWechatDescription': 'ทดสอบการชำระเงินผ่าน WeChat', + 'paymentTestAlipayDescription': 'ทดสอบการชำระเงินผ่าน Alipay', + 'paymentTestAmount': 'จำนวนเงิน', + 'paymentTestSelectAmount': 'เลือกจำนวนเงินทดสอบ', + 'paying': 'กำลังชำระเงิน...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'สถานะการชำระเงิน', + 'errorInfoWithMessage': 'ข้อผิดพลาด: @message', + 'retest': 'ทดสอบอีกครั้ง', + 'paymentTestInstructionsTitle': 'คำแนะนำ', + 'paymentTestInstructionsContent': '1. เลือกจำนวนเงินทดสอบ (แนะนำ: ¥0.01)\n2. กดปุ่มชำระเงินเพื่อเริ่มต้น\n3. ชำระเงินในแอปชำระเงิน\n4. กลับมาตรวจสอบผลลัพธ์', + 'startingWechatPayment': 'กำลังเปิด WeChat Pay...', + 'startingAlipayPayment': 'กำลังเปิด Alipay...', + 'wechatPaymentSuccess': 'ชำระเงินผ่าน WeChat Pay สำเร็จ!', + 'wechatPaymentFailed': 'การชำระเงินผ่าน WeChat Pay ล้มเหลว', + 'wechatPaymentLaunchFailed': 'ไม่สามารถเปิด WeChat Pay ได้', + 'cannotLaunchWechatPayment': 'ไม่สามารถเปิด WeChat Pay ได้', + 'wechatPaymentException': 'WeChat Pay ผิดปกติ', + 'wechatPaymentTestCompleted': 'การทดสอบชำระเงินผ่าน WeChat Pay เสร็จสิ้น', + 'alipayPaymentSuccess': 'ชำระเงินผ่าน Alipay สำเร็จ!', + 'alipayPaymentFailed': 'การชำระเงินผ่าน Alipay ล้มเหลว', + 'alipayPaymentLaunchFailed': 'ไม่สามารถเปิด Alipay ได้', + 'cannotLaunchAlipayPayment': 'ไม่สามารถเปิด Alipay ได้', + 'alipayPaymentException': 'Alipay ผิดปกติ', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": "Insufficient balance, please go to the corresponding recharge page to recharge.", + "recharge": "Go to Recharge", + "aiMemberExpiredDesc": "AI membership expired, please go to the membership recharge page to renew.", + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 + 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', + 'aiHeaderDesc2': 'Suitable for agent Q&A, summarization, analysis, and task execution.', + 'musicSearchPlaybackControl': 'Music library search and playback control', + 'smartPlaylistAndSimilarRecommendations': 'Smart playlist and similar song recommendations', + 'routePlanningAndCongestionAvoidance': 'Route planning and congestion avoidance', + 'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings', + 'realTimeWeatherForecast': 'Real-time weather and forecast', + 'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders', + 'poiSearchFoodGasParking': 'POI search: dining / gas / parking', + 'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing', + 'hotNewsAndTopicOverview': 'Hot news and topic overview', + 'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points', + 'helpCallAndSMS': 'Help with calls and SMS', + 'templatedMessagesAndScheduleReminders': 'Template messages and schedule reminders', + 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', + + // 商品模块 - 翻译商品页 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 'sceneLexicon': 'Scenario Glossary', 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 + 'transHeaderDesc1': 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', + 'translateZhEn': 'Chinese-English translation', + 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', + 'multiLangTextTranslation': 'Multilingual text translation', + 'termOptimizationContextPreserve': 'Terminology optimization and context preservation', + 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', + 'personalVocabularyMemory': 'Personal vocabulary memory', + 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', + 'colorHighContrast': 'High color contrast', + 'transDisclaimer': 'Translation performance depends on microphone, network latency, and ambient noise.', + + // 商品模块 - 会议商品页 'meetingRecording': 'Meeting Recording', 'transcriptionAndSummary': 'Transcription & Summary', 'keywordSearch': 'Keyword Search', 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 'meetingHeaderDesc1': 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', 'meetingHeaderDesc2': 'Suitable for business meetings, class notes, and interview minutes.', 'meetingAutoRecording': 'Auto recording and segmentation', @@ -289,37 +348,7 @@ const Map thTH = { 'meetingMultiPlatformShare': 'Share across platforms', 'meetingDisclaimer': 'Use in quiet environments; performance depends on microphone and network.', - // 同传/翻译商品页描述 - 'transHeaderDesc1': 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 - 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', - 'aiHeaderDesc2': 'Suitable for agent Q&A, summarization, analysis, and task execution.', - 'musicSearchPlaybackControl': 'Music library search and playback control', - 'smartPlaylistAndSimilarRecommendations': 'Smart playlist and similar song recommendations', - 'routePlanningAndCongestionAvoidance': 'Route planning and congestion avoidance', - 'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings', - 'realTimeWeatherForecast': 'Real-time weather and forecast', - 'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders', - 'poiSearchFoodGasParking': 'POI search: dining / gas / parking', - 'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing', - 'hotNewsAndTopicOverview': 'Hot news and topic overview', - 'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points', - 'helpCallAndSMS': 'Help with calls and SMS', - 'templatedMessagesAndScheduleReminders': 'Template messages and schedule reminders', - 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - - // 会员商品页 + // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', 'higherQuota': 'Higher usage quota', 'lowerUnitPrice': 'Lower unit price', @@ -334,7 +363,32 @@ const Map thTH = { 'crossDeviceSync': 'Cross-device sync', 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Translation Basic 100', + 'trans_002_name': 'Translation Basic 500', + 'trans_003_name': 'Translation Basic 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': 'Includes 100 translations (voice/text).', + 'trans_002_desc': 'Includes 500 translations (voice/text).', + 'trans_003_desc': 'Includes 1000 translations (voice/text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': 'ข้าม', 'next': 'Next', 'sayLilyHint': 'Say "Lily Lily" to the mic', @@ -345,7 +399,6 @@ const Map thTH = { 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', 'confirmInput': 'Confirm Input', 'guideClickSendPrefix': 'Tap send, ', - // AI 引导步骤 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', 'guideWeatherInput': 'What’s the weather today?', 'guideWeatherSend': 'Lily will report the weather in real time', @@ -371,7 +424,7 @@ const Map thTH = { 'guideSmsSend': 'Lily will send the message', 'guideSmsEnd': 'Message sent—voice control is convenient', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "เริ่มการประชุม", 'edit': 'แก้ไข', 'delete': 'ลบ', @@ -383,8 +436,6 @@ const Map thTH = { 'recordingDetails': 'รายละเอียดการบันทึก', 'aiSummary': 'สรุปโดย AI', 'meetingTranscript': 'ข้อความถอดเสียงการประชุม', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -437,7 +488,6 @@ const Map thTH = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -446,6 +496,94 @@ const Map thTH = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': 'สร้าง', + 'templateDetails': 'รายละเอียดเทมเพลต', + 'tag': 'แท็ก', + 'description': 'คำอธิบาย', + 'template': 'เทมเพลต', + 'deleteTemplate': 'ลบเทมเพลต', + 'deleteTemplateConfirm': 'คุณแน่ใจหรือไม่ว่าต้องการลบเทมเพลตนี้?', + 'editTemplate': 'แก้ไขเทมเพลต', + 'createTemplate': 'สร้างเทมเพลต', + 'name': 'ชื่อ', + 'templateContentHint': 'กรุณาป้อนเนื้อหาเทมเพลต! เคล็ดลับ: กดปุ่ม AI ด้านบนเพื่อสร้างเนื้อหาเทมเพลตอย่างรวดเร็วตามชื่อและคำอธิบายที่คุณป้อน', + 'inputNameHint': 'กรุณาป้อนชื่อ', + 'inputDescHint': 'กรุณาป้อนคำอธิบาย', + 'custom': 'กำหนดเอง', + 'pleaseEnter': 'กรุณากรอก', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'บันทึกแผนผังความคิด', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'ส่งออก', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'นำไปใช้กับทุกย่อหน้าของผู้พูดคนนี้', + 'summaryWillBeUpdatedAutomatically': 'สรุปจะอัปเดตอัตโนมัติตามเทมเพลต', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -464,7 +602,7 @@ const Map thTH = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -490,8 +628,6 @@ const Map thTH = { 'aiVoiceEnhancementDesc': 'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.', 'audioImportDesc': 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -516,101 +652,26 @@ const Map thTH = { 'validityNote': 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'นำไปใช้กับทุกย่อหน้าของผู้พูดคนนี้', - 'summaryWillBeUpdatedAutomatically': 'สรุปจะอัปเดตอัตโนมัติตามเทมเพลต', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': 'Summary speakers will be updated automatically', - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': 'การวิเคราะห์ล้มเหลว กรุณาลองใหม่ภายหลัง', + 'transcriptionFailed': 'การถอดเสียงล้มเหลว กรุณาลองใหม่ภายหลัง', + 'summaryFailed': 'สรุปล้มเหลว กรุณาลองใหม่ภายหลัง', + 'summaryFailedShort': 'สรุปล้มเหลว', + 'transcriptionFailedShort': 'การถอดเสียงล้มเหลว', + + // Meeting模块 - 播放器 + 'playerNotReady': 'เครื่องเล่นเสียงยังไม่พร้อม กรุณารอสักครู่', + 'playFailed': 'เล่นไม่สำเร็จ', + 'audioFileNotFound': 'ไม่พบไฟล์เสียง', + 'fetchingAudio': 'กำลังดึงเสียงจากคลาวด์...', + 'playerLoadFailed': 'โหลดเครื่องเล่นเสียงไม่สำเร็จ', // 设置页 "systemSettings": "การตั้งค่าระบบ", @@ -659,25 +720,14 @@ const Map thTH = { "bleHeadsetFirmwareUpgrade": "อัปเกรดเวอร์ชันเฟิร์มแวร์หูฟัง BLE", "deviceManagement": "การจัดการอุปกรณ์", "manageConnectedDevices": "จัดการอุปกรณ์บลูทูธที่จับคู่แล้ว", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'คุณใช้เวอร์ชันล่าสุดแล้ว {version}', 'checkUpdateFailed': 'ตรวจสอบการอัปเดตล้มเหลว', 'networkErrorRetry': 'ข้อผิดพลาดเครือข่าย กรุณาลองใหม่ในภายหลัง', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "แชทเสียงแบบเรียลไทม์", "realtimeVoiceChatInfo": "สัมผัสประสบการณ์การโต้ตอบด้วยเสียงอัจฉริยะ (ตัวอย่างฟังก์ชัน)", "loading": "กำลังโหลด...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -692,8 +742,7 @@ const Map thTH = { "confirmUnbindMessage": "Are you sure you want to unbind device \\", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "ล้างประวัติการแชท", "online": "ออนไลน์", @@ -723,8 +772,9 @@ const Map thTH = { "swipeUpForMore": "ปัดขึ้นเพื่อดูเพิ่มเติม", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': 'เมื่อเปิดใช้งาน: AI จะไม่ถูกขัดจังหวะโดยเสียงของคุณขณะพูด และสามารถจัดการได้เพียงหนึ่งรอบการสนทนา หากต้องการเริ่มรอบใหม่ เพียงพูดคำปลุก', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -736,7 +786,7 @@ const Map thTH = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': '你好!我是**Lily**,我能帮你:\n\n' '• 回答问题和提供信息\n\n' '• 实时语音翻译\n\n' @@ -752,18 +802,17 @@ const Map thTH = { 'startVoiceInput': 'เริ่มการป้อนข้อมูลด้วยเสียง', 'startPhoneCallMode': 'เริ่มโหมดโทรศัพท์ เริ่มการป้อนข้อมูลด้วยเสียง', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'ป้อนข้อความของคุณที่นี่...', // 全屏编辑器输入提示 'characterCount': '{count} ตัวอักษร', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'คัดลอก', 'copySuccess': 'คัดลอกสำเร็จ', 'report': 'รายงาน', 'submitSuccess': 'ส่งสำเร็จ', 'submitFailed': 'ส่งล้มเหลว', 'reportSubmitted': 'รายงานถูกส่งแล้ว เราจะดำเนินการโดยเร็วที่สุด', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'เป็นอันตราย/ไม่ปลอดภัย', 'pornographicVulgar': 'ลามกอนาจาร', 'misleadingAttack': 'ทำให้เข้าใจผิด/โจมตี', @@ -772,17 +821,14 @@ const Map thTH = { 'copyrightViolation': 'ละเมิดลิขสิทธิ์ ชื่อเสียง ฯลฯ ของฉัน', 'other': 'อื่นๆ', 'reportDescriptionHint': 'เราต้องการทราบเหตุผลที่คุณรายงาน คุณสามารถอธิบายปัญหาที่คุณพบได้', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'สร้างโดย AI', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'นี่คือเพลงที่แนะนำบางส่วน:', 'playList': 'เพลย์ลิสต์', 'moreMusic': 'เพลงเพิ่มเติม', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'กม.', // 公里单位 'meters': 'ม.', // 米单位 'hours': 'ชม.', // 小时单位 @@ -797,7 +843,7 @@ const Map thTH = { "bicycling": "ขี่จักรยาน", "tsransit": "ขนส่งสาธารณะ", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'กำลังสอบถามสภาพอากาศ:', 'highest': 'สูงสุด', 'lowest': 'ต่ำสุด', @@ -818,18 +864,8 @@ const Map thTH = { "friday": "ศ.", "saturday": "ส.", "sunday": "อา.", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "แจ่มใส", "partlyCloudy": "มีเมฆบางส่วน", "partlySunny": "มีแดดสลับกับเมฆ", @@ -850,7 +886,119 @@ const Map thTH = { "haze": "หมอกควัน", "strongWind": "ลมแรง", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "ประวัติการแปล", + "enableRecording": "เปิดใช้งานการบันทึก", + "viewAudioFiles": "ดูไฟล์เสียง", + "headsetUser": "ผู้ใช้หูฟัง", + "phoneUser": "ผู้ใช้โทรศัพท์", + "selectSourceLanguage": "เลือกภาษาต้นทาง", + "selectTargetLanguage": "เลือกภาษาเป้าหมาย", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "ยังไม่มีประวัติ", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "ล้างประวัติ", + "clearHistoryConfirm": "คุณแน่ใจหรือไม่ว่าต้องการล้างประวัติการแปลทั้งหมด การกระทำนี้ไม่สามารถย้อนกลับได้", + "unknownLanguage": "ภาษาที่ไม่รู้จัก", + "deleteSessionRecord": "ลบบันทึกเซสชัน", + "deleteSessionConfirm": "คุณแน่ใจหรือไม่ว่าต้องการลบบันทึกการแปลทั้งหมดของเซสชันนี้ การกระทำนี้ไม่สามารถย้อนกลับได้", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "แปลไฟล์เสียง", + "noAudioFiles": "ยังไม่มีไฟล์เสียง", + "calculating": "กำลังคำนวณ...", + "playing": "กำลังเล่น...", + "paused": "หยุดชั่วคราว", + "clickToPlay": "คลิกเพื่อเล่น", + "rename": "เปลี่ยนชื่อ", + "smartTranscription": "การถอดเสียงอัจฉริยะ", + "renameAudioFile": "เปลี่ยนชื่อไฟล์เสียง", + "enterNewFileName": "กรุณาใส่ชื่อไฟล์ใหม่", + + // 翻译模块 - 翻译详情 + "originalRecord": "บันทึกต้นฉบับ", + "recordSummary": "สรุปบันทึก", + "clickToGenerateSummary": "คลิกปุ่มด้านล่างเพื่อสร้างสรุปเซสชัน", + "summaryContent": "เนื้อหาสรุป", + "copied": "คัดลอกแล้ว", + "summaryCopiledToClipboard": "สรุปถูกคัดลอกไปยังคลิปบอร์ดแล้ว", + "extractSummary": "ดึงข้อมูลสรุป", + "summaryGenerated": "สร้างสรุปแล้ว", + "generating": "กำลังสร้าง...", + "regenerate": "สร้างใหม่", + "summaryTimeoutMessage": "คำขอสร้างสรุปหมดเวลา อาจเป็นเพราะปัญหาเครือข่ายหรือเซิร์ฟเวอร์ไม่ว่าง", + "deleteTranslationRecord": "ลบบันทึกการแปล", + "deleteTranslationConfirm": "คุณแน่ใจหรือไม่ว่าต้องการลบบันทึกการแปลนี้ การกระทำนี้ไม่สามารถย้อนกลับได้", + "originalText": "ข้อความต้นฉบับ", + "translatedText": "ข้อความที่แปลแล้ว", + "sessionSummary": "สรุปเซสชัน", + "cannotShare": "ไม่สามารถแชร์ได้", + "generateSummaryFirst": "กรุณาสร้างสรุปก่อน", + "translationSessionRecord": "บันทึกเซสชันการแปล", + + // 个人资料模块 "editProfile": "แก้ไขข้อมูลส่วนตัว", "avatar": "อวาตาร์", "nickname": "ชื่อเล่น", @@ -865,8 +1013,6 @@ const Map thTH = { 'deleteAccountTips': 'คุณแน่ใจหรือไม่ว่าต้องการลบบัญชีของคุณอย่างถาวร การกระทำนี้ไม่สามารถย้อนกลับได้', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'การเชื่อมต่อเครือข่ายล้มเหลว โปรดตรวจสอบการตั้งค่าเครือข่ายแล้วลองใหม่', 'serverTemporarilyUnavailable': 'เซิร์ฟเวอร์ไม่สามารถตอบสนองได้ชั่วคราว โปรดลองใหม่ในภายหลัง', 'loginExpiredPleaseRelogin': 'การเข้าสู่ระบบหมดอายุแล้ว โปรดเข้าสู่ระบบอีกครั้ง', @@ -878,10 +1024,6 @@ const Map thTH = { 'serverError': 'ข้อผิดพลาดของเซิร์ฟเวอร์', 'networkConnectionFailedCheckSettings': 'การเชื่อมต่อเครือข่ายล้มเหลว โปรดตรวจสอบการตั้งค่าเครือข่าย', 'serverInternalErrorRetryLater': 'ข้อผิดพลาดภายในเซิร์ฟเวอร์ โปรดลองใหม่ในภายหลัง', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'การบีบอัดรูปภาพล้มเหลว', 'avatarUpdateFailed': 'อัปเดตอวาตาร์ล้มเหลว', 'usernameCannotBeEmpty': 'ชื่อผู้ใช้ต้องไม่ว่างเปล่า', @@ -892,8 +1034,6 @@ const Map thTH = { 'logoutFailedRetry': 'ออกจากระบบล้มเหลว โปรดลองใหม่', 'accountPermanentlyDeleted': 'บัญชีถูกลบอย่างถาวรแล้ว', 'deleteAccountFailedRetry': 'ลบบัญชีล้มเหลว โปรดลองใหม่', - - // 账号服务相关 'clearUserDataFailed': 'ล้างข้อมูลผู้ใช้ล้มเหลว', // 清理用户数据失败 'deleteUserDataFailed': 'ลบข้อมูลผู้ใช้ล้มเหลว', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'ออกจากระบบบุคคลที่สามสำเร็จ', // 第三方登录退出成功 @@ -904,7 +1044,11 @@ const Map thTH = { 'allUserDataClearSuccess': 'ล้างข้อมูลผู้ใช้ทั้งหมดสำเร็จ', // 所有用户数据清理成功 'accountServiceInitialized': 'AccountService ได้รับการเริ่มต้นแล้ว', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', 'getPermissionStatusFailed': 'รับสถานะสิทธิ์ล้มเหลว', 'communicationPermissions': 'สิทธิ์การสื่อสาร', 'bluetoothPermissions': 'Bluetooth Permissions', @@ -917,7 +1061,6 @@ const Map thTH = { 'phone': 'โทรศัพท์', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'เขียนปฏิทิน', @@ -956,8 +1099,6 @@ const Map thTH = { 'appNeedsPermissionForFullFunction': 'แอปพลิเคชันต้องการสิทธิ์นี้เพื่อให้บริการเต็มรูปแบบ', 'permanentDenialText': 'คุณได้ปฏิเสธสิทธิ์ {permission} อย่างถาวร โปรดไปที่การตั้งค่าแอปเพื่อเปิดใช้งาน', 'goToSettings': 'ไปที่การตั้งค่า', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', @@ -972,7 +1113,6 @@ const Map thTH = { 'locationPermissionExplanation': 'Location permission is required to get current location.', 'notificationPermissionPermanentDenial': 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', 'storagePermissionExplanation': 'We need storage permission so you can select and upload audio files.', @@ -980,15 +1120,26 @@ const Map thTH = { '检测到您已永久拒绝录音权限。如需继续使用此功能,请前往应用设置中手动开启麦克风权限。', 'storagePermissionPermanentDenial': '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - //permission_util.dart 'permissionUtilNeed': 'Need ', 'permissionUtilPermission': ' Permission', 'permissionUtilRestricted': ' Permission Restricted', 'permissionUtilRestrictedMessage': 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'กำลังนำทาง', + 'native.notification.navigation.keepRunning': 'กำลังนำทาง โปรดเปิดแอปไว้', + 'native.notification.bleAgent.running': 'ตัวช่วยเสียงกำลังทำงาน', + 'native.notification.audioRecording.recording': 'กำลังบันทึกเสียง แตะเพื่อกลับไปที่แอป', + 'native.notification.music.waiting': 'กำลังรอเล่น', + 'native.notification.music.previous': 'ก่อนหน้า', + 'native.notification.music.next': 'ถัดไป', + 'native.notification.music.play': 'เล่น', + 'native.notification.music.pause': 'หยุดชั่วคราว', + 'native.notification.qqMusic.playing': 'กำลังเล่นเพลง', + + // 版本更新 'newVersionFound': 'พบเวอร์ชันใหม่', // 版本更新对话框标题 'remindLater': 'เตือนภายหลัง', // 稍后提醒按钮 'updateNow': 'อัปเดตทันที', // 立即更新按钮 @@ -997,242 +1148,7 @@ const Map thTH = { 'cannotOpenAppStore': 'ไม่สามารถเปิด App Store ได้ โปรดไปที่ App Store เพื่ออัปเดตด้วยตนเอง', // 无法打开应用商店提示 'updateErrorRetry': 'เกิดข้อผิดพลาดระหว่างการอัปเดต โปรดลองใหม่ในภายหลัง', // 更新错误重试提示 - //国家列表 - "邮箱": "อีเมล", - "中国": "จีน", - "美国": "สหรัฐอเมริกา", - "加拿大": "แคนาดา", - "俄罗斯": "รัสเซีย", - "英国": "สหราชอาณาจักร", - "德国": "เยอรมนี", - "意大利": "อิตาลี", - "法国": "ฝรั่งเศส", - "西班牙": "สเปน", - "南非": "แอฟริกาใต้", - "沙特阿拉伯": "ซาอุดีอาระเบีย", - "土耳其": "ตุรกี", - "日本": "ญี่ปุ่น", - "韩国": "เกาหลีใต้", - "新加坡": "สิงคโปร์", - "马来西亚": "มาเลเซีย", - "泰国": "ไทย", - "越南": "เวียดนาม", - "印度": "อินเดีย", - "巴基斯坦": "ปากีสถาน", - "菲律宾": "ฟิลิปปินส์", - "印度尼西亚": "อินโดนีเซีย", - "阿联酋": "สหรัฐอาหรับเอมิเรตส์", - "墨西哥": "เม็กซิโก", - "巴西": "บราซิล", - "阿根廷": "อาร์เจนตินา", - "澳大利亚": "ออสเตรเลีย", - "新西兰": "นิวซีแลนด์", - "中国香港": "ฮ่องกง (จีน)", - "中国澳门": "มาเก๊า (จีน)", - "中国台湾": "ไต้หวัน (จีน)", - "埃及": "อียิปต์", - "希腊": "กรีซ", - "荷兰": "เนเธอร์แลนด์", - "比利时": "เบลเยียม", - "匈牙利": "ฮังการี", - "罗马尼亚": "โรมาเนีย", - "瑞士": "สวิตเซอร์แลนด์", - "奥地利": "ออสเตรีย", - "丹麦": "เดนมาร์ก", - "瑞典": "สวีเดน", - "挪威": "นอร์เวย์", - "波兰": "โปแลนด์", - "秘鲁": "เปรู", - "智利": "ชิลี", - "哥伦比亚": "โคลอมเบีย", - "委内瑞拉": "เวเนซุเอลา", - "葡萄牙": "โปรตุเกส", - "卢森堡": "ลักเซมเบิร์ก", - "爱尔兰": "ไอร์แลนด์", - "冰岛": "ไอซ์แลนด์", - "阿尔巴尼亚": "แอลเบเนีย", - "马耳他": "มอลตา", - "塞浦路斯": "ไซปรัส", - "芬兰": "ฟินแลนด์", - "保加利亚": "บัลแกเรีย", - "立陶宛": "ลิทัวเนีย", - "拉脱维亚": "ลัตเวีย", - "爱沙尼亚": "เอสโตเนีย", - "乌克兰": "ยูเครน", - "塞尔维亚": "เซอร์เบีย", - "克罗地亚": "โครเอเชีย", - "斯洛文尼亚": "สโลวีเนีย", - "捷克": "สาธารณรัฐเช็ก", - "斯洛伐克": "สโลวาเกีย", - "危地马拉": "กัวเตมาลา", - "萨尔瓦多": "เอลซัลวาดอร์", - "洪都拉斯": "ฮอนดูรัส", - "尼加拉瓜": "นิการากัว", - "哥斯达黎加": "คอสตาริกา", - "巴拿马": "ปานามา", - "海地": "เฮติ", - "玻利维亚": "โบลิเวีย", - "厄瓜多尔": "เอกวาดอร์", - "巴拉圭": "ปารากวัย", - "乌拉圭": "อุรุกวัย", - "摩洛哥": "โมร็อกโก", - "阿尔及利亚": "แอลจีเรีย", - "突尼斯": "ตูนิเซีย", - "尼日利亚": "ไนจีเรีย", - "加纳": "กานา", - "埃塞俄比亚": "เอธิโอเปีย", - "肯尼亚": "เคนยา", - "坦桑尼亚": "แทนซาเนีย", - "乌干达": "ยูกันดา", - "孟加拉国": "บังกลาเทศ", - "以色列": "อิสราเอล", - "黎巴嫩": "เลบานอน", - "约旦": "จอร์แดน", - "伊拉克": "อิรัก", - "科威特": "คูเวต", - "巴林": "บาห์เรน", - "卡塔尔": "กาตาร์", - "阿曼": "โอมาน", - "阿富汗": "อัฟกานิสถาน", - "斯里兰卡": "ศรีลังกา", - "缅甸": "เมียนมาร์", - "尼泊尔": "เนปาล", - "蒙古": "มองโกเลีย", - "柬埔寨": "กัมพูชา", - "老挝": "ลาว", - "文莱": "บรูไน", - "东帝汶": "ติมอร์-เลสเต", - "斐济": "ฟิจิ", - "所罗门群岛": "หมู่เกาะโซโลมอน", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "ประวัติการแปล", - "enableRecording": "เปิดใช้งานการบันทึก", - "viewAudioFiles": "ดูไฟล์เสียง", - "headsetUser": "ผู้ใช้หูฟัง", - "phoneUser": "ผู้ใช้โทรศัพท์", - "selectSourceLanguage": "เลือกภาษาต้นทาง", - "selectTargetLanguage": "เลือกภาษาเป้าหมาย", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "ยังไม่มีประวัติ", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "ล้างประวัติ", - "clearHistoryConfirm": "คุณแน่ใจหรือไม่ว่าต้องการล้างประวัติการแปลทั้งหมด การกระทำนี้ไม่สามารถย้อนกลับได้", - "unknownLanguage": "ภาษาที่ไม่รู้จัก", - "deleteSessionRecord": "ลบบันทึกเซสชัน", - "deleteSessionConfirm": "คุณแน่ใจหรือไม่ว่าต้องการลบบันทึกการแปลทั้งหมดของเซสชันนี้ การกระทำนี้ไม่สามารถย้อนกลับได้", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "แปลไฟล์เสียง", - "noAudioFiles": "ยังไม่มีไฟล์เสียง", - "calculating": "กำลังคำนวณ...", - "playing": "กำลังเล่น...", - "paused": "หยุดชั่วคราว", - "clickToPlay": "คลิกเพื่อเล่น", - "rename": "เปลี่ยนชื่อ", - "smartTranscription": "การถอดเสียงอัจฉริยะ", - "renameAudioFile": "เปลี่ยนชื่อไฟล์เสียง", - "enterNewFileName": "กรุณาใส่ชื่อไฟล์ใหม่", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "บันทึกต้นฉบับ", - "recordSummary": "สรุปบันทึก", - "clickToGenerateSummary": "คลิกปุ่มด้านล่างเพื่อสร้างสรุปเซสชัน", - "summaryContent": "เนื้อหาสรุป", - "copied": "คัดลอกแล้ว", - "summaryCopiledToClipboard": "สรุปถูกคัดลอกไปยังคลิปบอร์ดแล้ว", - "extractSummary": "ดึงข้อมูลสรุป", - "summaryGenerated": "สร้างสรุปแล้ว", - "generating": "กำลังสร้าง...", - "regenerate": "สร้างใหม่", - "summaryTimeoutMessage": "คำขอสร้างสรุปหมดเวลา อาจเป็นเพราะปัญหาเครือข่ายหรือเซิร์ฟเวอร์ไม่ว่าง", - "deleteTranslationRecord": "ลบบันทึกการแปล", - "deleteTranslationConfirm": "คุณแน่ใจหรือไม่ว่าต้องการลบบันทึกการแปลนี้ การกระทำนี้ไม่สามารถย้อนกลับได้", - "originalText": "ข้อความต้นฉบับ", - "translatedText": "ข้อความที่แปลแล้ว", - "sessionSummary": "สรุปเซสชัน", - "cannotShare": "ไม่สามารถแชร์ได้", - "generateSummaryFirst": "กรุณาสร้างสรุปก่อน", - "translationSessionRecord": "บันทึกเซสชันการแปล", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "การจับคู่อุปกรณ์", "connectYourDeepSoundHeadset": "เชื่อมต่อหูฟัง Voitrans ของคุณ", "bind": "ผูก", @@ -1241,14 +1157,11 @@ const Map thTH = { "autoInputCode": "ป้อนรหัสอัตโนมัติ", "skipBinding": "ข้ามการผูก", "rescan": "สแกนอีกครั้ง", - "verifyingDevice": "กำลังตรวจสอบอุปกรณ์...", "confirmBinding": "ยืนยันการผูก", "associatingDevice": "กำลังเชื่อมโยงอุปกรณ์...", "goToBluetoothSettings": "ไปที่การตั้งค่าบลูทูธ", 'bluetooth': 'บลูทูธ', - - // 配对状态文本 "readyToPair": "พร้อมที่จะจับคู่", "preparingPairingEnvironment": "กำลังเตรียมสภาพแวดล้อมการจับคู่...", "connectDeepSoundViaSystemBluetooth": "กรุณาเชื่อมต่อกับอุปกรณ์ Voitrans ผ่านบลูทูธของระบบก่อน", @@ -1256,8 +1169,6 @@ const Map thTH = { "establishingDeviceAssociation": "กำลังสร้างการเชื่อมโยงอุปกรณ์...", "waitingCompletePairing": "กรุณารอสักครู่ กำลังทำการจับคู่ให้เสร็จสิ้น...", "pairingSuccessRedirecting": "การจับคู่สำเร็จ! กำลังเปลี่ยนเส้นทางไปยังหน้าหลัก...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "โปรดตรวจสอบให้แน่ใจว่าคุณเชื่อมต่อกับอุปกรณ์ Voitrans", "deviceAlreadyBoundToOtherAccount": "อุปกรณ์นี้ถูกผูกไว้กับบัญชีอื่นแล้ว", "deviceAssociationFailed": "การเชื่อมโยงอุปกรณ์ล้มเหลว โปรดลองอีกครั้ง", @@ -1265,18 +1176,11 @@ const Map thTH = { "networkError": "ข้อผิดพลาดเครือข่าย", "authorizationFailedCheckCode": "การอนุญาตล้มเหลว โปรดตรวจสอบว่ารหัสอนุญาตถูกต้องหรือไม่", "pairingFailedRetry": "การจับคู่ล้มเหลว โปรดลองอีกครั้ง", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'กรุณาเปิดใช้งานบลูทูธ', 'deviceDisconnected': 'อุปกรณ์ตัดการเชื่อมต่อแล้ว', 'readyToStartPairing': 'พร้อมที่จะเริ่มการจับคู่', 'checkingEnvironment': 'กำลังตรวจสอบสภาพแวดล้อม...', 'ensureHeadsetOnAndPairingMode': 'โปรดตรวจสอบให้แน่ใจว่าหูฟังเปิดอยู่และอยู่ในโหมดจับคู่', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'กำลังสร้างการเชื่อมต่อที่ปลอดภัย...', 'needManualBindingAuthCode': 'ต้องใช้รหัสอนุญาตการผูกด้วยตนเอง...', 'pairingSuccessful': 'การจับคู่สำเร็จ!', @@ -1295,8 +1199,6 @@ const Map thTH = { 'blePairingStartupFailed': 'การเริ่มต้นการจับคู่ BLE ล้มเหลว', 'bleConnectionFailed': 'การเชื่อมต่อ BLE ล้มเหลว', 'deviceAuthorizationFailedCheckCode': 'การอนุญาตอุปกรณ์ล้มเหลว โปรดตรวจสอบรหัสอนุญาต', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 @@ -1305,7 +1207,18 @@ const Map thTH = { 'bluetoothGuideTip': 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "ความคิดเห็นของผู้ใช้", 'feedbackInfo': 'ให้ความคิดเห็นหรือข้อเสนอแนะ', 'feedbackDescription': 'กรุณาอธิบายปัญหาที่คุณพบหรือข้อเสนอแนะของคุณ', @@ -1340,7 +1253,7 @@ const Map thTH = { "updateContent": "เนื้อหาการอัปเดต", "removeEarbudsEnsureBattery": "ถอดหูฟังทั้งสองข้างออก และตรวจสอบให้แน่ใจว่าแบตเตอรี่ทั้งสองข้างมีพลังงานมากกว่า 20%", - // 音乐列表页面 + // 音乐模块 "noMusic": "ไม่มีเพลง", // 暂无音乐 "noPlayingMusic": "ไม่มีเพลงที่กำลังเล่น", // 暂无播放音乐 "unknownSong": "เพลงที่ไม่รู้จัก", // 未知歌曲 @@ -1388,20 +1301,122 @@ const Map thTH = { "波斯语": "ภาษาเปอร์เซีย", "斯瓦希里语": "ภาษาสวาฮีลี", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": "Insufficient balance, please go to the corresponding recharge page to recharge.", - "recharge": "Go to Recharge", - // 会员到期提示 - "aiMemberExpiredDesc": "AI membership expired, please go to the membership recharge page to renew.", + // 国家列表 + "邮箱": "อีเมล", + "中国": "จีน", + "美国": "สหรัฐอเมริกา", + "加拿大": "แคนาดา", + "俄罗斯": "รัสเซีย", + "英国": "สหราชอาณาจักร", + "德国": "เยอรมนี", + "意大利": "อิตาลี", + "法国": "ฝรั่งเศส", + "西班牙": "สเปน", + "南非": "แอฟริกาใต้", + "沙特阿拉伯": "ซาอุดีอาระเบีย", + "土耳其": "ตุรกี", + "日本": "ญี่ปุ่น", + "韩国": "เกาหลีใต้", + "新加坡": "สิงคโปร์", + "马来西亚": "มาเลเซีย", + "泰国": "ไทย", + "越南": "เวียดนาม", + "印度": "อินเดีย", + "巴基斯坦": "ปากีสถาน", + "菲律宾": "ฟิลิปปินส์", + "印度尼西亚": "อินโดนีเซีย", + "阿联酋": "สหรัฐอาหรับเอมิเรตส์", + "墨西哥": "เม็กซิโก", + "巴西": "บราซิล", + "阿根廷": "อาร์เจนตินา", + "澳大利亚": "ออสเตรเลีย", + "新西兰": "นิวซีแลนด์", + "中国香港": "ฮ่องกง (จีน)", + "中国澳门": "มาเก๊า (จีน)", + "中国台湾": "ไต้หวัน (จีน)", + "埃及": "อียิปต์", + "希腊": "กรีซ", + "荷兰": "เนเธอร์แลนด์", + "比利时": "เบลเยียม", + "匈牙利": "ฮังการี", + "罗马尼亚": "โรมาเนีย", + "瑞士": "สวิตเซอร์แลนด์", + "奥地利": "ออสเตรีย", + "丹麦": "เดนมาร์ก", + "瑞典": "สวีเดน", + "挪威": "นอร์เวย์", + "波兰": "โปแลนด์", + "秘鲁": "เปรู", + "智利": "ชิลี", + "哥伦比亚": "โคลอมเบีย", + "委内瑞拉": "เวเนซุเอลา", + "葡萄牙": "โปรตุเกส", + "卢森堡": "ลักเซมเบิร์ก", + "爱尔兰": "ไอร์แลนด์", + "冰岛": "ไอซ์แลนด์", + "阿尔巴尼亚": "แอลเบเนีย", + "马耳他": "มอลตา", + "塞浦路斯": "ไซปรัส", + "芬兰": "ฟินแลนด์", + "保加利亚": "บัลแกเรีย", + "立陶宛": "ลิทัวเนีย", + "拉脱维亚": "ลัตเวีย", + "爱沙尼亚": "เอสโตเนีย", + "乌克兰": "ยูเครน", + "塞尔维亚": "เซอร์เบีย", + "克罗地亚": "โครเอเชีย", + "斯洛文尼亚": "สโลวีเนีย", + "捷克": "สาธารณรัฐเช็ก", + "斯洛伐克": "สโลวาเกีย", + "危地马拉": "กัวเตมาลา", + "萨尔瓦多": "เอลซัลวาดอร์", + "洪都拉斯": "ฮอนดูรัส", + "尼加拉瓜": "นิการากัว", + "哥斯达黎加": "คอสตาริกา", + "巴拿马": "ปานามา", + "海地": "เฮติ", + "玻利维亚": "โบลิเวีย", + "厄瓜多尔": "เอกวาดอร์", + "巴拉圭": "ปารากวัย", + "乌拉圭": "อุรุกวัย", + "摩洛哥": "โมร็อกโก", + "阿尔及利亚": "แอลจีเรีย", + "突尼斯": "ตูนิเซีย", + "尼日利亚": "ไนจีเรีย", + "加纳": "กานา", + "埃塞俄比亚": "เอธิโอเปีย", + "肯尼亚": "เคนยา", + "坦桑尼亚": "แทนซาเนีย", + "乌干达": "ยูกันดา", + "孟加拉国": "บังกลาเทศ", + "以色列": "อิสราเอล", + "黎巴嫩": "เลบานอน", + "约旦": "จอร์แดน", + "伊拉克": "อิรัก", + "科威特": "คูเวต", + "巴林": "บาห์เรน", + "卡塔尔": "กาตาร์", + "阿曼": "โอมาน", + "阿富汗": "อัฟกานิสถาน", + "斯里兰卡": "ศรีลังกา", + "缅甸": "เมียนมาร์", + "尼泊尔": "เนปาล", + "蒙古": "มองโกเลีย", + "柬埔寨": "กัมพูชา", + "老挝": "ลาว", + "文莱": "บรูไน", + "东帝汶": "ติมอร์-เลสเต", + "斐济": "ฟิจิ", + "所罗门群岛": "หมู่เกาะโซโลมอน", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/tl_ph.dart b/lib/core/translations/language/tl_ph.dart index 4ed95d19e..596e785cc 100644 --- a/lib/core/translations/language/tl_ph.dart +++ b/lib/core/translations/language/tl_ph.dart @@ -1,4 +1,5 @@ const Map tlPH = { + // 通用 'continue': 'Magpatuloy', 'confirm': 'Kumpirmahin', @@ -18,6 +19,11 @@ const Map tlPH = { "unknownError": "Hindi Malamang Error", "asrConnectionFailed": "Nabigo ang koneksyon sa speech recognition service. Pakisuri ang network at subukang muli mamaya.", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "Ikonekta ang mundo, higit pa sa tunog", @@ -28,7 +34,7 @@ const Map tlPH = { "explore": "Galugarin", "settings": "Mga Setting", - // 语言 + // 语言列表 "followingSystem": "Sundin ang Sistema", "chinese": "Chinese", "english": "Ingles", @@ -72,7 +78,7 @@ const Map tlPH = { "arabic": "Arabic", "persian": "Persian", - // 登录页 + // 登录模块 "welcome": "Maligayang pagdating", "loginTips": "Mangyaring mag-login o mag-signup gamit ang iyong numero ng telepono o email", "accountNumber": "Numero ng Telepono o Email", @@ -99,12 +105,8 @@ const Map tlPH = { "resendVerificationCode": "Ipadala muli ang verification code", "login": "Mag-login", "usePasswordLogin": "Gamitin ang password para mag-login", - - // 隐私政策弹窗 "loginDeclaration": "Pahayag ng Voitrans", // Voitrans 声明 "welcomeToThisApp": "Maligayang pagdating sa Voitrans, mangyaring basahin nang mabuti", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Hindi Sumasang-ayon", // 不同意 @@ -159,7 +161,7 @@ const Map tlPH = { 'right': 'Kanan', 'checkConnectionStatusFailed': 'Nabigong suriin ang katayuan ng koneksyon', -// 发现页 + // 发现页 "searchAi": "Maghanap ng mga function ng AI...", "exploreSlogan": "Mga matalinong earphone, walang katapusang posibilidad", "exploreSlogan1": "Matalinong kasama, walang katapusang posibilidad", @@ -182,6 +184,7 @@ const Map tlPH = { "usageStats": "Usage Statistics", "usageStatsInfo": "View your usage statistics", "scene": "Eksena", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", @@ -202,7 +205,6 @@ const Map tlPH = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -219,7 +221,6 @@ const Map tlPH = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - // 通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", "cleanupComplete": "Cleanup Complete", @@ -227,56 +228,114 @@ const Map tlPH = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', 'remaining': 'Remaining', 'featureDescription': 'Feature Description', - // AI 功能卡片 + 'paymentSuccess': 'Matagumpay ang pagbabayad', + 'paymentFailed': 'Nabigo ang pagbabayad', + 'gotIt': 'Naintindihan', + 'paymentFailedTryAgain': 'Nabigo ang pagbabayad. Pakisubukang muli.', + 'selectPaymentMethod': 'Pumili ng paraan ng pagbabayad', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Hindi nagawa ang order sa WeChat', + 'alipayOrderCreateFailed': 'Hindi nagawa ang order sa Alipay', + 'appleOrderCreateFailed': 'Hindi nagawa ang order sa Apple', + 'googleOrderCreateFailed': 'Hindi nagawa ang order sa Google', + 'paypalOrderCreateFailed': 'Hindi nagawa ang order sa PayPal', + 'paymentException': 'May problema sa pagbabayad', + 'paymentLaunchFailed': 'Hindi mabukas ang pagbabayad', + 'paymentExceptionWithError': 'May problema sa pagbabayad: @error', + 'paymentProcessingCheckLater': 'Pinoproseso ang iyong order. Pakitingnan mamaya.', + 'paymentResultQueryException': 'Hindi makuha ang resulta ng pagbabayad: @error', + 'orderConfirmedQuotaRefreshed': 'Nakumpirma ang order. Na-refresh na ang iyong quota.', + 'paymentCompletedConfirming': 'Tapos na ang pagbabayad. Kinukumpirma…', + 'paymentCancelled': 'Kinansela ang pagbabayad', + 'paypalOpenedCompleteInBrowser': 'Nabuksan na ang PayPal. Pakikumpleto ang pagbabayad sa browser.', + 'paypalOpenFailed': 'Hindi mabukas ang pahina ng pagbabayad sa PayPal', + 'paymentTestTitle': 'Pagsubok ng Pagbabayad', + 'paymentTestOrderInfo': 'Impormasyon ng Test Order', + 'paymentTestProductId': 'Product ID', + 'paymentTestProductDescription': 'Paglalarawan ng produkto', + 'paymentTestWechatDescription': 'Pagsubok ng pagbabayad sa WeChat', + 'paymentTestAlipayDescription': 'Pagsubok ng pagbabayad sa Alipay', + 'paymentTestAmount': 'Halaga', + 'paymentTestSelectAmount': 'Pumili ng halaga para sa pagsubok', + 'paying': 'Nagbabayad...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Status ng pagbabayad', + 'errorInfoWithMessage': 'Error: @message', + 'retest': 'Subukang muli', + 'paymentTestInstructionsTitle': 'Mga Tagubilin', + 'paymentTestInstructionsContent': '1. Pumili ng halaga para sa pagsubok (inirerekomenda: ¥0.01)\n2. Pindutin ang button ng pagbabayad para magsimula\n3. Kumpletuhin ang pagbabayad sa payment app\n4. Bumalik para tingnan ang resulta', + 'startingWechatPayment': 'Binubuksan ang WeChat Pay...', + 'startingAlipayPayment': 'Binubuksan ang Alipay...', + 'wechatPaymentSuccess': 'Matagumpay ang pagbabayad sa WeChat Pay!', + 'wechatPaymentFailed': 'Nabigo ang pagbabayad sa WeChat Pay', + 'wechatPaymentLaunchFailed': 'Hindi mabukas ang WeChat Pay', + 'cannotLaunchWechatPayment': 'Hindi mabukas ang WeChat Pay', + 'wechatPaymentException': 'May problema sa WeChat Pay', + 'wechatPaymentTestCompleted': 'Tapos na ang pagsubok ng pagbabayad sa WeChat Pay', + 'alipayPaymentSuccess': 'Matagumpay ang pagbabayad sa Alipay!', + 'alipayPaymentFailed': 'Nabigo ang pagbabayad sa Alipay', + 'alipayPaymentLaunchFailed': 'Hindi mabukas ang Alipay', + 'cannotLaunchAlipayPayment': 'Hindi mabukas ang Alipay', + 'alipayPaymentException': 'May problema sa Alipay', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": "Insufficient balance, please go to the corresponding recharge page to recharge.", + "recharge": "Go to Recharge", + "aiMemberExpiredDesc": "AI membership expired, please go to the membership recharge page to renew.", + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 + 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', + 'aiHeaderDesc2': 'Suitable for agent Q&A, summarization, analysis, and task execution.', + 'musicSearchPlaybackControl': 'Music library search and playback control', + 'smartPlaylistAndSimilarRecommendations': 'Smart playlist and similar song recommendations', + 'routePlanningAndCongestionAvoidance': 'Route planning and congestion avoidance', + 'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings', + 'realTimeWeatherForecast': 'Real-time weather and forecast', + 'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders', + 'poiSearchFoodGasParking': 'POI search: dining / gas / parking', + 'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing', + 'hotNewsAndTopicOverview': 'Hot news and topic overview', + 'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points', + 'helpCallAndSMS': 'Help with calls and SMS', + 'templatedMessagesAndScheduleReminders': 'Template messages and schedule reminders', + 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', + + // 商品模块 - 翻译商品页 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 'sceneLexicon': 'Scenario Glossary', 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 + 'transHeaderDesc1': 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', + 'translateZhEn': 'Chinese-English translation', + 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', + 'multiLangTextTranslation': 'Multilingual text translation', + 'termOptimizationContextPreserve': 'Terminology optimization and context preservation', + 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', + 'personalVocabularyMemory': 'Personal vocabulary memory', + 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', + 'colorHighContrast': 'High color contrast', + 'transDisclaimer': 'Translation performance depends on microphone, network latency, and ambient noise.', + + // 商品模块 - 会议商品页 'meetingRecording': 'Meeting Recording', 'transcriptionAndSummary': 'Transcription & Summary', 'keywordSearch': 'Keyword Search', 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 'meetingHeaderDesc1': 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', 'meetingHeaderDesc2': 'Suitable for business meetings, class notes, and interview minutes.', 'meetingAutoRecording': 'Auto recording and segmentation', @@ -289,37 +348,7 @@ const Map tlPH = { 'meetingMultiPlatformShare': 'Share across platforms', 'meetingDisclaimer': 'Use in quiet environments; performance depends on microphone and network.', - // 同传/翻译商品页描述 - 'transHeaderDesc1': 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 - 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', - 'aiHeaderDesc2': 'Suitable for agent Q&A, summarization, analysis, and task execution.', - 'musicSearchPlaybackControl': 'Music library search and playback control', - 'smartPlaylistAndSimilarRecommendations': 'Smart playlist and similar song recommendations', - 'routePlanningAndCongestionAvoidance': 'Route planning and congestion avoidance', - 'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings', - 'realTimeWeatherForecast': 'Real-time weather and forecast', - 'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders', - 'poiSearchFoodGasParking': 'POI search: dining / gas / parking', - 'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing', - 'hotNewsAndTopicOverview': 'Hot news and topic overview', - 'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points', - 'helpCallAndSMS': 'Help with calls and SMS', - 'templatedMessagesAndScheduleReminders': 'Template messages and schedule reminders', - 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - - // 会员商品页 + // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', 'higherQuota': 'Higher usage quota', 'lowerUnitPrice': 'Lower unit price', @@ -334,7 +363,32 @@ const Map tlPH = { 'crossDeviceSync': 'Cross-device sync', 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Translation Basic 100', + 'trans_002_name': 'Translation Basic 500', + 'trans_003_name': 'Translation Basic 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': 'Includes 100 translations (voice/text).', + 'trans_002_desc': 'Includes 500 translations (voice/text).', + 'trans_003_desc': 'Includes 1000 translations (voice/text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': 'Laktawan', 'next': 'Next', 'sayLilyHint': 'Say "Lily Lily" to the mic', @@ -345,7 +399,6 @@ const Map tlPH = { 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', 'confirmInput': 'Confirm Input', 'guideClickSendPrefix': 'Tap send, ', - // AI 引导步骤 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', 'guideWeatherInput': 'What’s the weather today?', 'guideWeatherSend': 'Lily will report the weather in real time', @@ -371,7 +424,7 @@ const Map tlPH = { 'guideSmsSend': 'Lily will send the message', 'guideSmsEnd': 'Message sent—voice control is convenient', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Simulan ang Pulong", 'edit': 'I-edit', 'delete': 'Burahin', @@ -383,8 +436,6 @@ const Map tlPH = { 'recordingDetails': 'Mga Detalye ng Pag-record', 'aiSummary': 'Buod ng AI', 'meetingTranscript': 'Transkripsyon ng Pulong', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -437,7 +488,6 @@ const Map tlPH = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -446,6 +496,94 @@ const Map tlPH = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': 'Gumawa', + 'templateDetails': 'Mga Detalye ng Template', + 'tag': 'Tag', + 'description': 'Paglalarawan', + 'template': 'Template', + 'deleteTemplate': 'Tanggalin ang Template', + 'deleteTemplateConfirm': 'Sigurado ka bang gusto mong tanggalin ang template na ito?', + 'editTemplate': 'I-edit ang Template', + 'createTemplate': 'Gumawa ng Template', + 'name': 'Pangalan', + 'templateContentHint': 'Pakiusap maglagay ng nilalaman ng template! Tip: Pindutin ang AI button sa itaas para mabilis na bumuo ng nilalaman ng template batay sa pangalan at paglalarawan na inilagay mo', + 'inputNameHint': 'Pakiusap maglagay ng pangalan', + 'inputDescHint': 'Pakiusap maglagay ng paglalarawan', + 'custom': 'Pasadya', + 'pleaseEnter': 'Mangyaring ilagay', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'I-save ang Mind Map', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'I-export', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Ilapat sa lahat ng talata ng tagapagsalitang ito', + 'summaryWillBeUpdatedAutomatically': 'Awtomatikong maa-update ang buod batay sa template', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -464,7 +602,7 @@ const Map tlPH = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -490,8 +628,6 @@ const Map tlPH = { 'aiVoiceEnhancementDesc': 'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.', 'audioImportDesc': 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -516,101 +652,26 @@ const Map tlPH = { 'validityNote': 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Ilapat sa lahat ng talata ng tagapagsalitang ito', - 'summaryWillBeUpdatedAutomatically': 'Awtomatikong maa-update ang buod batay sa template', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': 'Summary speakers will be updated automatically', - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': 'Nabigo ang pagsusuri, pakisubukang muli mamaya', + 'transcriptionFailed': 'Nabigo ang transcription, pakisubukang muli mamaya', + 'summaryFailed': 'Nabigo ang buod, pakisubukang muli mamaya', + 'summaryFailedShort': 'Nabigo ang buod', + 'transcriptionFailedShort': 'Nabigo ang transcription', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Hindi pa handa ang audio player, pakihintay', + 'playFailed': 'Nabigo ang pag-play', + 'audioFileNotFound': 'Hindi nahanap ang audio file', + 'fetchingAudio': 'Kinukuha ang audio mula sa cloud...', + 'playerLoadFailed': 'Hindi na-load ang audio player', // 设置页 "systemSettings": "Mga Setting ng System", @@ -659,25 +720,14 @@ const Map tlPH = { "bleHeadsetFirmwareUpgrade": "Pag-upgrade ng Bersyon ng Firmware ng BLE Headset", "deviceManagement": "Pamamahala ng Device", "manageConnectedDevices": "Pamahalaan ang mga naka-pair na Bluetooth device", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Nasa pinakabagong bersyon ka na {version}', 'checkUpdateFailed': 'Nabigong suriin kung may mga update', 'networkErrorRetry': 'Error sa network, pakisubukang muli mamaya', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Real-time na Voice Chat", "realtimeVoiceChatInfo": "Damhin ang matalinong voice interaction function (feature preview)", "loading": "Naglo-load...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -692,8 +742,7 @@ const Map tlPH = { "confirmUnbindMessage": "Are you sure you want to unbind device \\", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Burahin ang Kasaysayan ng Chat", "online": "Online", @@ -723,8 +772,9 @@ const Map tlPH = { "swipeUpForMore": "Mag-swipe pataas para sa higit pa", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': 'Kapag naka-enable: Hindi maaantala ng iyong boses ang AI habang nagsasalita at isang round lang ng usapan ang kayang i-handle. Para magsimula ng bagong round, sabihin lang ang wake-up word.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -736,7 +786,7 @@ const Map tlPH = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': '你好!我是**Lily**,我能帮你:\n\n' '• 回答问题和提供信息\n\n' '• 实时语音翻译\n\n' @@ -752,18 +802,17 @@ const Map tlPH = { 'startVoiceInput': 'Simulan ang voice input', 'startPhoneCallMode': 'Simulan ang mode ng pagtawag, simulan ang voice input', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Ilagay ang iyong mensahe dito...', // 全屏编辑器输入提示 'characterCount': '{count} na character', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopyahin', 'copySuccess': 'Matagumpay na nakopya', 'report': 'I-report', 'submitSuccess': 'Matagumpay na naisumite', 'submitFailed': 'Nabigo ang pagsusumite', 'reportSubmitted': 'Naisumite na ang report, ipoproseso namin ito sa lalong madaling panahon', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Nakapipinsala/Hindi Ligtas', 'pornographicVulgar': 'Pornograpiko/Bastos', 'misleadingAttack': 'Mapanlinlang/Pag-atake', @@ -772,17 +821,14 @@ const Map tlPH = { 'copyrightViolation': 'Lumabag sa aking copyright, reputasyon, atbp.', 'other': 'Iba pa', 'reportDescriptionHint': 'Gusto naming malaman kung bakit ka nagre-report, maaari mong ilarawan ang problemang iyong naranasan.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Nilikha ng AI', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'Narito ang ilang inirerekomendang musika:', 'playList': 'Playlist', 'moreMusic': 'Higit pang Musika', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'kilometro', // 公里单位 'meters': 'metro', // 米单位 'hours': 'oras', // 小时单位 @@ -797,7 +843,7 @@ const Map tlPH = { "bicycling": "Pagbibisikleta", "tsransit": "Pampublikong Sasakyan", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Nagtatanong ng lagay ng panahon:', 'highest': 'Pinakamataas', 'lowest': 'Pinakamababa', @@ -818,18 +864,8 @@ const Map tlPH = { "friday": "Biyernes", "saturday": "Sabado", "sunday": "Linggo", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Maaraw", "partlyCloudy": "Bahagyang Maulap", "partlySunny": "Bahagyang Maaraw", @@ -850,7 +886,119 @@ const Map tlPH = { "haze": "Ulop", "strongWind": "Malakas na Hangin", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "Kasaysayan ng Pagsasalin", + "enableRecording": "Paganahin ang Pag-record", + "viewAudioFiles": "Tingnan ang mga Audio File", + "headsetUser": "User ng Headset", + "phoneUser": "User ng Telepono", + "selectSourceLanguage": "Pumili ng pinagmulang wika", + "selectTargetLanguage": "Pumili ng target na wika", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Wala pang kasaysayan", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "Burahin ang Kasaysayan", + "clearHistoryConfirm": "Sigurado ka bang gusto mong burahin ang lahat ng kasaysayan ng pagsasalin? Hindi na ito maibabalik.", + "unknownLanguage": "Hindi Kilalang Wika", + "deleteSessionRecord": "Burahin ang Record ng Session", + "deleteSessionConfirm": "Sigurado ka bang gusto mong burahin ang lahat ng record ng pagsasalin para sa session na ito? Hindi na ito maibabalik.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Isalin ang mga Audio File", + "noAudioFiles": "Wala pang mga audio file", + "calculating": "Kinakalkula...", + "playing": "Nagpe-play...", + "paused": "Naka-pause", + "clickToPlay": "I-click para i-play", + "rename": "Palitan ang pangalan", + "smartTranscription": "Matalinong Transkripsyon", + "renameAudioFile": "Palitan ang pangalan ng audio file", + "enterNewFileName": "Pakilagay ang bagong pangalan ng file", + + // 翻译模块 - 翻译详情 + "originalRecord": "Orihinal na Record", + "recordSummary": "Buod ng Record", + "clickToGenerateSummary": "I-click ang button sa ibaba para bumuo ng buod ng session", + "summaryContent": "Nilalaman ng Buod", + "copied": "Nakopya", + "summaryCopiledToClipboard": "Nakopya ang buod sa clipboard", + "extractSummary": "I-extract ang Buod", + "summaryGenerated": "Nabuong buod", + "generating": "Gumagawa...", + "regenerate": "Muling buuin", + "summaryTimeoutMessage": "Nag-time out ang kahilingan sa pagbuo ng buod, maaaring dahil sa problema sa network o abala ang server.", + "deleteTranslationRecord": "Burahin ang Record ng Pagsasalin", + "deleteTranslationConfirm": "Sigurado ka bang gusto mong burahin ang record ng pagsasalin na ito? Hindi na ito maibabalik.", + "originalText": "Orihinal na Teksto", + "translatedText": "Isinaling Teksto", + "sessionSummary": "Buod ng Session", + "cannotShare": "Hindi maibahagi", + "generateSummaryFirst": "Mangyaring bumuo muna ng buod", + "translationSessionRecord": "Record ng Session ng Pagsasalin", + + // 个人资料模块 "editProfile": "I-edit ang Personal na Impormasyon", "avatar": "Avatar", "nickname": "Palayaw", @@ -865,8 +1013,6 @@ const Map tlPH = { 'deleteAccountTips': 'Sigurado ka bang gusto mong permanenteng burahin ang iyong account? Hindi na ito maibabalik.', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'Nabigo ang koneksyon sa network, pakisuri ang iyong mga setting ng network at subukang muli', 'serverTemporarilyUnavailable': 'Pansamantalang hindi available ang server, pakisubukang muli mamaya', 'loginExpiredPleaseRelogin': 'Nag-expire na ang iyong pag-login, mangyaring mag-login muli', @@ -878,10 +1024,6 @@ const Map tlPH = { 'serverError': 'Error sa Server', 'networkConnectionFailedCheckSettings': 'Nabigo ang koneksyon sa network, pakisuri ang iyong mga setting ng network', 'serverInternalErrorRetryLater': 'Internal na error sa server, pakisubukang muli mamaya', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Nabigo ang pag-compress ng imahe', 'avatarUpdateFailed': 'Nabigo ang pag-update ng avatar', 'usernameCannotBeEmpty': 'Hindi maaaring walang laman ang username', @@ -892,8 +1034,6 @@ const Map tlPH = { 'logoutFailedRetry': 'Nabigo ang pag-logout, pakisubukang muli', 'accountPermanentlyDeleted': 'Permanenteng nabura na ang account', 'deleteAccountFailedRetry': 'Nabigong burahin ang account, pakisubukang muli', - - // 账号服务相关 'clearUserDataFailed': 'Nabigong i-clear ang data ng user', // 清理用户数据失败 'deleteUserDataFailed': 'Nabigong burahin ang data ng user', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'Matagumpay na naka-logout sa third-party', // 第三方登录退出成功 @@ -904,7 +1044,11 @@ const Map tlPH = { 'allUserDataClearSuccess': 'Matagumpay na na-clear ang lahat ng data ng user', // 所有用户数据清理成功 'accountServiceInitialized': 'Naisimulan na ang AccountService', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', 'getPermissionStatusFailed': 'Nabigong makuha ang katayuan ng pahintulot', 'communicationPermissions': 'Mga Pahintulot sa Komunikasyon', 'bluetoothPermissions': 'Bluetooth Permissions', @@ -917,7 +1061,6 @@ const Map tlPH = { 'phone': 'Telepono', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'Pagsulat sa Kalendaryo', @@ -956,8 +1099,6 @@ const Map tlPH = { 'appNeedsPermissionForFullFunction': 'Kailangan ng app ang pahintulot na ito para sa buong paggana', 'permanentDenialText': 'Permanenteng tinanggihan mo ang pahintulot sa {permission}, mangyaring pumunta sa mga setting ng app para paganahin ito', 'goToSettings': 'Pumunta sa Mga Setting', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', @@ -972,7 +1113,6 @@ const Map tlPH = { 'locationPermissionExplanation': 'Location permission is required to get current location.', 'notificationPermissionPermanentDenial': 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', 'storagePermissionExplanation': 'We need storage permission so you can select and upload audio files.', @@ -980,15 +1120,26 @@ const Map tlPH = { '检测到您已永久拒绝录音权限。如需继续使用此功能,请前往应用设置中手动开启麦克风权限。', 'storagePermissionPermanentDenial': '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - //permission_util.dart 'permissionUtilNeed': 'Need ', 'permissionUtilPermission': ' Permission', 'permissionUtilRestricted': ' Permission Restricted', 'permissionUtilRestrictedMessage': 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Nagna-navigate', + 'native.notification.navigation.keepRunning': 'Nagna-navigate, panatilihing bukas ang app', + 'native.notification.bleAgent.running': 'Tumatakbo ang voice assistant agent', + 'native.notification.audioRecording.recording': 'Nagre-record ng audio, i-tap para bumalik sa app', + 'native.notification.music.waiting': 'Naghihintay na mag-play', + 'native.notification.music.previous': 'Nakaraang', + 'native.notification.music.next': 'Susunod', + 'native.notification.music.play': 'I-play', + 'native.notification.music.pause': 'I-pause', + 'native.notification.qqMusic.playing': 'Nagpe-play ng musika', + + // 版本更新 'newVersionFound': 'May Natagpuang Bagong Bersyon', // 版本更新对话框标题 'remindLater': 'Paalalahanan Mamaya', // 稍后提醒按钮 'updateNow': 'I-update Ngayon', // 立即更新按钮 @@ -997,242 +1148,7 @@ const Map tlPH = { 'cannotOpenAppStore': 'Hindi mabuksan ang app store, mangyaring pumunta nang manu-mano sa app store para mag-update', // 无法打开应用商店提示 'updateErrorRetry': 'Nagkaroon ng error habang nag-a-update, pakisubukang muli mamaya', // 更新错误重试提示 - //国家列表 - "邮箱": "Email", - "中国": "China", - "美国": "Estados Unidos", - "加拿大": "Canada", - "俄罗斯": "Russia", - "英国": "United Kingdom", - "德国": "Germany", - "意大利": "Italy", - "法国": "France", - "西班牙": "Spain", - "南非": "South Africa", - "沙特阿拉伯": "Saudi Arabia", - "土耳其": "Turkey", - "日本": "Japan", - "韩国": "South Korea", - "新加坡": "Singapore", - "马来西亚": "Malaysia", - "泰国": "Thailand", - "越南": "Vietnam", - "印度": "India", - "巴基斯坦": "Pakistan", - "菲律宾": "Pilipinas", - "印度尼西亚": "Indonesia", - "阿联酋": "United Arab Emirates", - "墨西哥": "Mexico", - "巴西": "Brazil", - "阿根廷": "Argentina", - "澳大利亚": "Australia", - "新西兰": "New Zealand", - "中国香港": "Hong Kong (China)", - "中国澳门": "Macao (China)", - "中国台湾": "Taiwan (China)", - "埃及": "Egypt", - "希腊": "Greece", - "荷兰": "Netherlands", - "比利时": "Belgium", - "匈牙利": "Hungary", - "罗马尼亚": "Romania", - "瑞士": "Switzerland", - "奥地利": "Austria", - "丹麦": "Denmark", - "瑞典": "Sweden", - "挪威": "Norway", - "波兰": "Poland", - "秘鲁": "Peru", - "智利": "Chile", - "哥伦比亚": "Colombia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugal", - "卢森堡": "Luxembourg", - "爱尔兰": "Ireland", - "冰岛": "Iceland", - "阿尔巴尼亚": "Albania", - "马耳他": "Malta", - "塞浦路斯": "Cyprus", - "芬兰": "Finland", - "保加利亚": "Bulgaria", - "立陶宛": "Lithuania", - "拉脱维亚": "Latvia", - "爱沙尼亚": "Estonia", - "乌克兰": "Ukraine", - "塞尔维亚": "Serbia", - "克罗地亚": "Croatia", - "斯洛文尼亚": "Slovenia", - "捷克": "Czech Republic", - "斯洛伐克": "Slovakia", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolivia", - "厄瓜多尔": "Ecuador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Morocco", - "阿尔及利亚": "Algeria", - "突尼斯": "Tunisia", - "尼日利亚": "Nigeria", - "加纳": "Ghana", - "埃塞俄比亚": "Ethiopia", - "肯尼亚": "Kenya", - "坦桑尼亚": "Tanzania", - "乌干达": "Uganda", - "孟加拉国": "Bangladesh", - "以色列": "Israel", - "黎巴嫩": "Lebanon", - "约旦": "Jordan", - "伊拉克": "Iraq", - "科威特": "Kuwait", - "巴林": "Bahrain", - "卡塔尔": "Qatar", - "阿曼": "Oman", - "阿富汗": "Afghanistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongolia", - "柬埔寨": "Cambodia", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "Timor-Leste", - "斐济": "Fiji", - "所罗门群岛": "Solomon Islands", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Kasaysayan ng Pagsasalin", - "enableRecording": "Paganahin ang Pag-record", - "viewAudioFiles": "Tingnan ang mga Audio File", - "headsetUser": "User ng Headset", - "phoneUser": "User ng Telepono", - "selectSourceLanguage": "Pumili ng pinagmulang wika", - "selectTargetLanguage": "Pumili ng target na wika", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Wala pang kasaysayan", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Burahin ang Kasaysayan", - "clearHistoryConfirm": "Sigurado ka bang gusto mong burahin ang lahat ng kasaysayan ng pagsasalin? Hindi na ito maibabalik.", - "unknownLanguage": "Hindi Kilalang Wika", - "deleteSessionRecord": "Burahin ang Record ng Session", - "deleteSessionConfirm": "Sigurado ka bang gusto mong burahin ang lahat ng record ng pagsasalin para sa session na ito? Hindi na ito maibabalik.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Isalin ang mga Audio File", - "noAudioFiles": "Wala pang mga audio file", - "calculating": "Kinakalkula...", - "playing": "Nagpe-play...", - "paused": "Naka-pause", - "clickToPlay": "I-click para i-play", - "rename": "Palitan ang pangalan", - "smartTranscription": "Matalinong Transkripsyon", - "renameAudioFile": "Palitan ang pangalan ng audio file", - "enterNewFileName": "Pakilagay ang bagong pangalan ng file", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Orihinal na Record", - "recordSummary": "Buod ng Record", - "clickToGenerateSummary": "I-click ang button sa ibaba para bumuo ng buod ng session", - "summaryContent": "Nilalaman ng Buod", - "copied": "Nakopya", - "summaryCopiledToClipboard": "Nakopya ang buod sa clipboard", - "extractSummary": "I-extract ang Buod", - "summaryGenerated": "Nabuong buod", - "generating": "Gumagawa...", - "regenerate": "Muling buuin", - "summaryTimeoutMessage": "Nag-time out ang kahilingan sa pagbuo ng buod, maaaring dahil sa problema sa network o abala ang server.", - "deleteTranslationRecord": "Burahin ang Record ng Pagsasalin", - "deleteTranslationConfirm": "Sigurado ka bang gusto mong burahin ang record ng pagsasalin na ito? Hindi na ito maibabalik.", - "originalText": "Orihinal na Teksto", - "translatedText": "Isinaling Teksto", - "sessionSummary": "Buod ng Session", - "cannotShare": "Hindi maibahagi", - "generateSummaryFirst": "Mangyaring bumuo muna ng buod", - "translationSessionRecord": "Record ng Session ng Pagsasalin", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Pag-pair ng Device", "connectYourDeepSoundHeadset": "Ikonekta ang iyong Voitrans Headset", "bind": "I-bind", @@ -1241,14 +1157,11 @@ const Map tlPH = { "autoInputCode": "Awtomatikong ilagay ang code", "skipBinding": "Laktawan ang pag-bind", "rescan": "I-scan muli", - "verifyingDevice": "Bine-verify ang device...", "confirmBinding": "Kumpirmahin ang pag-bind", "associatingDevice": "Inuugnay ang device...", "goToBluetoothSettings": "Pumunta sa Mga Setting ng Bluetooth", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Handa nang i-pair", "preparingPairingEnvironment": "Inihahanda ang kapaligiran para sa pag-pair...", "connectDeepSoundViaSystemBluetooth": "Mangyaring kumonekta muna sa Voitrans device sa pamamagitan ng system Bluetooth", @@ -1256,8 +1169,6 @@ const Map tlPH = { "establishingDeviceAssociation": "Itinatatag ang ugnayan ng device...", "waitingCompletePairing": "Pakihintay, kinukumpleto ang pag-pair...", "pairingSuccessRedirecting": "Matagumpay ang pag-pair! Papunta na sa home page...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Pakitiyak na konektado ka sa isang Voitrans device", "deviceAlreadyBoundToOtherAccount": "Ang device na ito ay naka-bind na sa ibang account", "deviceAssociationFailed": "Nabigo ang pag-uugnay ng device, pakisubukang muli", @@ -1265,18 +1176,11 @@ const Map tlPH = { "networkError": "Error sa Network", "authorizationFailedCheckCode": "Nabigo ang awtorisasyon, pakisuri kung tama ang authorization code", "pairingFailedRetry": "Nabigo ang pag-pair, pakisubukang muli", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Paki-enable ang Bluetooth', 'deviceDisconnected': 'Nadiskonekta ang device', 'readyToStartPairing': 'Handa nang simulan ang pag-pair', 'checkingEnvironment': 'Sinusuri ang kapaligiran...', 'ensureHeadsetOnAndPairingMode': 'Pakitiyak na naka-on ang headset at nasa pairing mode', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Itinatatag ang secure na koneksyon...', 'needManualBindingAuthCode': 'Kailangan ng manual binding authorization code...', 'pairingSuccessful': 'Matagumpay ang pag-pair!', @@ -1295,8 +1199,6 @@ const Map tlPH = { 'blePairingStartupFailed': 'Nabigo ang pagsisimula ng BLE pairing', 'bleConnectionFailed': 'Nabigo ang koneksyon ng BLE', 'deviceAuthorizationFailedCheckCode': 'Nabigo ang awtorisasyon ng device, pakisuri ang authorization code', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 @@ -1305,7 +1207,18 @@ const Map tlPH = { 'bluetoothGuideTip': 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Feedback ng User", 'feedbackInfo': 'Magbigay ng feedback o suhestiyon', 'feedbackDescription': 'Pakilarawan ang problemang naranasan o ang iyong suhestiyon', @@ -1340,7 +1253,7 @@ const Map tlPH = { "updateContent": "Nilalaman ng Update", "removeEarbudsEnsureBattery": "Alisin ang parehong earbuds, at tiyaking parehong may 20% o higit pang baterya", - // 音乐列表页面 + // 音乐模块 "noMusic": "Walang Musika", // 暂无音乐 "noPlayingMusic": "Walang tumutugtog na musika", // 暂无播放音乐 "unknownSong": "Hindi Kilalang Kanta", // 未知歌曲 @@ -1388,20 +1301,122 @@ const Map tlPH = { "波斯语": "Persian", "斯瓦希里语": "Swahili", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": "Insufficient balance, please go to the corresponding recharge page to recharge.", - "recharge": "Go to Recharge", - // 会员到期提示 - "aiMemberExpiredDesc": "AI membership expired, please go to the membership recharge page to renew.", + // 国家列表 + "邮箱": "Email", + "中国": "China", + "美国": "Estados Unidos", + "加拿大": "Canada", + "俄罗斯": "Russia", + "英国": "United Kingdom", + "德国": "Germany", + "意大利": "Italy", + "法国": "France", + "西班牙": "Spain", + "南非": "South Africa", + "沙特阿拉伯": "Saudi Arabia", + "土耳其": "Turkey", + "日本": "Japan", + "韩国": "South Korea", + "新加坡": "Singapore", + "马来西亚": "Malaysia", + "泰国": "Thailand", + "越南": "Vietnam", + "印度": "India", + "巴基斯坦": "Pakistan", + "菲律宾": "Pilipinas", + "印度尼西亚": "Indonesia", + "阿联酋": "United Arab Emirates", + "墨西哥": "Mexico", + "巴西": "Brazil", + "阿根廷": "Argentina", + "澳大利亚": "Australia", + "新西兰": "New Zealand", + "中国香港": "Hong Kong (China)", + "中国澳门": "Macao (China)", + "中国台湾": "Taiwan (China)", + "埃及": "Egypt", + "希腊": "Greece", + "荷兰": "Netherlands", + "比利时": "Belgium", + "匈牙利": "Hungary", + "罗马尼亚": "Romania", + "瑞士": "Switzerland", + "奥地利": "Austria", + "丹麦": "Denmark", + "瑞典": "Sweden", + "挪威": "Norway", + "波兰": "Poland", + "秘鲁": "Peru", + "智利": "Chile", + "哥伦比亚": "Colombia", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portugal", + "卢森堡": "Luxembourg", + "爱尔兰": "Ireland", + "冰岛": "Iceland", + "阿尔巴尼亚": "Albania", + "马耳他": "Malta", + "塞浦路斯": "Cyprus", + "芬兰": "Finland", + "保加利亚": "Bulgaria", + "立陶宛": "Lithuania", + "拉脱维亚": "Latvia", + "爱沙尼亚": "Estonia", + "乌克兰": "Ukraine", + "塞尔维亚": "Serbia", + "克罗地亚": "Croatia", + "斯洛文尼亚": "Slovenia", + "捷克": "Czech Republic", + "斯洛伐克": "Slovakia", + "危地马拉": "Guatemala", + "萨尔瓦多": "El Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nicaragua", + "哥斯达黎加": "Costa Rica", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Bolivia", + "厄瓜多尔": "Ecuador", + "巴拉圭": "Paraguay", + "乌拉圭": "Uruguay", + "摩洛哥": "Morocco", + "阿尔及利亚": "Algeria", + "突尼斯": "Tunisia", + "尼日利亚": "Nigeria", + "加纳": "Ghana", + "埃塞俄比亚": "Ethiopia", + "肯尼亚": "Kenya", + "坦桑尼亚": "Tanzania", + "乌干达": "Uganda", + "孟加拉国": "Bangladesh", + "以色列": "Israel", + "黎巴嫩": "Lebanon", + "约旦": "Jordan", + "伊拉克": "Iraq", + "科威特": "Kuwait", + "巴林": "Bahrain", + "卡塔尔": "Qatar", + "阿曼": "Oman", + "阿富汗": "Afghanistan", + "斯里兰卡": "Sri Lanka", + "缅甸": "Myanmar", + "尼泊尔": "Nepal", + "蒙古": "Mongolia", + "柬埔寨": "Cambodia", + "老挝": "Laos", + "文莱": "Brunei", + "东帝汶": "Timor-Leste", + "斐济": "Fiji", + "所罗门群岛": "Solomon Islands", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/tr_tr.dart b/lib/core/translations/language/tr_tr.dart index a58b9b03b..44a87bfed 100644 --- a/lib/core/translations/language/tr_tr.dart +++ b/lib/core/translations/language/tr_tr.dart @@ -1,4 +1,5 @@ const Map trTR = { + // 通用 'continue': 'Devam Et', 'confirm': 'Onayla', @@ -18,6 +19,11 @@ const Map trTR = { "unknownError": "Bilinmeyen Hata", "asrConnectionFailed": "Ses tanıma servisine bağlantı başarısız oldu. Lütfen ağı kontrol edin veya daha sonra tekrar deneyin.", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "Dünyayla bağlantı kur, sesin ötesinde", @@ -28,7 +34,7 @@ const Map trTR = { "explore": "Keşfet", "settings": "Ayarlar", - // 语言 + // 语言列表 "followingSystem": "Sistemi Takip Et", "chinese": "Çince", "english": "İngilizce", @@ -72,7 +78,7 @@ const Map trTR = { "arabic": "Arapça", "persian": "Farsça", - // 登录页 + // 登录模块 "welcome": "Hoş Geldiniz", "loginTips": "Lütfen telefon numaranızı veya e-postanızı kullanarak giriş yapın veya hesap oluşturun", "accountNumber": "Telefon Numarası veya E-posta", @@ -99,12 +105,8 @@ const Map trTR = { "resendVerificationCode": "Doğrulama kodunu tekrar gönder", "login": "Giriş Yap", "usePasswordLogin": "Parolayla Giriş Yap", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans Beyanı", // Voitrans 声明 "welcomeToThisApp": "Voitrans'a hoş geldiniz, lütfen dikkatlice okuyun", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Reddet", // 不同意 @@ -159,7 +161,7 @@ const Map trTR = { 'right': 'Sağ', 'checkConnectionStatusFailed': 'Bağlantı durumu kontrol edilemedi', -// 发现页 + // 发现页 "searchAi": "Yapay zeka özelliklerini ara...", "exploreSlogan": "Akıllı Kulaklıklar, Sonsuz Olasılıklar", "exploreSlogan1": "Akıllı arkadaş, sonsuz olanaklar", @@ -182,6 +184,7 @@ const Map trTR = { "usageStats": "Kullanım İstatistikleri", "usageStatsInfo": "Kullanım istatistiklerinizi görüntüleyin", "scene": "Senaryo", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", @@ -202,7 +205,6 @@ const Map trTR = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -219,7 +221,6 @@ const Map trTR = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - // 通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", "cleanupComplete": "Cleanup Complete", @@ -227,56 +228,114 @@ const Map trTR = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', 'remaining': 'Remaining', 'featureDescription': 'Feature Description', - // AI 功能卡片 + 'paymentSuccess': 'Ödeme başarılı', + 'paymentFailed': 'Ödeme başarısız', + 'gotIt': 'Anladım', + 'paymentFailedTryAgain': 'Ödeme başarısız oldu. Lütfen tekrar deneyin.', + 'selectPaymentMethod': 'Ödeme yöntemini seçin', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'WeChat Pay siparişi oluşturulamadı', + 'alipayOrderCreateFailed': 'Alipay siparişi oluşturulamadı', + 'appleOrderCreateFailed': 'Apple siparişi oluşturulamadı', + 'googleOrderCreateFailed': 'Google siparişi oluşturulamadı', + 'paypalOrderCreateFailed': 'PayPal siparişi oluşturulamadı', + 'paymentException': 'Ödeme istisnası', + 'paymentLaunchFailed': 'Ödeme başlatılamadı', + 'paymentExceptionWithError': 'Ödeme istisnası: @error', + 'paymentProcessingCheckLater': 'Siparişiniz işleniyor. Lütfen daha sonra kontrol edin.', + 'paymentResultQueryException': 'Ödeme sonucu sorgulanamadı: @error', + 'orderConfirmedQuotaRefreshed': 'Sipariş onaylandı. Kotanız yenilendi.', + 'paymentCompletedConfirming': 'Ödeme tamamlandı. Onaylanıyor…', + 'paymentCancelled': 'Ödeme iptal edildi', + 'paypalOpenedCompleteInBrowser': 'PayPal açıldı. Lütfen tarayıcınızda ödemeyi tamamlayın.', + 'paypalOpenFailed': 'PayPal ödeme sayfası açılamıyor', + 'paymentTestTitle': 'Ödeme Testi', + 'paymentTestOrderInfo': 'Test Sipariş Bilgisi', + 'paymentTestProductId': 'Ürün Kimliği', + 'paymentTestProductDescription': 'Ürün açıklaması', + 'paymentTestWechatDescription': 'WeChat Pay ödeme testi', + 'paymentTestAlipayDescription': 'Alipay ödeme testi', + 'paymentTestAmount': 'Tutar', + 'paymentTestSelectAmount': 'Test tutarını seçin', + 'paying': 'Ödeniyor...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Ödeme durumu', + 'errorInfoWithMessage': 'Hata: @message', + 'retest': 'Yeniden Test Et', + 'paymentTestInstructionsTitle': 'Talimatlar', + 'paymentTestInstructionsContent': '1. Bir test tutarı seçin (önerilen: ¥0,01)\n2. Başlatmak için ödeme düğmesine tıklayın\n3. Ödeme uygulamasında ödemeyi tamamlayın\n4. Sonucu kontrol etmek için geri dönün', + 'startingWechatPayment': 'WeChat Pay başlatılıyor...', + 'startingAlipayPayment': 'Alipay başlatılıyor...', + 'wechatPaymentSuccess': 'WeChat Pay başarılı!', + 'wechatPaymentFailed': 'WeChat Pay başarısız', + 'wechatPaymentLaunchFailed': 'WeChat Pay başlatılamadı', + 'cannotLaunchWechatPayment': 'WeChat Pay başlatılamıyor', + 'wechatPaymentException': 'WeChat Pay istisnası', + 'wechatPaymentTestCompleted': 'WeChat Pay testi tamamlandı', + 'alipayPaymentSuccess': 'Alipay başarılı!', + 'alipayPaymentFailed': 'Alipay başarısız', + 'alipayPaymentLaunchFailed': 'Alipay başlatılamadı', + 'cannotLaunchAlipayPayment': 'Alipay başlatılamıyor', + 'alipayPaymentException': 'Alipay istisnası', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": "Insufficient balance, please go to the corresponding recharge page to recharge.", + "recharge": "Go to Recharge", + "aiMemberExpiredDesc": "AI membership expired, please go to the membership recharge page to renew.", + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 + 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', + 'aiHeaderDesc2': 'Suitable for agent Q&A, summarization, analysis, and task execution.', + 'musicSearchPlaybackControl': 'Music library search and playback control', + 'smartPlaylistAndSimilarRecommendations': 'Smart playlist and similar song recommendations', + 'routePlanningAndCongestionAvoidance': 'Route planning and congestion avoidance', + 'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings', + 'realTimeWeatherForecast': 'Real-time weather and forecast', + 'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders', + 'poiSearchFoodGasParking': 'POI search: dining / gas / parking', + 'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing', + 'hotNewsAndTopicOverview': 'Hot news and topic overview', + 'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points', + 'helpCallAndSMS': 'Help with calls and SMS', + 'templatedMessagesAndScheduleReminders': 'Template messages and schedule reminders', + 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', + + // 商品模块 - 翻译商品页 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 'sceneLexicon': 'Scenario Glossary', 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 + 'transHeaderDesc1': 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', + 'translateZhEn': 'Chinese-English translation', + 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', + 'multiLangTextTranslation': 'Multilingual text translation', + 'termOptimizationContextPreserve': 'Terminology optimization and context preservation', + 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', + 'personalVocabularyMemory': 'Personal vocabulary memory', + 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', + 'colorHighContrast': 'High color contrast', + 'transDisclaimer': 'Translation performance depends on microphone, network latency, and ambient noise.', + + // 商品模块 - 会议商品页 'meetingRecording': 'Meeting Recording', 'transcriptionAndSummary': 'Transcription & Summary', 'keywordSearch': 'Keyword Search', 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 'meetingHeaderDesc1': 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', 'meetingHeaderDesc2': 'Suitable for business meetings, class notes, and interview minutes.', 'meetingAutoRecording': 'Auto recording and segmentation', @@ -289,37 +348,7 @@ const Map trTR = { 'meetingMultiPlatformShare': 'Share across platforms', 'meetingDisclaimer': 'Use in quiet environments; performance depends on microphone and network.', - // 同传/翻译商品页描述 - 'transHeaderDesc1': 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 - 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', - 'aiHeaderDesc2': 'Suitable for agent Q&A, summarization, analysis, and task execution.', - 'musicSearchPlaybackControl': 'Music library search and playback control', - 'smartPlaylistAndSimilarRecommendations': 'Smart playlist and similar song recommendations', - 'routePlanningAndCongestionAvoidance': 'Route planning and congestion avoidance', - 'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings', - 'realTimeWeatherForecast': 'Real-time weather and forecast', - 'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders', - 'poiSearchFoodGasParking': 'POI search: dining / gas / parking', - 'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing', - 'hotNewsAndTopicOverview': 'Hot news and topic overview', - 'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points', - 'helpCallAndSMS': 'Help with calls and SMS', - 'templatedMessagesAndScheduleReminders': 'Template messages and schedule reminders', - 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - - // 会员商品页 + // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', 'higherQuota': 'Higher usage quota', 'lowerUnitPrice': 'Lower unit price', @@ -334,7 +363,32 @@ const Map trTR = { 'crossDeviceSync': 'Cross-device sync', 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Translation Basic 100', + 'trans_002_name': 'Translation Basic 500', + 'trans_003_name': 'Translation Basic 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': 'Includes 100 translations (voice/text).', + 'trans_002_desc': 'Includes 500 translations (voice/text).', + 'trans_003_desc': 'Includes 1000 translations (voice/text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': 'Atla', 'next': 'Next', 'sayLilyHint': 'Say "Lily Lily" to the mic', @@ -345,7 +399,6 @@ const Map trTR = { 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', 'confirmInput': 'Confirm Input', 'guideClickSendPrefix': 'Tap send, ', - // AI 引导步骤 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', 'guideWeatherInput': 'What’s the weather today?', 'guideWeatherSend': 'Lily will report the weather in real time', @@ -371,7 +424,7 @@ const Map trTR = { 'guideSmsSend': 'Lily will send the message', 'guideSmsEnd': 'Message sent—voice control is convenient', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Toplantıyı Başlat", 'edit': 'Düzenle', 'delete': 'Sil', @@ -383,8 +436,6 @@ const Map trTR = { 'recordingDetails': 'Kayıt Detayları', 'aiSummary': 'Yapay Zeka Özeti', 'meetingTranscript': 'Toplantı Metni', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -437,7 +488,6 @@ const Map trTR = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -446,6 +496,94 @@ const Map trTR = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': 'Oluştur', + 'templateDetails': 'Şablon Detayları', + 'tag': 'Etiket', + 'description': 'Açıklama', + 'template': 'Şablon', + 'deleteTemplate': 'Şablonu Sil', + 'deleteTemplateConfirm': 'Bu şablonu silmek istediğinizden emin misiniz?', + 'editTemplate': 'Şablonu Düzenle', + 'createTemplate': 'Şablon Oluştur', + 'name': 'Ad', + 'templateContentHint': 'Lütfen şablon içeriğini girin! İpucu: Girdiğiniz ad ve açıklamaya göre hızlıca şablon içeriği oluşturmak için yukarıdaki AI düğmesine tıklayın', + 'inputNameHint': 'Lütfen ad girin', + 'inputDescHint': 'Lütfen açıklama girin', + 'custom': 'Özel', + 'pleaseEnter': 'Lütfen girin', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Zihin Haritasını Kaydet', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'Dışa Aktar', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Bu konuşmacının tüm paragraflarına uygula', + 'summaryWillBeUpdatedAutomatically': 'Özet, şablona göre otomatik olarak güncellenecektir', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -464,7 +602,7 @@ const Map trTR = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -490,8 +628,6 @@ const Map trTR = { 'aiVoiceEnhancementDesc': 'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.', 'audioImportDesc': 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -516,101 +652,26 @@ const Map trTR = { 'validityNote': 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Bu konuşmacının tüm paragraflarına uygula', - 'summaryWillBeUpdatedAutomatically': 'Özet, şablona göre otomatik olarak güncellenecektir', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': 'Summary speakers will be updated automatically', - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': 'Analiz başarısız oldu, lütfen daha sonra tekrar deneyin', + 'transcriptionFailed': 'Transkripsiyon başarısız oldu, lütfen daha sonra tekrar deneyin', + 'summaryFailed': 'Özet başarısız oldu, lütfen daha sonra tekrar deneyin', + 'summaryFailedShort': 'Özet başarısız', + 'transcriptionFailedShort': 'Transkripsiyon başarısız', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Ses oynatıcı hazır değil, lütfen bekleyin', + 'playFailed': 'Oynatma başarısız', + 'audioFileNotFound': 'Ses dosyası bulunamadı', + 'fetchingAudio': 'Buluttan ses alınıyor...', + 'playerLoadFailed': 'Ses oynatıcı yüklenemedi', // 设置页 "systemSettings": "Sistem Ayarları", @@ -659,25 +720,14 @@ const Map trTR = { "bleHeadsetFirmwareUpgrade": "BLE Kulaklık Donanım Yazılımı Sürüm Güncellemesi", "deviceManagement": "Cihaz Yönetimi", "manageConnectedDevices": "Bağlı Bluetooth cihazlarını yönetin", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Şu anda en son sürümdesiniz {version}', 'checkUpdateFailed': 'Güncellemeler kontrol edilemedi', 'networkErrorRetry': 'Ağ hatası, lütfen daha sonra tekrar deneyin', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Gerçek Zamanlı Sesli Sohbet", "realtimeVoiceChatInfo": "Akıllı sesli etkileşim özelliğini deneyimleyin (Özellik Önizlemesi)", "loading": "Yükleniyor...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -692,8 +742,7 @@ const Map trTR = { "confirmUnbindMessage": "Are you sure you want to unbind device \\", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Sohbet Geçmişini Temizle", "online": "Çevrimiçi", @@ -723,8 +772,9 @@ const Map trTR = { "swipeUpForMore": "Daha fazlası için yukarı kaydırın", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': 'Etkinleştirildiğinde: AI konuşurken sesiniz tarafından kesintiye uğramaz ve aynı anda yalnızca bir konuşma turunu işleyebilir. Yeni bir tur başlatmak için uyandırma kelimesini söyleyin.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -736,7 +786,7 @@ const Map trTR = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': '你好!我是**Lily**,我能帮你:\n\n' '• 回答问题和提供信息\n\n' '• 实时语音翻译\n\n' @@ -752,18 +802,17 @@ const Map trTR = { 'startVoiceInput': 'Sesli girişi başlat', 'startPhoneCallMode': 'Arama modunu başlat, sesli girişi başlat', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Mesajınızı buraya girin...', // 全屏编辑器输入提示 'characterCount': '{count} karakter', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopyala', 'copySuccess': 'Başarıyla kopyalandı', 'report': 'Şikayet Et', 'submitSuccess': 'Başarıyla gönderildi', 'submitFailed': 'Gönderim başarısız', 'reportSubmitted': 'Şikayetiniz gönderildi, en kısa sürede işleme alacağız', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Zararlı/Güvensiz', 'pornographicVulgar': 'Pornografik/Kaba', 'misleadingAttack': 'Yanıltıcı/Saldırgan', @@ -772,17 +821,14 @@ const Map trTR = { 'copyrightViolation': 'Telif hakkımı, itibarımı vb. ihlal ediyor', 'other': 'Diğer', 'reportDescriptionHint': 'Şikayet nedeninizi öğrenmek istiyoruz, karşılaştığınız sorunu açıklayabilirsiniz.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Yapay Zeka tarafından oluşturuldu', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'İşte bazı önerilen müzikler:', 'playList': 'Çalma Listesi', 'moreMusic': 'Daha Fazla Müzik', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'saat', // 小时单位 @@ -797,7 +843,7 @@ const Map trTR = { "bicycling": "Bisiklet", "tsransit": "Toplu Taşıma", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Hava durumu sorgulanıyor:', 'highest': 'En Yüksek', 'lowest': 'En Düşük', @@ -818,18 +864,8 @@ const Map trTR = { "friday": "Cum", "saturday": "Cmt", "sunday": "Paz", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Güneşli", "partlyCloudy": "Az Bulutlu", "partlySunny": "Parçalı Güneşli", @@ -850,7 +886,119 @@ const Map trTR = { "haze": "Pus", "strongWind": "Şiddetli Rüzgar", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "Çeviri Geçmişi", + "enableRecording": "Kaydı Etkinleştir", + "viewAudioFiles": "Ses Dosyalarını Görüntüle", + "headsetUser": "Kulaklık Kullanıcısı", + "phoneUser": "Telefon Kullanıcısı", + "selectSourceLanguage": "Kaynak Dil Seç", + "selectTargetLanguage": "Hedef Dil Seç", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Henüz geçmiş yok", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "Geçmişi Temizle", + "clearHistoryConfirm": "Tüm çeviri geçmişini temizlemek istediğinizden emin misiniz? Bu işlem geri alınamaz.", + "unknownLanguage": "Bilinmeyen Dil", + "deleteSessionRecord": "Oturum Kaydını Sil", + "deleteSessionConfirm": "Bu oturumun tüm çeviri kayıtlarını silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Ses Dosyalarını Çevir", + "noAudioFiles": "Henüz ses dosyası yok", + "calculating": "Hesaplanıyor...", + "playing": "Oynatılıyor...", + "paused": "Duraklatıldı", + "clickToPlay": "Oynatmak için tıklayın", + "rename": "Yeniden Adlandır", + "smartTranscription": "Akıllı Metne Çevirme", + "renameAudioFile": "Ses Dosyasını Yeniden Adlandır", + "enterNewFileName": "Lütfen yeni bir dosya adı girin", + + // 翻译模块 - 翻译详情 + "originalRecord": "Orijinal Kayıt", + "recordSummary": "Kayıt Özeti", + "clickToGenerateSummary": "Oturum özeti oluşturmak için aşağıdaki düğmeye tıklayın", + "summaryContent": "Özet İçeriği", + "copied": "Kopyalandı", + "summaryCopiledToClipboard": "Özet panoya kopyalandı", + "extractSummary": "Özeti Çıkar", + "summaryGenerated": "Özet oluşturuldu", + "generating": "Oluşturuluyor...", + "regenerate": "Yeniden Oluştur", + "summaryTimeoutMessage": "Özet oluşturma isteği zaman aşımına uğradı. Ağ sorunları veya sunucu yoğunluğu olabilir.", + "deleteTranslationRecord": "Çeviri Kaydını Sil", + "deleteTranslationConfirm": "Bu çeviri kaydını silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.", + "originalText": "Orijinal Metin", + "translatedText": "Çevrilmiş Metin", + "sessionSummary": "Oturum Özeti", + "cannotShare": "Paylaşılamıyor", + "generateSummaryFirst": "Lütfen önce bir özet oluşturun", + "translationSessionRecord": "Çeviri Oturumu Kaydı", + + // 个人资料模块 "editProfile": "Profili Düzenle", "avatar": "Avatar", "nickname": "Takma Ad", @@ -865,8 +1013,6 @@ const Map trTR = { 'deleteAccountTips': 'Hesabınızı kalıcı olarak silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'Ağ bağlantısı başarısız, lütfen ağ ayarlarını kontrol edip tekrar deneyin', 'serverTemporarilyUnavailable': 'Sunucu geçici olarak yanıt vermiyor, lütfen daha sonra tekrar deneyin', 'loginExpiredPleaseRelogin': 'Oturum süresi doldu, lütfen tekrar giriş yapın', @@ -878,10 +1024,6 @@ const Map trTR = { 'serverError': 'Sunucu Hatası', 'networkConnectionFailedCheckSettings': 'Ağ bağlantısı başarısız, lütfen ağ ayarlarını kontrol edin', 'serverInternalErrorRetryLater': 'Sunucu iç hatası, lütfen daha sonra tekrar deneyin', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Resim sıkıştırılamadı', 'avatarUpdateFailed': 'Avatar güncellenemedi', 'usernameCannotBeEmpty': 'Kullanıcı adı boş olamaz', @@ -892,8 +1034,6 @@ const Map trTR = { 'logoutFailedRetry': 'Çıkış yapılamadı, lütfen tekrar deneyin', 'accountPermanentlyDeleted': 'Hesap kalıcı olarak silindi', 'deleteAccountFailedRetry': 'Hesap silinemedi, lütfen tekrar deneyin', - - // 账号服务相关 'clearUserDataFailed': 'Kullanıcı verileri temizlenemedi', // 清理用户数据失败 'deleteUserDataFailed': 'Kullanıcı verileri silinemedi', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'Üçüncü taraf oturumu başarıyla kapatıldı', // 第三方登录退出成功 @@ -904,7 +1044,11 @@ const Map trTR = { 'allUserDataClearSuccess': 'Tüm kullanıcı verileri başarıyla temizlendi', // 所有用户数据清理成功 'accountServiceInitialized': 'Hesap Hizmeti başlatıldı', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', 'getPermissionStatusFailed': 'İzin durumu alınamadı', 'communicationPermissions': 'İletişim İzinleri', 'bluetoothPermissions': 'Bluetooth Permissions', @@ -917,7 +1061,6 @@ const Map trTR = { 'phone': 'Telefon', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'Takvime Yaz', @@ -956,8 +1099,6 @@ const Map trTR = { 'appNeedsPermissionForFullFunction': 'Uygulamanın tam işlevsellik için bu izne ihtiyacı var', 'permanentDenialText': '{permission} iznini kalıcı olarak reddettiniz, lütfen etkinleştirmek için uygulama ayarlarına gidin', 'goToSettings': 'Ayarlara Git', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', @@ -972,7 +1113,6 @@ const Map trTR = { 'locationPermissionExplanation': 'Location permission is required to get current location.', 'notificationPermissionPermanentDenial': 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', 'storagePermissionExplanation': 'We need storage permission so you can select and upload audio files.', @@ -980,15 +1120,26 @@ const Map trTR = { '检测到您已永久拒绝录音权限。如需继续使用此功能,请前往应用设置中手动开启麦克风权限。', 'storagePermissionPermanentDenial': '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - //permission_util.dart 'permissionUtilNeed': 'Need ', 'permissionUtilPermission': ' Permission', 'permissionUtilRestricted': ' Permission Restricted', 'permissionUtilRestrictedMessage': 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigasyon devam ediyor', + 'native.notification.navigation.keepRunning': 'Navigasyon yapılıyor, uygulamayı açık tutun', + 'native.notification.bleAgent.running': 'Sesli asistan ajanı çalışıyor', + 'native.notification.audioRecording.recording': 'Ses kaydediliyor, uygulamaya dönmek için dokunun', + 'native.notification.music.waiting': 'Oynatma bekleniyor', + 'native.notification.music.previous': 'Önceki', + 'native.notification.music.next': 'Sonraki', + 'native.notification.music.play': 'Oynat', + 'native.notification.music.pause': 'Duraklat', + 'native.notification.qqMusic.playing': 'Müzik çalınıyor', + + // 版本更新 'newVersionFound': 'Yeni Sürüm Bulundu', // 版本更新对话框标题 'remindLater': 'Daha Sonra Hatırlat', // 稍后提醒按钮 'updateNow': 'Şimdi Güncelle', // 立即更新按钮 @@ -997,242 +1148,7 @@ const Map trTR = { 'cannotOpenAppStore': 'Uygulama mağazası açılamıyor, lütfen güncellemek için manuel olarak gidin', // 无法打开应用商店提示 'updateErrorRetry': 'Güncelleme sırasında bir hata oluştu, lütfen daha sonra tekrar deneyin', // 更新错误重试提示 - //国家列表 - "邮箱": "E-posta", - "中国": "Çin", - "美国": "Amerika Birleşik Devletleri", - "加拿大": "Kanada", - "俄罗斯": "Rusya", - "英国": "Birleşik Krallık", - "德国": "Almanya", - "意大利": "İtalya", - "法国": "Fransa", - "西班牙": "İspanya", - "南非": "Güney Afrika", - "沙特阿拉伯": "Suudi Arabistan", - "土耳其": "Türkiye", - "日本": "Japonya", - "韩国": "Güney Kore", - "新加坡": "Singapur", - "马来西亚": "Malezya", - "泰国": "Tayland", - "越南": "Vietnam", - "印度": "Hindistan", - "巴基斯坦": "Pakistan", - "菲律宾": "Filipinler", - "印度尼西亚": "Endonezya", - "阿联酋": "Birleşik Arap Emirlikleri", - "墨西哥": "Meksika", - "巴西": "Brezilya", - "阿根廷": "Arjantin", - "澳大利亚": "Avustralya", - "新西兰": "Yeni Zelanda", - "中国香港": "Hong Kong, Çin", - "中国澳门": "Makao, Çin", - "中国台湾": "Tayvan, Çin", - "埃及": "Mısır", - "希腊": "Yunanistan", - "荷兰": "Hollanda", - "比利时": "Belçika", - "匈牙利": "Macaristan", - "罗马尼亚": "Romanya", - "瑞士": "İsviçre", - "奥地利": "Avusturya", - "丹麦": "Danimarka", - "瑞典": "İsveç", - "挪威": "Norveç", - "波兰": "Polonya", - "秘鲁": "Peru", - "智利": "Şili", - "哥伦比亚": "Kolombiya", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portekiz", - "卢森堡": "Lüksemburg", - "爱尔兰": "İrlanda", - "冰岛": "İzlanda", - "阿尔巴尼亚": "Arnavutluk", - "马耳他": "Malta", - "塞浦路斯": "Kıbrıs", - "芬兰": "Finlandiya", - "保加利亚": "Bulgaristan", - "立陶宛": "Litvanya", - "拉脱维亚": "Letonya", - "爱沙尼亚": "Estonya", - "乌克兰": "Ukrayna", - "塞尔维亚": "Sırbistan", - "克罗地亚": "Hırvatistan", - "斯洛文尼亚": "Slovenya", - "捷克": "Çek Cumhuriyeti", - "斯洛伐克": "Slovakya", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nikaragua", - "哥斯达黎加": "Kosta Rika", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolivya", - "厄瓜多尔": "Ekvador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Fas", - "阿尔及利亚": "Cezayir", - "突尼斯": "Tunus", - "尼日利亚": "Nijerya", - "加纳": "Gana", - "埃塞俄比亚": "Etiyopya", - "肯尼亚": "Kenya", - "坦桑尼亚": "Tanzanya", - "乌干达": "Uganda", - "孟加拉国": "Bangladeş", - "以色列": "İsrail", - "黎巴嫩": "Lübnan", - "约旦": "Ürdün", - "伊拉克": "Irak", - "科威特": "Kuveyt", - "巴林": "Bahreyn", - "卡塔尔": "Katar", - "阿曼": "Umman", - "阿富汗": "Afganistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepal", - "蒙古": "Moğolistan", - "柬埔寨": "Kamboçya", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "Doğu Timor", - "斐济": "Fiji", - "所罗门群岛": "Solomon Adaları", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Çeviri Geçmişi", - "enableRecording": "Kaydı Etkinleştir", - "viewAudioFiles": "Ses Dosyalarını Görüntüle", - "headsetUser": "Kulaklık Kullanıcısı", - "phoneUser": "Telefon Kullanıcısı", - "selectSourceLanguage": "Kaynak Dil Seç", - "selectTargetLanguage": "Hedef Dil Seç", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Henüz geçmiş yok", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Geçmişi Temizle", - "clearHistoryConfirm": "Tüm çeviri geçmişini temizlemek istediğinizden emin misiniz? Bu işlem geri alınamaz.", - "unknownLanguage": "Bilinmeyen Dil", - "deleteSessionRecord": "Oturum Kaydını Sil", - "deleteSessionConfirm": "Bu oturumun tüm çeviri kayıtlarını silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Ses Dosyalarını Çevir", - "noAudioFiles": "Henüz ses dosyası yok", - "calculating": "Hesaplanıyor...", - "playing": "Oynatılıyor...", - "paused": "Duraklatıldı", - "clickToPlay": "Oynatmak için tıklayın", - "rename": "Yeniden Adlandır", - "smartTranscription": "Akıllı Metne Çevirme", - "renameAudioFile": "Ses Dosyasını Yeniden Adlandır", - "enterNewFileName": "Lütfen yeni bir dosya adı girin", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Orijinal Kayıt", - "recordSummary": "Kayıt Özeti", - "clickToGenerateSummary": "Oturum özeti oluşturmak için aşağıdaki düğmeye tıklayın", - "summaryContent": "Özet İçeriği", - "copied": "Kopyalandı", - "summaryCopiledToClipboard": "Özet panoya kopyalandı", - "extractSummary": "Özeti Çıkar", - "summaryGenerated": "Özet oluşturuldu", - "generating": "Oluşturuluyor...", - "regenerate": "Yeniden Oluştur", - "summaryTimeoutMessage": "Özet oluşturma isteği zaman aşımına uğradı. Ağ sorunları veya sunucu yoğunluğu olabilir.", - "deleteTranslationRecord": "Çeviri Kaydını Sil", - "deleteTranslationConfirm": "Bu çeviri kaydını silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.", - "originalText": "Orijinal Metin", - "translatedText": "Çevrilmiş Metin", - "sessionSummary": "Oturum Özeti", - "cannotShare": "Paylaşılamıyor", - "generateSummaryFirst": "Lütfen önce bir özet oluşturun", - "translationSessionRecord": "Çeviri Oturumu Kaydı", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Cihaz Eşleştirme", "connectYourDeepSoundHeadset": "Voitrans Kulaklığınızı Bağlayın", "bind": "Bağla", @@ -1241,14 +1157,11 @@ const Map trTR = { "autoInputCode": "Kodu otomatik gir", "skipBinding": "Bağlamayı Atla", "rescan": "Yeniden Tara", - "verifyingDevice": "Cihaz doğrulanıyor...", "confirmBinding": "Bağlamayı Onayla", "associatingDevice": "Cihaz ilişkilendiriliyor...", "goToBluetoothSettings": "Bluetooth Ayarlarına Git", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Eşleştirmeye hazır", "preparingPairingEnvironment": "Eşleştirme ortamı hazırlanıyor...", "connectDeepSoundViaSystemBluetooth": "Lütfen önce sistem Bluetooth'u üzerinden Voitrans cihazına bağlanın", @@ -1256,8 +1169,6 @@ const Map trTR = { "establishingDeviceAssociation": "Cihaz ilişkisi kuruluyor...", "waitingCompletePairing": "Lütfen bekleyin, eşleştirme tamamlanıyor...", "pairingSuccessRedirecting": "Eşleştirme başarılı! Ana sayfaya yönlendiriliyor...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Lütfen bir Voitrans cihazına bağlı olduğunuzdan emin olun", "deviceAlreadyBoundToOtherAccount": "Bu cihaz başka bir hesaba zaten bağlı", "deviceAssociationFailed": "Cihaz ilişkisi kurulamadı, lütfen tekrar deneyin", @@ -1265,18 +1176,11 @@ const Map trTR = { "networkError": "Ağ Hatası", "authorizationFailedCheckCode": "Yetkilendirme başarısız, lütfen yetkilendirme kodunun doğru olup olmadığını kontrol edin", "pairingFailedRetry": "Eşleştirme başarısız, lütfen tekrar deneyin", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Lütfen Bluetooth\\', 'deviceDisconnected': 'Cihaz bağlantısı kesildi', 'readyToStartPairing': 'Eşleştirmeye başlamaya hazır', 'checkingEnvironment': 'Ortam kontrol ediliyor...', 'ensureHeadsetOnAndPairingMode': 'Lütfen kulaklığın açık ve eşleştirme modunda olduğundan emin olun', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Güvenli bağlantı kuruluyor...', 'needManualBindingAuthCode': 'Manuel bağlama yetkilendirme kodu gerekli...', 'pairingSuccessful': 'Eşleştirme başarılı!', @@ -1295,8 +1199,6 @@ const Map trTR = { 'blePairingStartupFailed': 'BLE eşleştirmesi başlatılamadı', 'bleConnectionFailed': 'BLE bağlantısı başarısız', 'deviceAuthorizationFailedCheckCode': 'Cihaz yetkilendirmesi başarısız, lütfen yetkilendirme kodunu kontrol edin', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 @@ -1305,7 +1207,18 @@ const Map trTR = { 'bluetoothGuideTip': 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Kullanıcı Geri Bildirimi", 'feedbackInfo': 'Geri bildirim veya öneri sağlayın', 'feedbackDescription': 'Lütfen karşılaştığınız sorunu veya önerinizi açıklayın', @@ -1340,7 +1253,7 @@ const Map trTR = { "updateContent": "Güncelleme İçeriği", "removeEarbudsEnsureBattery": "Her iki kulaklığı da çıkarın ve pil seviyelerinin %20'un üzerinde olduğundan emin olun", - // 音乐列表页面 + // 音乐模块 "noMusic": "Müzik Yok", // 暂无音乐 "noPlayingMusic": "Çalan Müzik Yok", // 暂无播放音乐 "unknownSong": "Bilinmeyen Şarkı", // 未知歌曲 @@ -1388,20 +1301,122 @@ const Map trTR = { "波斯语": "Farsça", "斯瓦希里语": "Svahili", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": "Insufficient balance, please go to the corresponding recharge page to recharge.", - "recharge": "Go to Recharge", - // 会员到期提示 - "aiMemberExpiredDesc": "AI membership expired, please go to the membership recharge page to renew.", + // 国家列表 + "邮箱": "E-posta", + "中国": "Çin", + "美国": "Amerika Birleşik Devletleri", + "加拿大": "Kanada", + "俄罗斯": "Rusya", + "英国": "Birleşik Krallık", + "德国": "Almanya", + "意大利": "İtalya", + "法国": "Fransa", + "西班牙": "İspanya", + "南非": "Güney Afrika", + "沙特阿拉伯": "Suudi Arabistan", + "土耳其": "Türkiye", + "日本": "Japonya", + "韩国": "Güney Kore", + "新加坡": "Singapur", + "马来西亚": "Malezya", + "泰国": "Tayland", + "越南": "Vietnam", + "印度": "Hindistan", + "巴基斯坦": "Pakistan", + "菲律宾": "Filipinler", + "印度尼西亚": "Endonezya", + "阿联酋": "Birleşik Arap Emirlikleri", + "墨西哥": "Meksika", + "巴西": "Brezilya", + "阿根廷": "Arjantin", + "澳大利亚": "Avustralya", + "新西兰": "Yeni Zelanda", + "中国香港": "Hong Kong, Çin", + "中国澳门": "Makao, Çin", + "中国台湾": "Tayvan, Çin", + "埃及": "Mısır", + "希腊": "Yunanistan", + "荷兰": "Hollanda", + "比利时": "Belçika", + "匈牙利": "Macaristan", + "罗马尼亚": "Romanya", + "瑞士": "İsviçre", + "奥地利": "Avusturya", + "丹麦": "Danimarka", + "瑞典": "İsveç", + "挪威": "Norveç", + "波兰": "Polonya", + "秘鲁": "Peru", + "智利": "Şili", + "哥伦比亚": "Kolombiya", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portekiz", + "卢森堡": "Lüksemburg", + "爱尔兰": "İrlanda", + "冰岛": "İzlanda", + "阿尔巴尼亚": "Arnavutluk", + "马耳他": "Malta", + "塞浦路斯": "Kıbrıs", + "芬兰": "Finlandiya", + "保加利亚": "Bulgaristan", + "立陶宛": "Litvanya", + "拉脱维亚": "Letonya", + "爱沙尼亚": "Estonya", + "乌克兰": "Ukrayna", + "塞尔维亚": "Sırbistan", + "克罗地亚": "Hırvatistan", + "斯洛文尼亚": "Slovenya", + "捷克": "Çek Cumhuriyeti", + "斯洛伐克": "Slovakya", + "危地马拉": "Guatemala", + "萨尔瓦多": "El Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nikaragua", + "哥斯达黎加": "Kosta Rika", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Bolivya", + "厄瓜多尔": "Ekvador", + "巴拉圭": "Paraguay", + "乌拉圭": "Uruguay", + "摩洛哥": "Fas", + "阿尔及利亚": "Cezayir", + "突尼斯": "Tunus", + "尼日利亚": "Nijerya", + "加纳": "Gana", + "埃塞俄比亚": "Etiyopya", + "肯尼亚": "Kenya", + "坦桑尼亚": "Tanzanya", + "乌干达": "Uganda", + "孟加拉国": "Bangladeş", + "以色列": "İsrail", + "黎巴嫩": "Lübnan", + "约旦": "Ürdün", + "伊拉克": "Irak", + "科威特": "Kuveyt", + "巴林": "Bahreyn", + "卡塔尔": "Katar", + "阿曼": "Umman", + "阿富汗": "Afganistan", + "斯里兰卡": "Sri Lanka", + "缅甸": "Myanmar", + "尼泊尔": "Nepal", + "蒙古": "Moğolistan", + "柬埔寨": "Kamboçya", + "老挝": "Laos", + "文莱": "Brunei", + "东帝汶": "Doğu Timor", + "斐济": "Fiji", + "所罗门群岛": "Solomon Adaları", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/uk_ua.dart b/lib/core/translations/language/uk_ua.dart index 0bf99ad19..10ae3405d 100644 --- a/lib/core/translations/language/uk_ua.dart +++ b/lib/core/translations/language/uk_ua.dart @@ -1,4 +1,5 @@ const Map ukUA = { + // 通用 'continue': 'Продовжити', 'confirm': 'Підтвердити', @@ -18,6 +19,11 @@ const Map ukUA = { "unknownError": "Невідома помилка", "asrConnectionFailed": "Не вдалося підключитися до служби розпізнавання мовлення. Перевірте мережу або спробуйте пізніше ще раз.", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "З'єднуючи світ, більше ніж просто звук", @@ -28,7 +34,7 @@ const Map ukUA = { "explore": "Огляд", "settings": "Налаштування", - // 语言 + // 语言列表 "followingSystem": "За системою", "chinese": "Китайська", "english": "Англійська", @@ -72,7 +78,7 @@ const Map ukUA = { "arabic": "Арабська", "persian": "Персська", - // 登录页 + // 登录模块 "welcome": "Ласкаво просимо", "loginTips": "Увійдіть або зареєструйтеся за допомогою номера телефону або електронної пошти", "accountNumber": "Номер телефону або Email", @@ -99,12 +105,8 @@ const Map ukUA = { "resendVerificationCode": "Надіслати код ще раз", "login": "Увійти", "usePasswordLogin": "Увійти за паролем", - - // 隐私政策弹窗 "loginDeclaration": "Декларація Voitrans", // Voitrans 声明 "welcomeToThisApp": "Ласкаво просимо до Voitrans, будь ласка, уважно прочитайте", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Не погоджуватися", // 不同意 @@ -159,7 +161,7 @@ const Map ukUA = { 'right': 'Право', 'checkConnectionStatusFailed': 'Не вдалося перевірити статус підключення', -// 发现页 + // 发现页 "searchAi": "Пошук функцій AI...", "exploreSlogan": "Розумні навушники, безмежні можливості", "exploreSlogan1": "Розумний компаньйон, безмежні можливості", @@ -182,6 +184,7 @@ const Map ukUA = { "usageStats": "Статистика використання", "usageStatsInfo": "Перегляньте статистику використання вашого пристрою", "scene": "Сценарій", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", @@ -202,7 +205,6 @@ const Map ukUA = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -219,7 +221,6 @@ const Map ukUA = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - // 通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", "cleanupComplete": "Cleanup Complete", @@ -227,56 +228,114 @@ const Map ukUA = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', 'remaining': 'Remaining', 'featureDescription': 'Feature Description', - // AI 功能卡片 + 'paymentSuccess': 'Оплата пройшла успішно', + 'paymentFailed': 'Оплата не вдалася', + 'gotIt': 'Зрозуміло', + 'paymentFailedTryAgain': 'Оплата не вдалася. Спробуйте ще раз.', + 'selectPaymentMethod': 'Виберіть спосіб оплати', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Не вдалося створити замовлення WeChat', + 'alipayOrderCreateFailed': 'Не вдалося створити замовлення Alipay', + 'appleOrderCreateFailed': 'Не вдалося створити замовлення Apple', + 'googleOrderCreateFailed': 'Не вдалося створити замовлення Google', + 'paypalOrderCreateFailed': 'Не вдалося створити замовлення PayPal', + 'paymentException': 'Помилка оплати', + 'paymentLaunchFailed': 'Не вдалося запустити оплату', + 'paymentExceptionWithError': 'Помилка оплати: @error', + 'paymentProcessingCheckLater': 'Ваше замовлення обробляється. Перевірте пізніше.', + 'paymentResultQueryException': 'Не вдалося отримати результат оплати: @error', + 'orderConfirmedQuotaRefreshed': 'Замовлення підтверджено. Вашу квоту оновлено.', + 'paymentCompletedConfirming': 'Оплата завершена. Підтвердження…', + 'paymentCancelled': 'Оплату скасовано', + 'paypalOpenedCompleteInBrowser': 'PayPal відкрито. Завершіть оплату в браузері.', + 'paypalOpenFailed': 'Не вдалося відкрити сторінку оплати PayPal', + 'paymentTestTitle': 'Тест оплати', + 'paymentTestOrderInfo': 'Інформація про тестове замовлення', + 'paymentTestProductId': 'ID товару', + 'paymentTestProductDescription': 'Опис товару', + 'paymentTestWechatDescription': 'Тест оплати через WeChat', + 'paymentTestAlipayDescription': 'Тест оплати через Alipay', + 'paymentTestAmount': 'Сума', + 'paymentTestSelectAmount': 'Виберіть тестову суму', + 'paying': 'Оплата...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Статус оплати', + 'errorInfoWithMessage': 'Помилка: @message', + 'retest': 'Повторний тест', + 'paymentTestInstructionsTitle': 'Інструкція', + 'paymentTestInstructionsContent': '1. Виберіть тестову суму (рекомендовано: ¥0.01)\n2. Натисніть кнопку оплати для початку\n3. Завершіть оплату в додатку для оплати\n4. Поверніться, щоб перевірити результат', + 'startingWechatPayment': 'Запуск WeChat Pay...', + 'startingAlipayPayment': 'Запуск Alipay...', + 'wechatPaymentSuccess': 'Оплата через WeChat Pay пройшла успішно!', + 'wechatPaymentFailed': 'Оплата через WeChat Pay не вдалася', + 'wechatPaymentLaunchFailed': 'Не вдалося запустити WeChat Pay', + 'cannotLaunchWechatPayment': 'Неможливо запустити WeChat Pay', + 'wechatPaymentException': 'Помилка WeChat Pay', + 'wechatPaymentTestCompleted': 'Тест оплати WeChat Pay завершено', + 'alipayPaymentSuccess': 'Оплата через Alipay пройшла успішно!', + 'alipayPaymentFailed': 'Оплата через Alipay не вдалася', + 'alipayPaymentLaunchFailed': 'Не вдалося запустити Alipay', + 'cannotLaunchAlipayPayment': 'Неможливо запустити Alipay', + 'alipayPaymentException': 'Помилка Alipay', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": "Insufficient balance, please go to the corresponding recharge page to recharge.", + "recharge": "Go to Recharge", + "aiMemberExpiredDesc": "AI membership expired, please go to the membership recharge page to renew.", + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 + 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', + 'aiHeaderDesc2': 'Suitable for agent Q&A, summarization, analysis, and task execution.', + 'musicSearchPlaybackControl': 'Music library search and playback control', + 'smartPlaylistAndSimilarRecommendations': 'Smart playlist and similar song recommendations', + 'routePlanningAndCongestionAvoidance': 'Route planning and congestion avoidance', + 'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings', + 'realTimeWeatherForecast': 'Real-time weather and forecast', + 'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders', + 'poiSearchFoodGasParking': 'POI search: dining / gas / parking', + 'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing', + 'hotNewsAndTopicOverview': 'Hot news and topic overview', + 'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points', + 'helpCallAndSMS': 'Help with calls and SMS', + 'templatedMessagesAndScheduleReminders': 'Template messages and schedule reminders', + 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', + + // 商品模块 - 翻译商品页 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 'sceneLexicon': 'Scenario Glossary', 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 + 'transHeaderDesc1': 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', + 'translateZhEn': 'Chinese-English translation', + 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', + 'multiLangTextTranslation': 'Multilingual text translation', + 'termOptimizationContextPreserve': 'Terminology optimization and context preservation', + 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', + 'personalVocabularyMemory': 'Personal vocabulary memory', + 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', + 'colorHighContrast': 'High color contrast', + 'transDisclaimer': 'Translation performance depends on microphone, network latency, and ambient noise.', + + // 商品模块 - 会议商品页 'meetingRecording': 'Meeting Recording', 'transcriptionAndSummary': 'Transcription & Summary', 'keywordSearch': 'Keyword Search', 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 'meetingHeaderDesc1': 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', 'meetingHeaderDesc2': 'Suitable for business meetings, class notes, and interview minutes.', 'meetingAutoRecording': 'Auto recording and segmentation', @@ -289,37 +348,7 @@ const Map ukUA = { 'meetingMultiPlatformShare': 'Share across platforms', 'meetingDisclaimer': 'Use in quiet environments; performance depends on microphone and network.', - // 同传/翻译商品页描述 - 'transHeaderDesc1': 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 - 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', - 'aiHeaderDesc2': 'Suitable for agent Q&A, summarization, analysis, and task execution.', - 'musicSearchPlaybackControl': 'Music library search and playback control', - 'smartPlaylistAndSimilarRecommendations': 'Smart playlist and similar song recommendations', - 'routePlanningAndCongestionAvoidance': 'Route planning and congestion avoidance', - 'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings', - 'realTimeWeatherForecast': 'Real-time weather and forecast', - 'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders', - 'poiSearchFoodGasParking': 'POI search: dining / gas / parking', - 'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing', - 'hotNewsAndTopicOverview': 'Hot news and topic overview', - 'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points', - 'helpCallAndSMS': 'Help with calls and SMS', - 'templatedMessagesAndScheduleReminders': 'Template messages and schedule reminders', - 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - - // 会员商品页 + // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', 'higherQuota': 'Higher usage quota', 'lowerUnitPrice': 'Lower unit price', @@ -334,7 +363,32 @@ const Map ukUA = { 'crossDeviceSync': 'Cross-device sync', 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Translation Basic 100', + 'trans_002_name': 'Translation Basic 500', + 'trans_003_name': 'Translation Basic 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': 'Includes 100 translations (voice/text).', + 'trans_002_desc': 'Includes 500 translations (voice/text).', + 'trans_003_desc': 'Includes 1000 translations (voice/text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': 'Пропустити', 'next': 'Next', 'sayLilyHint': 'Say "Lily Lily" to the mic', @@ -345,7 +399,6 @@ const Map ukUA = { 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', 'confirmInput': 'Confirm Input', 'guideClickSendPrefix': 'Tap send, ', - // AI 引导步骤 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', 'guideWeatherInput': 'What’s the weather today?', 'guideWeatherSend': 'Lily will report the weather in real time', @@ -371,7 +424,7 @@ const Map ukUA = { 'guideSmsSend': 'Lily will send the message', 'guideSmsEnd': 'Message sent—voice control is convenient', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Почати зустріч", 'edit': 'Редагувати', 'delete': 'Видалити', @@ -383,8 +436,6 @@ const Map ukUA = { 'recordingDetails': 'Деталі запису', 'aiSummary': 'Підсумок від AI', 'meetingTranscript': 'Транскрипт зустрічі', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -437,7 +488,6 @@ const Map ukUA = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -446,6 +496,94 @@ const Map ukUA = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': 'Створити', + 'templateDetails': 'Деталі шаблону', + 'tag': 'Тег', + 'description': 'Опис', + 'template': 'Шаблон', + 'deleteTemplate': 'Видалити шаблон', + 'deleteTemplateConfirm': 'Ви впевнені, що хочете видалити цей шаблон?', + 'editTemplate': 'Редагувати шаблон', + 'createTemplate': 'Створити шаблон', + 'name': 'Назва', + 'templateContentHint': 'Будь ласка, введіть вміст шаблону! Порада: натисніть кнопку AI вище, щоб швидко згенерувати вміст шаблону на основі введеної назви та опису', + 'inputNameHint': 'Будь ласка, введіть назву', + 'inputDescHint': 'Будь ласка, введіть опис', + 'custom': 'Користувацький', + 'pleaseEnter': 'Будь ласка, введіть', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Зберегти інтелект-карту', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'Експорт', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Застосувати до всіх абзаців цього мовця', + 'summaryWillBeUpdatedAutomatically': 'Підсумок буде автоматично оновлюватися на основі шаблону', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -464,7 +602,7 @@ const Map ukUA = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -490,8 +628,6 @@ const Map ukUA = { 'aiVoiceEnhancementDesc': 'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.', 'audioImportDesc': 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -516,101 +652,26 @@ const Map ukUA = { 'validityNote': 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Застосувати до всіх абзаців цього мовця', - 'summaryWillBeUpdatedAutomatically': 'Підсумок буде автоматично оновлюватися на основі шаблону', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': 'Summary speakers will be updated automatically', - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': 'Аналіз не вдався, спробуйте пізніше', + 'transcriptionFailed': 'Транскрипція не вдалася, спробуйте пізніше', + 'summaryFailed': 'Не вдалося створити підсумок, спробуйте пізніше', + 'summaryFailedShort': 'Підсумок не вдався', + 'transcriptionFailedShort': 'Транскрипція не вдалася', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Аудіоплеєр не готовий, зачекайте', + 'playFailed': 'Помилка відтворення', + 'audioFileNotFound': 'Аудіофайл не знайдено', + 'fetchingAudio': 'Отримання аудіо з хмари...', + 'playerLoadFailed': 'Не вдалося завантажити аудіоплеєр', // 设置页 "systemSettings": "Системні налаштування", @@ -659,25 +720,14 @@ const Map ukUA = { "bleHeadsetFirmwareUpgrade": "Оновлення версії прошивки навушників BLE", "deviceManagement": "Керування пристроями", "manageConnectedDevices": "Керування підключеними пристроями Bluetooth", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Наразі у вас остання версія {version}', 'checkUpdateFailed': 'Не вдалося перевірити оновлення', 'networkErrorRetry': 'Помилка мережі, спробуйте ще раз пізніше', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Голосовий чат у реальному часі", "realtimeVoiceChatInfo": "Спробуйте функцію інтелектуальної голосової взаємодії (попередній перегляд)", "loading": "Завантаження...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -692,8 +742,7 @@ const Map ukUA = { "confirmUnbindMessage": "Are you sure you want to unbind device \\", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Очистити історію чату", "online": "В мережі", @@ -723,8 +772,9 @@ const Map ukUA = { "swipeUpForMore": "Проведіть пальцем вгору, щоб побачити більше", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': 'При увімкненні: ШІ не буде перериватися вашим голосом під час відповіді та зможе обробляти лише один раунд розмови за раз. Щоб почати новий раунд, просто скажіть слово активації.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -736,7 +786,7 @@ const Map ukUA = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': '你好!我是**Lily**,我能帮你:\n\n' '• 回答问题和提供信息\n\n' '• 实时语音翻译\n\n' @@ -752,18 +802,17 @@ const Map ukUA = { 'startVoiceInput': 'Почати голосове введення', 'startPhoneCallMode': 'Почати режим дзвінка, почати голосове введення', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Введіть своє повідомлення тут...', // 全屏编辑器输入提示 'characterCount': '{count} символів', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Копіювати', 'copySuccess': 'Скопійовано успішно', 'report': 'Поскаржитися', 'submitSuccess': 'Надіслано успішно', 'submitFailed': 'Не вдалося надіслати', 'reportSubmitted': 'Скаргу надіслано, ми її розглянемо найближчим часом', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Шкідливий/Небезпечний', 'pornographicVulgar': 'Порнографічний/Вульгарний', 'misleadingAttack': 'Вводить в оману/Атака', @@ -772,17 +821,14 @@ const Map ukUA = { 'copyrightViolation': 'Порушення моїх авторських прав, репутації тощо', 'other': 'Інше', 'reportDescriptionHint': 'Ми хочемо знати причину вашої скарги, ви можете описати проблему, з якою зіткнулися.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Згенеровано AI', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'Ось кілька рекомендованих композицій:', 'playList': 'Список відтворення', 'moreMusic': 'Більше музики', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'км', // 公里单位 'meters': 'м', // 米单位 'hours': 'год', // 小时单位 @@ -797,7 +843,7 @@ const Map ukUA = { "bicycling": "Велосипедом", "tsransit": "Громадський транспорт", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Запит погодних умов:', 'highest': 'Макс.', 'lowest': 'Мін.', @@ -818,18 +864,8 @@ const Map ukUA = { "friday": "Пт", "saturday": "Сб", "sunday": "Нд", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Сонячно", "partlyCloudy": "Мінлива хмарність", "partlySunny": "Частково сонячно", @@ -850,7 +886,119 @@ const Map ukUA = { "haze": "Імла", "strongWind": "Сильний вітер", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "Історія перекладів", + "enableRecording": "Увімкнути запис", + "viewAudioFiles": "Переглянути аудіофайли", + "headsetUser": "Користувач навушників", + "phoneUser": "Користувач телефону", + "selectSourceLanguage": "Вибрати вихідну мову", + "selectTargetLanguage": "Вибрати цільову мову", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Історія відсутня", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "Очистити історію", + "clearHistoryConfirm": "Ви впевнені, що хочете очистити всю історію перекладів? Цю дію неможливо скасувати.", + "unknownLanguage": "Невідома мова", + "deleteSessionRecord": "Видалити запис сесії", + "deleteSessionConfirm": "Ви впевнені, що хочете видалити всі записи перекладів цієї сесії? Цю дію неможливо скасувати.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Перекласти аудіофайли", + "noAudioFiles": "Аудіофайли відсутні", + "calculating": "Обчислення...", + "playing": "Відтворення...", + "paused": "Призупинено", + "clickToPlay": "Натисніть, щоб відтворити", + "rename": "Перейменувати", + "smartTranscription": "Розумна транскрипція", + "renameAudioFile": "Перейменувати аудіофайл", + "enterNewFileName": "Будь ласка, введіть нову назву файлу", + + // 翻译模块 - 翻译详情 + "originalRecord": "Оригінальний запис", + "recordSummary": "Підсумок запису", + "clickToGenerateSummary": "Натисніть кнопку нижче, щоб згенерувати підсумок сесії", + "summaryContent": "Зміст підсумку", + "copied": "Скопійовано", + "summaryCopiledToClipboard": "Підсумок скопійовано до буфера обміну", + "extractSummary": "Витягти підсумок", + "summaryGenerated": "Підсумок згенеровано", + "generating": "Генерація...", + "regenerate": "Згенерувати знову", + "summaryTimeoutMessage": "Час очікування запиту на генерацію підсумку минув, можливо, через проблеми з мережею або завантаженість сервера.", + "deleteTranslationRecord": "Видалити запис перекладу", + "deleteTranslationConfirm": "Ви впевнені, що хочете видалити цей запис перекладу? Цю дію неможливо скасувати.", + "originalText": "Оригінальний текст", + "translatedText": "Перекладений текст", + "sessionSummary": "Підсумок сесії", + "cannotShare": "Неможливо поділитися", + "generateSummaryFirst": "Будь ласка, спочатку згенеруйте підсумок", + "translationSessionRecord": "Запис сесії перекладу", + + // 个人资料模块 "editProfile": "Редагувати профіль", "avatar": "Аватар", "nickname": "Псевдонім", @@ -865,8 +1013,6 @@ const Map ukUA = { 'deleteAccountTips': 'Ви впевнені, що хочете назавжди видалити свій обліковий запис? Цю дію неможливо скасувати', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'Помилка мережевого підключення, перевірте налаштування мережі та спробуйте ще раз', 'serverTemporarilyUnavailable': 'Сервер тимчасово недоступний, спробуйте ще раз пізніше', 'loginExpiredPleaseRelogin': 'Термін дії сесії закінчився, будь ласка, увійдіть знову', @@ -878,10 +1024,6 @@ const Map ukUA = { 'serverError': 'Помилка сервера', 'networkConnectionFailedCheckSettings': 'Помилка мережевого підключення, перевірте налаштування мережі', 'serverInternalErrorRetryLater': 'Внутрішня помилка сервера, спробуйте ще раз пізніше', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Не вдалося стиснути зображення', 'avatarUpdateFailed': 'Не вдалося оновити аватар', 'usernameCannotBeEmpty': 'Ім\'я користувача не може бути порожнім', @@ -892,8 +1034,6 @@ const Map ukUA = { 'logoutFailedRetry': 'Не вдалося вийти, спробуйте ще раз', 'accountPermanentlyDeleted': 'Обліковий запис було назавжди видалено', 'deleteAccountFailedRetry': 'Не вдалося видалити обліковий запис, спробуйте ще раз', - - // 账号服务相关 'clearUserDataFailed': 'Не вдалося очистити дані користувача', // 清理用户数据失败 'deleteUserDataFailed': 'Не вдалося видалити дані користувача', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'Вихід зі стороннього сервісу успішний', // 第三方登录退出成功 @@ -904,7 +1044,11 @@ const Map ukUA = { 'allUserDataClearSuccess': 'Усі дані користувача успішно очищено', // 所有用户数据清理成功 'accountServiceInitialized': 'Службу облікових записів ініціалізовано', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', 'getPermissionStatusFailed': 'Не вдалося отримати статус дозволів', 'communicationPermissions': 'Дозволи на зв\\', 'bluetoothPermissions': 'Bluetooth Permissions', @@ -917,7 +1061,6 @@ const Map ukUA = { 'phone': 'Телефон', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'Запис до календаря', @@ -956,8 +1099,6 @@ const Map ukUA = { 'appNeedsPermissionForFullFunction': 'Програмі потрібен цей дозвіл для надання повної функціональності', 'permanentDenialText': 'Ви назавжди відмовили в доступі до {permission}, будь ласка, перейдіть до налаштувань програми, щоб увімкнути його', 'goToSettings': 'Перейти до налаштувань', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', @@ -972,7 +1113,6 @@ const Map ukUA = { 'locationPermissionExplanation': 'Location permission is required to get current location.', 'notificationPermissionPermanentDenial': 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', 'storagePermissionExplanation': 'We need storage permission so you can select and upload audio files.', @@ -980,15 +1120,26 @@ const Map ukUA = { '检测到您已永久拒绝录音权限。如需继续使用此功能,请前往应用设置中手动开启麦克风权限。', 'storagePermissionPermanentDenial': '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - //permission_util.dart 'permissionUtilNeed': 'Need ', 'permissionUtilPermission': ' Permission', 'permissionUtilRestricted': ' Permission Restricted', 'permissionUtilRestrictedMessage': 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Навігація в процесі', + 'native.notification.navigation.keepRunning': 'Навігація, тримайте додаток запущеним', + 'native.notification.bleAgent.running': 'Голосовий помічник працює', + 'native.notification.audioRecording.recording': 'Запис аудіо, натисніть, щоб повернутися до додатку', + 'native.notification.music.waiting': 'Очікування відтворення', + 'native.notification.music.previous': 'Попередня', + 'native.notification.music.next': 'Наступна', + 'native.notification.music.play': 'Відтворити', + 'native.notification.music.pause': 'Пауза', + 'native.notification.qqMusic.playing': 'Відтворення музики', + + // 版本更新 'newVersionFound': 'Знайдено нову версію', // 版本更新对话框标题 'remindLater': 'Нагадати пізніше', // 稍后提醒按钮 'updateNow': 'Оновити зараз', // 立即更新按钮 @@ -997,242 +1148,7 @@ const Map ukUA = { 'cannotOpenAppStore': 'Не вдається відкрити App Store, будь ласка, перейдіть до App Store вручну, щоб оновити', // 无法打开应用商店提示 'updateErrorRetry': 'Сталася помилка під час оновлення, спробуйте ще раз пізніше', // 更新错误重试提示 - //国家列表 - "邮箱": "Email", - "中国": "Китай", - "美国": "США", - "加拿大": "Канада", - "俄罗斯": "Росія", - "英国": "Велика Британія", - "德国": "Німеччина", - "意大利": "Італія", - "法国": "Франція", - "西班牙": "Іспанія", - "南非": "Південна Африка", - "沙特阿拉伯": "Саудівська Аравія", - "土耳其": "Туреччина", - "日本": "Японія", - "韩国": "Південна Корея", - "新加坡": "Сінгапур", - "马来西亚": "Малайзія", - "泰国": "Таїланд", - "越南": "В'єтнам", - "印度": "Індія", - "巴基斯坦": "Пакистан", - "菲律宾": "Філіппіни", - "印度尼西亚": "Індонезія", - "阿联酋": "ОАЕ", - "墨西哥": "Мексика", - "巴西": "Бразилія", - "阿根廷": "Аргентина", - "澳大利亚": "Австралія", - "新西兰": "Нова Зеландія", - "中国香港": "Гонконг (Китай)", - "中国澳门": "Макао (Китай)", - "中国台湾": "Тайвань (Китай)", - "埃及": "Єгипет", - "希腊": "Греція", - "荷兰": "Нідерланди", - "比利时": "Бельгія", - "匈牙利": "Угорщина", - "罗马尼亚": "Румунія", - "瑞士": "Швейцарія", - "奥地利": "Австрія", - "丹麦": "Данія", - "瑞典": "Швеція", - "挪威": "Норвегія", - "波兰": "Польща", - "秘鲁": "Перу", - "智利": "Чилі", - "哥伦比亚": "Колумбія", - "委内瑞拉": "Венесуела", - "葡萄牙": "Португалія", - "卢森堡": "Люксембург", - "爱尔兰": "Ірландія", - "冰岛": "Ісландія", - "阿尔巴尼亚": "Албанія", - "马耳他": "Мальта", - "塞浦路斯": "Кіпр", - "芬兰": "Фінляндія", - "保加利亚": "Болгарія", - "立陶宛": "Литва", - "拉脱维亚": "Латвія", - "爱沙尼亚": "Естонія", - "乌克兰": "Україна", - "塞尔维亚": "Сербія", - "克罗地亚": "Хорватія", - "斯洛文尼亚": "Словенія", - "捷克": "Чехія", - "斯洛伐克": "Словаччина", - "危地马拉": "Гватемала", - "萨尔瓦多": "Сальвадор", - "洪都拉斯": "Гондурас", - "尼加拉瓜": "Нікарагуа", - "哥斯达黎加": "Коста-Рика", - "巴拿马": "Панама", - "海地": "Гаїті", - "玻利维亚": "Болівія", - "厄瓜多尔": "Еквадор", - "巴拉圭": "Парагвай", - "乌拉圭": "Уругвай", - "摩洛哥": "Марокко", - "阿尔及利亚": "Алжир", - "突尼斯": "Туніс", - "尼日利亚": "Нігерія", - "加纳": "Гана", - "埃塞俄比亚": "Ефіопія", - "肯尼亚": "Кенія", - "坦桑尼亚": "Танзанія", - "乌干达": "Уганда", - "孟加拉国": "Бангладеш", - "以色列": "Ізраїль", - "黎巴嫩": "Ліван", - "约旦": "Йорданія", - "伊拉克": "Ірак", - "科威特": "Кувейт", - "巴林": "Бахрейн", - "卡塔尔": "Катар", - "阿曼": "Оман", - "阿富汗": "Афганістан", - "斯里兰卡": "Шрі-Ланка", - "缅甸": "М'янма", - "尼泊尔": "Непал", - "蒙古": "Монголія", - "柬埔寨": "Камбоджа", - "老挝": "Лаос", - "文莱": "Бруней", - "东帝汶": "Східний Тимор", - "斐济": "Фіджі", - "所罗门群岛": "Соломонові Острови", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Історія перекладів", - "enableRecording": "Увімкнути запис", - "viewAudioFiles": "Переглянути аудіофайли", - "headsetUser": "Користувач навушників", - "phoneUser": "Користувач телефону", - "selectSourceLanguage": "Вибрати вихідну мову", - "selectTargetLanguage": "Вибрати цільову мову", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Історія відсутня", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Очистити історію", - "clearHistoryConfirm": "Ви впевнені, що хочете очистити всю історію перекладів? Цю дію неможливо скасувати.", - "unknownLanguage": "Невідома мова", - "deleteSessionRecord": "Видалити запис сесії", - "deleteSessionConfirm": "Ви впевнені, що хочете видалити всі записи перекладів цієї сесії? Цю дію неможливо скасувати.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Перекласти аудіофайли", - "noAudioFiles": "Аудіофайли відсутні", - "calculating": "Обчислення...", - "playing": "Відтворення...", - "paused": "Призупинено", - "clickToPlay": "Натисніть, щоб відтворити", - "rename": "Перейменувати", - "smartTranscription": "Розумна транскрипція", - "renameAudioFile": "Перейменувати аудіофайл", - "enterNewFileName": "Будь ласка, введіть нову назву файлу", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Оригінальний запис", - "recordSummary": "Підсумок запису", - "clickToGenerateSummary": "Натисніть кнопку нижче, щоб згенерувати підсумок сесії", - "summaryContent": "Зміст підсумку", - "copied": "Скопійовано", - "summaryCopiledToClipboard": "Підсумок скопійовано до буфера обміну", - "extractSummary": "Витягти підсумок", - "summaryGenerated": "Підсумок згенеровано", - "generating": "Генерація...", - "regenerate": "Згенерувати знову", - "summaryTimeoutMessage": "Час очікування запиту на генерацію підсумку минув, можливо, через проблеми з мережею або завантаженість сервера.", - "deleteTranslationRecord": "Видалити запис перекладу", - "deleteTranslationConfirm": "Ви впевнені, що хочете видалити цей запис перекладу? Цю дію неможливо скасувати.", - "originalText": "Оригінальний текст", - "translatedText": "Перекладений текст", - "sessionSummary": "Підсумок сесії", - "cannotShare": "Неможливо поділитися", - "generateSummaryFirst": "Будь ласка, спочатку згенеруйте підсумок", - "translationSessionRecord": "Запис сесії перекладу", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Спарювання пристрою", "connectYourDeepSoundHeadset": "Підключіть ваші навушники Voitrans", "bind": "Прив'язати", @@ -1241,14 +1157,11 @@ const Map ukUA = { "autoInputCode": "Автоматичне введення коду", "skipBinding": "Пропустити прив'язку", "rescan": "Повторне сканування", - "verifyingDevice": "Перевірка пристрою...", "confirmBinding": "Підтвердити прив'язку", "associatingDevice": "Асоціація пристрою...", "goToBluetoothSettings": "Перейти до налаштувань Bluetooth", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Готово до спарювання", "preparingPairingEnvironment": "Підготовка середовища для спарювання...", "connectDeepSoundViaSystemBluetooth": "Будь ласка, спочатку підключіться до пристрою Voitrans через системний Bluetooth", @@ -1256,8 +1169,6 @@ const Map ukUA = { "establishingDeviceAssociation": "Встановлення асоціації пристрою...", "waitingCompletePairing": "Будь ласка, зачекайте, завершується спарювання...", "pairingSuccessRedirecting": "Спарювання успішне! Перенаправлення на головну сторінку...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Переконайтеся, що ви підключені до пристрою Voitrans", "deviceAlreadyBoundToOtherAccount": "Цей пристрій вже прив'язаний до іншого облікового запису", "deviceAssociationFailed": "Не вдалося асоціювати пристрій, спробуйте ще раз", @@ -1265,18 +1176,11 @@ const Map ukUA = { "networkError": "Помилка мережі", "authorizationFailedCheckCode": "Помилка авторизації, перевірте правильність коду авторизації", "pairingFailedRetry": "Не вдалося спарити, спробуйте ще раз", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Будь ласка, увімкніть Bluetooth', 'deviceDisconnected': 'Пристрій відключено', 'readyToStartPairing': 'Готово до початку спарювання', 'checkingEnvironment': 'Перевірка середовища...', 'ensureHeadsetOnAndPairingMode': 'Переконайтеся, що навушники увімкнені та знаходяться в режимі спарювання', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Встановлення безпечного з\\', 'needManualBindingAuthCode': 'Потрібен код авторизації для ручної прив\\', 'pairingSuccessful': 'Спарювання успішне!', @@ -1295,8 +1199,6 @@ const Map ukUA = { 'blePairingStartupFailed': 'Не вдалося розпочати спарювання BLE', 'bleConnectionFailed': 'Не вдалося підключитися через BLE', 'deviceAuthorizationFailedCheckCode': 'Помилка авторизації пристрою, перевірте код авторизації', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 @@ -1305,7 +1207,18 @@ const Map ukUA = { 'bluetoothGuideTip': 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Відгук користувача", 'feedbackInfo': 'Надати відгук або пропозицію', 'feedbackDescription': 'Будь ласка, опишіть проблему, з якою ви зіткнулися, або вашу пропозицію', @@ -1340,7 +1253,7 @@ const Map ukUA = { "updateContent": "Зміст оновлення", "removeEarbudsEnsureBattery": "Вийміть обидва навушники та переконайтеся, що заряд батареї в обох перевищує 20%", - // 音乐列表页面 + // 音乐模块 "noMusic": "Немає музики", // 暂无音乐 "noPlayingMusic": "Немає відтворюваної музики", // 暂无播放音乐 "unknownSong": "Невідома пісня", // 未知歌曲 @@ -1388,20 +1301,122 @@ const Map ukUA = { "波斯语": "Перська", "斯瓦希里语": "Свахілі", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": "Insufficient balance, please go to the corresponding recharge page to recharge.", - "recharge": "Go to Recharge", - // 会员到期提示 - "aiMemberExpiredDesc": "AI membership expired, please go to the membership recharge page to renew.", + // 国家列表 + "邮箱": "Email", + "中国": "Китай", + "美国": "США", + "加拿大": "Канада", + "俄罗斯": "Росія", + "英国": "Велика Британія", + "德国": "Німеччина", + "意大利": "Італія", + "法国": "Франція", + "西班牙": "Іспанія", + "南非": "Південна Африка", + "沙特阿拉伯": "Саудівська Аравія", + "土耳其": "Туреччина", + "日本": "Японія", + "韩国": "Південна Корея", + "新加坡": "Сінгапур", + "马来西亚": "Малайзія", + "泰国": "Таїланд", + "越南": "В'єтнам", + "印度": "Індія", + "巴基斯坦": "Пакистан", + "菲律宾": "Філіппіни", + "印度尼西亚": "Індонезія", + "阿联酋": "ОАЕ", + "墨西哥": "Мексика", + "巴西": "Бразилія", + "阿根廷": "Аргентина", + "澳大利亚": "Австралія", + "新西兰": "Нова Зеландія", + "中国香港": "Гонконг (Китай)", + "中国澳门": "Макао (Китай)", + "中国台湾": "Тайвань (Китай)", + "埃及": "Єгипет", + "希腊": "Греція", + "荷兰": "Нідерланди", + "比利时": "Бельгія", + "匈牙利": "Угорщина", + "罗马尼亚": "Румунія", + "瑞士": "Швейцарія", + "奥地利": "Австрія", + "丹麦": "Данія", + "瑞典": "Швеція", + "挪威": "Норвегія", + "波兰": "Польща", + "秘鲁": "Перу", + "智利": "Чилі", + "哥伦比亚": "Колумбія", + "委内瑞拉": "Венесуела", + "葡萄牙": "Португалія", + "卢森堡": "Люксембург", + "爱尔兰": "Ірландія", + "冰岛": "Ісландія", + "阿尔巴尼亚": "Албанія", + "马耳他": "Мальта", + "塞浦路斯": "Кіпр", + "芬兰": "Фінляндія", + "保加利亚": "Болгарія", + "立陶宛": "Литва", + "拉脱维亚": "Латвія", + "爱沙尼亚": "Естонія", + "乌克兰": "Україна", + "塞尔维亚": "Сербія", + "克罗地亚": "Хорватія", + "斯洛文尼亚": "Словенія", + "捷克": "Чехія", + "斯洛伐克": "Словаччина", + "危地马拉": "Гватемала", + "萨尔瓦多": "Сальвадор", + "洪都拉斯": "Гондурас", + "尼加拉瓜": "Нікарагуа", + "哥斯达黎加": "Коста-Рика", + "巴拿马": "Панама", + "海地": "Гаїті", + "玻利维亚": "Болівія", + "厄瓜多尔": "Еквадор", + "巴拉圭": "Парагвай", + "乌拉圭": "Уругвай", + "摩洛哥": "Марокко", + "阿尔及利亚": "Алжир", + "突尼斯": "Туніс", + "尼日利亚": "Нігерія", + "加纳": "Гана", + "埃塞俄比亚": "Ефіопія", + "肯尼亚": "Кенія", + "坦桑尼亚": "Танзанія", + "乌干达": "Уганда", + "孟加拉国": "Бангладеш", + "以色列": "Ізраїль", + "黎巴嫩": "Ліван", + "约旦": "Йорданія", + "伊拉克": "Ірак", + "科威特": "Кувейт", + "巴林": "Бахрейн", + "卡塔尔": "Катар", + "阿曼": "Оман", + "阿富汗": "Афганістан", + "斯里兰卡": "Шрі-Ланка", + "缅甸": "М'янма", + "尼泊尔": "Непал", + "蒙古": "Монголія", + "柬埔寨": "Камбоджа", + "老挝": "Лаос", + "文莱": "Бруней", + "东帝汶": "Східний Тимор", + "斐济": "Фіджі", + "所罗门群岛": "Соломонові Острови", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/vi_vn.dart b/lib/core/translations/language/vi_vn.dart index bc7535a96..1ff748879 100644 --- a/lib/core/translations/language/vi_vn.dart +++ b/lib/core/translations/language/vi_vn.dart @@ -1,4 +1,5 @@ const Map viVN = { + // 通用 'continue': 'Tiếp tục', 'confirm': 'Xác nhận', @@ -18,6 +19,11 @@ const Map viVN = { "unknownError": "Lỗi không xác định", "asrConnectionFailed": "Kết nối tới dịch vụ nhận dạng giọng nói thất bại. Vui lòng kiểm tra mạng hoặc thử lại sau.", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "Kết nối thế giới, vượt trên cả âm thanh", @@ -28,7 +34,7 @@ const Map viVN = { "explore": "Khám phá", "settings": "Cài đặt", - // 语言 + // 语言列表 "followingSystem": "Theo hệ thống", "chinese": "Tiếng Trung", "english": "Tiếng Anh", @@ -72,7 +78,7 @@ const Map viVN = { "arabic": "Tiếng Arab", "persian": "Tiếng Persian", - // 登录页 + // 登录模块 "welcome": "Chào mừng bạn", "loginTips": "Vui lòng đăng nhập hoặc đăng ký bằng số điện thoại hoặc email", "accountNumber": "Số điện thoại hoặc email", @@ -99,12 +105,8 @@ const Map viVN = { "resendVerificationCode": "Gửi lại mã xác minh", "login": "Đăng nhập", "usePasswordLogin": "Đăng nhập bằng mật khẩu", - - // 隐私政策弹窗 "loginDeclaration": "Tuyên bố của Voitrans", // Voitrans 声明 "welcomeToThisApp": "Chào mừng bạn đến với Voitrans, vui lòng đọc kỹ", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Không đồng ý", // 不同意 @@ -159,7 +161,7 @@ const Map viVN = { 'right': 'Phải', 'checkConnectionStatusFailed': 'Kiểm tra trạng thái kết nối thất bại', -// 发现页 + // 发现页 "searchAi": "Tìm kiếm chức năng AI...", "exploreSlogan": "Tai nghe thông minh, khả năng vô hạn", "exploreSlogan1": "Bạn đồng hành thông minh, khả năng vô hạn", @@ -182,6 +184,7 @@ const Map viVN = { "usageStats": "Thống kê sử dụng", "usageStatsInfo": "Xem thống kê sử dụng của bạn", "scene": "Tình huống", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", @@ -202,7 +205,6 @@ const Map viVN = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -219,7 +221,6 @@ const Map viVN = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - // 通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", "cleanupComplete": "Cleanup Complete", @@ -227,56 +228,114 @@ const Map viVN = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', 'remaining': 'Remaining', 'featureDescription': 'Feature Description', - // AI 功能卡片 + 'paymentSuccess': 'Thanh toán thành công', + 'paymentFailed': 'Thanh toán thất bại', + 'gotIt': 'Đã hiểu', + 'paymentFailedTryAgain': 'Thanh toán thất bại. Vui lòng thử lại.', + 'selectPaymentMethod': 'Chọn phương thức thanh toán', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Không thể tạo đơn hàng WeChat', + 'alipayOrderCreateFailed': 'Không thể tạo đơn hàng Alipay', + 'appleOrderCreateFailed': 'Không thể tạo đơn hàng Apple', + 'googleOrderCreateFailed': 'Không thể tạo đơn hàng Google', + 'paypalOrderCreateFailed': 'Không thể tạo đơn hàng PayPal', + 'paymentException': 'Lỗi thanh toán', + 'paymentLaunchFailed': 'Không thể khởi chạy thanh toán', + 'paymentExceptionWithError': 'Lỗi thanh toán: @error', + 'paymentProcessingCheckLater': 'Đơn hàng của bạn đang được xử lý. Vui lòng kiểm tra lại sau.', + 'paymentResultQueryException': 'Không thể truy vấn kết quả thanh toán: @error', + 'orderConfirmedQuotaRefreshed': 'Đơn hàng đã được xác nhận. Hạn mức của bạn đã được làm mới.', + 'paymentCompletedConfirming': 'Thanh toán hoàn tất. Đang xác nhận…', + 'paymentCancelled': 'Đã hủy thanh toán', + 'paypalOpenedCompleteInBrowser': 'PayPal đã mở. Vui lòng hoàn tất thanh toán trong trình duyệt.', + 'paypalOpenFailed': 'Không thể mở trang thanh toán PayPal', + 'paymentTestTitle': 'Kiểm tra thanh toán', + 'paymentTestOrderInfo': 'Thông tin đơn hàng kiểm tra', + 'paymentTestProductId': 'Mã sản phẩm', + 'paymentTestProductDescription': 'Mô tả sản phẩm', + 'paymentTestWechatDescription': 'Kiểm tra thanh toán WeChat', + 'paymentTestAlipayDescription': 'Kiểm tra thanh toán Alipay', + 'paymentTestAmount': 'Số tiền', + 'paymentTestSelectAmount': 'Chọn số tiền kiểm tra', + 'paying': 'Đang thanh toán...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Trạng thái thanh toán', + 'errorInfoWithMessage': 'Lỗi: @message', + 'retest': 'Kiểm tra lại', + 'paymentTestInstructionsTitle': 'Hướng dẫn', + 'paymentTestInstructionsContent': '1. Chọn số tiền kiểm tra (khuyến nghị: ¥0.01)\n2. Nhấn nút thanh toán để bắt đầu\n3. Hoàn tất thanh toán trong ứng dụng thanh toán\n4. Quay lại kiểm tra kết quả', + 'startingWechatPayment': 'Đang khởi động WeChat Pay...', + 'startingAlipayPayment': 'Đang khởi động Alipay...', + 'wechatPaymentSuccess': 'Thanh toán WeChat Pay thành công!', + 'wechatPaymentFailed': 'Thanh toán WeChat Pay thất bại', + 'wechatPaymentLaunchFailed': 'Không thể khởi chạy WeChat Pay', + 'cannotLaunchWechatPayment': 'Không thể mở WeChat Pay', + 'wechatPaymentException': 'WeChat Pay gặp lỗi', + 'wechatPaymentTestCompleted': 'Kiểm tra thanh toán WeChat Pay hoàn tất', + 'alipayPaymentSuccess': 'Thanh toán Alipay thành công!', + 'alipayPaymentFailed': 'Thanh toán Alipay thất bại', + 'alipayPaymentLaunchFailed': 'Không thể khởi chạy Alipay', + 'cannotLaunchAlipayPayment': 'Không thể mở Alipay', + 'alipayPaymentException': 'Alipay gặp lỗi', + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": "Insufficient balance, please go to the corresponding recharge page to recharge.", + "recharge": "Go to Recharge", + "aiMemberExpiredDesc": "AI membership expired, please go to the membership recharge page to renew.", + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 + 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', + 'aiHeaderDesc2': 'Suitable for agent Q&A, summarization, analysis, and task execution.', + 'musicSearchPlaybackControl': 'Music library search and playback control', + 'smartPlaylistAndSimilarRecommendations': 'Smart playlist and similar song recommendations', + 'routePlanningAndCongestionAvoidance': 'Route planning and congestion avoidance', + 'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings', + 'realTimeWeatherForecast': 'Real-time weather and forecast', + 'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders', + 'poiSearchFoodGasParking': 'POI search: dining / gas / parking', + 'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing', + 'hotNewsAndTopicOverview': 'Hot news and topic overview', + 'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points', + 'helpCallAndSMS': 'Help with calls and SMS', + 'templatedMessagesAndScheduleReminders': 'Template messages and schedule reminders', + 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', + + // 商品模块 - 翻译商品页 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 'sceneLexicon': 'Scenario Glossary', 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 + 'transHeaderDesc1': 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', + 'translateZhEn': 'Chinese-English translation', + 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', + 'multiLangTextTranslation': 'Multilingual text translation', + 'termOptimizationContextPreserve': 'Terminology optimization and context preservation', + 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', + 'personalVocabularyMemory': 'Personal vocabulary memory', + 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', + 'colorHighContrast': 'High color contrast', + 'transDisclaimer': 'Translation performance depends on microphone, network latency, and ambient noise.', + + // 商品模块 - 会议商品页 'meetingRecording': 'Meeting Recording', 'transcriptionAndSummary': 'Transcription & Summary', 'keywordSearch': 'Keyword Search', 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 'meetingHeaderDesc1': 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', 'meetingHeaderDesc2': 'Suitable for business meetings, class notes, and interview minutes.', 'meetingAutoRecording': 'Auto recording and segmentation', @@ -289,37 +348,7 @@ const Map viVN = { 'meetingMultiPlatformShare': 'Share across platforms', 'meetingDisclaimer': 'Use in quiet environments; performance depends on microphone and network.', - // 同传/翻译商品页描述 - 'transHeaderDesc1': 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 - 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', - 'aiHeaderDesc2': 'Suitable for agent Q&A, summarization, analysis, and task execution.', - 'musicSearchPlaybackControl': 'Music library search and playback control', - 'smartPlaylistAndSimilarRecommendations': 'Smart playlist and similar song recommendations', - 'routePlanningAndCongestionAvoidance': 'Route planning and congestion avoidance', - 'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings', - 'realTimeWeatherForecast': 'Real-time weather and forecast', - 'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders', - 'poiSearchFoodGasParking': 'POI search: dining / gas / parking', - 'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing', - 'hotNewsAndTopicOverview': 'Hot news and topic overview', - 'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points', - 'helpCallAndSMS': 'Help with calls and SMS', - 'templatedMessagesAndScheduleReminders': 'Template messages and schedule reminders', - 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - - // 会员商品页 + // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', 'higherQuota': 'Higher usage quota', 'lowerUnitPrice': 'Lower unit price', @@ -334,7 +363,32 @@ const Map viVN = { 'crossDeviceSync': 'Cross-device sync', 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Translation Basic 100', + 'trans_002_name': 'Translation Basic 500', + 'trans_003_name': 'Translation Basic 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': 'Includes 100 translations (voice/text).', + 'trans_002_desc': 'Includes 500 translations (voice/text).', + 'trans_003_desc': 'Includes 1000 translations (voice/text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': 'Bỏ qua', 'next': 'Next', 'sayLilyHint': 'Say "Lily Lily" to the mic', @@ -345,7 +399,6 @@ const Map viVN = { 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', 'confirmInput': 'Confirm Input', 'guideClickSendPrefix': 'Tap send, ', - // AI 引导步骤 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', 'guideWeatherInput': 'What’s the weather today?', 'guideWeatherSend': 'Lily will report the weather in real time', @@ -371,7 +424,7 @@ const Map viVN = { 'guideSmsSend': 'Lily will send the message', 'guideSmsEnd': 'Message sent—voice control is convenient', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Bắt đầu cuộc họp", 'edit': 'Chỉnh sửa', 'delete': 'Xóa', @@ -383,8 +436,6 @@ const Map viVN = { 'recordingDetails': 'Chi tiết bản ghi', 'aiSummary': 'Tóm tắt AI', 'meetingTranscript': 'Bản ghi cuộc họp', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -437,7 +488,6 @@ const Map viVN = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -446,6 +496,94 @@ const Map viVN = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': 'Tạo', + 'templateDetails': 'Chi tiết mẫu', + 'tag': 'Thẻ', + 'description': 'Mô tả', + 'template': 'Mẫu', + 'deleteTemplate': 'Xóa mẫu', + 'deleteTemplateConfirm': 'Bạn có chắc chắn muốn xóa mẫu này không?', + 'editTemplate': 'Chỉnh sửa mẫu', + 'createTemplate': 'Tạo mẫu', + 'name': 'Tên', + 'templateContentHint': 'Vui lòng nhập nội dung mẫu! Mẹo: Nhấn nút AI ở trên để tạo nhanh nội dung mẫu dựa trên tên và mô tả bạn đã nhập', + 'inputNameHint': 'Vui lòng nhập tên', + 'inputDescHint': 'Vui lòng nhập mô tả', + 'custom': 'Tùy chỉnh', + 'pleaseEnter': 'Vui lòng nhập', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Lưu sơ đồ tư duy', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'Xuất', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Áp dụng cho tất cả đoạn của người nói này', + 'summaryWillBeUpdatedAutomatically': 'Tóm tắt sẽ được cập nhật tự động dựa trên mẫu', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -464,7 +602,7 @@ const Map viVN = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -490,8 +628,6 @@ const Map viVN = { 'aiVoiceEnhancementDesc': 'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.', 'audioImportDesc': 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -516,101 +652,26 @@ const Map viVN = { 'validityNote': 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Áp dụng cho tất cả đoạn của người nói này', - 'summaryWillBeUpdatedAutomatically': 'Tóm tắt sẽ được cập nhật tự động dựa trên mẫu', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': 'Summary speakers will be updated automatically', - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': 'Phân tích thất bại, vui lòng thử lại sau', + 'transcriptionFailed': 'Chuyển đổi giọng nói thất bại, vui lòng thử lại sau', + 'summaryFailed': 'Tóm tắt thất bại, vui lòng thử lại sau', + 'summaryFailedShort': 'Tóm tắt thất bại', + 'transcriptionFailedShort': 'Chuyển đổi giọng nói thất bại', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Trình phát âm thanh chưa sẵn sàng, vui lòng đợi', + 'playFailed': 'Phát thất bại', + 'audioFileNotFound': 'Không tìm thấy tệp âm thanh', + 'fetchingAudio': 'Đang tải âm thanh từ đám mây...', + 'playerLoadFailed': 'Trình phát âm thanh không thể tải', // 设置页 "systemSettings": "Cài đặt hệ thống", @@ -659,25 +720,14 @@ const Map viVN = { "bleHeadsetFirmwareUpgrade": "Nâng cấp phiên bản firmware tai nghe BLE", "deviceManagement": "Quản lý thiết bị", "manageConnectedDevices": "Quản lý các thiết bị Bluetooth đã ghép nối", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Hiện tại đã là phiên bản mới nhất {version}', 'checkUpdateFailed': 'Kiểm tra cập nhật thất bại', 'networkErrorRetry': 'Lỗi mạng, vui lòng thử lại sau', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Trò chuyện giọng nói thời gian thực", "realtimeVoiceChatInfo": "Trải nghiệm chức năng tương tác giọng nói thông minh (xem trước chức năng)", "loading": "Đang tải...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -692,8 +742,7 @@ const Map viVN = { "confirmUnbindMessage": "Are you sure you want to unbind device \\", "confirmUnbindAction": "Confirm Unbind", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Xóa lịch sử trò chuyện", "online": "Trực tuyến", @@ -723,8 +772,9 @@ const Map viVN = { "swipeUpForMore": "Vuốt lên để xem thêm", "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "voice_interrupt": "Interrupt", // 语音打断 + 'voice_interrupt_tip': 'Khi bật: AI sẽ không bị ngắt bởi giọng nói của bạn khi đang nói và chỉ có thể xử lý một lượt hội thoại. Để bắt đầu lượt mới, chỉ cần nói từ kích hoạt.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", // 来点音乐 "presetNavigation": "Navigation to", // 导航 "presetWeather": "Today's weather", // 今日天气 @@ -736,7 +786,7 @@ const Map viVN = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': '你好!我是**Lily**,我能帮你:\n\n' '• 回答问题和提供信息\n\n' '• 实时语音翻译\n\n' @@ -752,18 +802,17 @@ const Map viVN = { 'startVoiceInput': 'Bắt đầu nhập liệu bằng giọng nói', 'startPhoneCallMode': 'Bắt đầu chế độ gọi điện, bắt đầu nhập liệu bằng giọng nói', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Nhập tin nhắn của bạn ở đây...', // 全屏编辑器输入提示 'characterCount': '{count} ký tự', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Sao chép', 'copySuccess': 'Sao chép thành công', 'report': 'Báo cáo', 'submitSuccess': 'Gửi thành công', 'submitFailed': 'Gửi thất bại', 'reportSubmitted': 'Báo cáo đã được gửi, chúng tôi sẽ xử lý sớm', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Có hại/Không an toàn', 'pornographicVulgar': 'Khiêu dâm/Thô tục', 'misleadingAttack': 'Gây hiểu lầm/Tấn công', @@ -772,17 +821,14 @@ const Map viVN = { 'copyrightViolation': 'Vi phạm bản quyền, danh dự của tôi, v.v.', 'other': 'Khác', 'reportDescriptionHint': 'Chúng tôi muốn biết lý do bạn báo cáo, bạn có thể mô tả vấn đề bạn gặp phải.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Được tạo bởi AI', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': 'Dưới đây là một số bản nhạc được đề xuất:', 'playList': 'Danh sách phát', 'moreMusic': 'Thêm nhạc', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'giờ', // 小时单位 @@ -797,7 +843,7 @@ const Map viVN = { "bicycling": "Đi xe đạp", "tsransit": "Giao thông công cộng", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Truy vấn tình hình thời tiết:', 'highest': 'Cao nhất', 'lowest': 'Thấp nhất', @@ -818,18 +864,8 @@ const Map viVN = { "friday": "Thứ 6", "saturday": "Thứ 7", "sunday": "Chủ nhật", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Nắng", "partlyCloudy": "Ít mây", "partlySunny": "Nắng nhẹ", @@ -850,7 +886,119 @@ const Map viVN = { "haze": "Khói bụi", "strongWind": "Gió lớn", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "Lịch sử dịch", + "enableRecording": "Bật ghi âm", + "viewAudioFiles": "Xem tệp âm thanh", + "headsetUser": "Người dùng tai nghe", + "phoneUser": "Người dùng điện thoại", + "selectSourceLanguage": "Chọn ngôn ngữ nguồn", + "selectTargetLanguage": "Chọn ngôn ngữ đích", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "translationFailed": "Translation failed", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Chưa có lịch sử", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "Xóa lịch sử", + "clearHistoryConfirm": "Bạn có chắc muốn xóa toàn bộ lịch sử dịch không? Thao tác này không thể hoàn tác.", + "unknownLanguage": "Ngôn ngữ không xác định", + "deleteSessionRecord": "Xóa bản ghi phiên", + "deleteSessionConfirm": "Bạn có chắc muốn xóa tất cả các bản ghi dịch của phiên này không? Thao tác này không thể hoàn tác.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Dịch tệp âm thanh", + "noAudioFiles": "Chưa có tệp âm thanh", + "calculating": "Đang tính toán...", + "playing": "Đang phát...", + "paused": "Đã tạm dừng", + "clickToPlay": "Nhấn để phát", + "rename": "Đổi tên", + "smartTranscription": "Chuyển đổi thông minh", + "renameAudioFile": "Đổi tên tệp âm thanh", + "enterNewFileName": "Vui lòng nhập tên tệp mới", + + // 翻译模块 - 翻译详情 + "originalRecord": "Bản ghi gốc", + "recordSummary": "Tóm tắt bản ghi", + "clickToGenerateSummary": "Nhấn nút bên dưới để tạo tóm tắt phiên", + "summaryContent": "Nội dung tóm tắt", + "copied": "Đã sao chép", + "summaryCopiledToClipboard": "Tóm tắt đã được sao chép vào khay nhớ tạm", + "extractSummary": "Trích xuất tóm tắt", + "summaryGenerated": "Đã tạo tóm tắt", + "generating": "Đang tạo...", + "regenerate": "Tạo lại", + "summaryTimeoutMessage": "Yêu cầu tạo tóm tắt đã hết thời gian, có thể do sự cố mạng hoặc máy chủ bận.", + "deleteTranslationRecord": "Xóa bản ghi dịch", + "deleteTranslationConfirm": "Bạn có chắc muốn xóa bản ghi dịch này không? Thao tác này không thể hoàn tác.", + "originalText": "Văn bản gốc", + "translatedText": "Văn bản dịch", + "sessionSummary": "Tóm tắt phiên", + "cannotShare": "Không thể chia sẻ", + "generateSummaryFirst": "Vui lòng tạo tóm tắt trước", + "translationSessionRecord": "Bản ghi phiên dịch", + + // 个人资料模块 "editProfile": "Chỉnh sửa thông tin cá nhân", "avatar": "Ảnh đại diện", "nickname": "Biệt danh", @@ -865,8 +1013,6 @@ const Map viVN = { 'deleteAccountTips': 'Bạn có chắc chắn muốn xóa vĩnh viễn tài khoản của mình không? Thao tác này không thể hoàn tác', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'Kết nối mạng thất bại, vui lòng kiểm tra cài đặt mạng và thử lại', 'serverTemporarilyUnavailable': 'Máy chủ tạm thời không khả dụng, vui lòng thử lại sau', 'loginExpiredPleaseRelogin': 'Đăng nhập đã hết hạn, vui lòng đăng nhập lại', @@ -878,10 +1024,6 @@ const Map viVN = { 'serverError': 'Lỗi máy chủ', 'networkConnectionFailedCheckSettings': 'Kết nối mạng thất bại, vui lòng kiểm tra cài đặt mạng', 'serverInternalErrorRetryLater': 'Lỗi nội bộ máy chủ, vui lòng thử lại sau', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Nén hình ảnh thất bại', 'avatarUpdateFailed': 'Cập nhật ảnh đại diện thất bại', 'usernameCannotBeEmpty': 'Tên người dùng không được để trống', @@ -892,8 +1034,6 @@ const Map viVN = { 'logoutFailedRetry': 'Đăng xuất thất bại, vui lòng thử lại', 'accountPermanentlyDeleted': 'Tài khoản đã bị xóa vĩnh viễn', 'deleteAccountFailedRetry': 'Xóa tài khoản thất bại, vui lòng thử lại', - - // 账号服务相关 'clearUserDataFailed': 'Xóa dữ liệu người dùng thất bại', // 清理用户数据失败 'deleteUserDataFailed': 'Xóa dữ liệu người dùng thất bại', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'Đăng xuất bên thứ ba thành công', // 第三方登录退出成功 @@ -904,7 +1044,11 @@ const Map viVN = { 'allUserDataClearSuccess': 'Tất cả dữ liệu người dùng đã được xóa thành công', // 所有用户数据清理成功 'accountServiceInitialized': 'AccountService đã được khởi tạo', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', 'getPermissionStatusFailed': 'Lấy trạng thái quyền thất bại', 'communicationPermissions': 'Quyền giao tiếp', 'bluetoothPermissions': 'Bluetooth Permissions', @@ -917,7 +1061,6 @@ const Map viVN = { 'phone': 'Điện thoại', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'Ghi lịch', @@ -956,8 +1099,6 @@ const Map viVN = { 'appNeedsPermissionForFullFunction': 'Ứng dụng cần quyền này để cung cấp đầy đủ chức năng', 'permanentDenialText': 'Bạn đã từ chối vĩnh viễn quyền {permission}, vui lòng vào cài đặt ứng dụng để bật', 'goToSettings': 'Đi đến cài đặt', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', @@ -972,7 +1113,6 @@ const Map viVN = { 'locationPermissionExplanation': 'Location permission is required to get current location.', 'notificationPermissionPermanentDenial': 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', 'storagePermissionExplanation': 'We need storage permission so you can select and upload audio files.', @@ -980,15 +1120,26 @@ const Map viVN = { '检测到您已永久拒绝录音权限。如需继续使用此功能,请前往应用设置中手动开启麦克风权限。', 'storagePermissionPermanentDenial': '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - //permission_util.dart 'permissionUtilNeed': 'Need ', 'permissionUtilPermission': ' Permission', 'permissionUtilRestricted': ' Permission Restricted', 'permissionUtilRestrictedMessage': 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Đang dẫn đường', + 'native.notification.navigation.keepRunning': 'Đang dẫn đường, giữ ứng dụng hoạt động', + 'native.notification.bleAgent.running': 'Trợ lý giọng nói đang chạy', + 'native.notification.audioRecording.recording': 'Đang ghi âm, nhấn để quay lại ứng dụng', + 'native.notification.music.waiting': 'Đang chờ phát', + 'native.notification.music.previous': 'Trước đó', + 'native.notification.music.next': 'Tiếp theo', + 'native.notification.music.play': 'Phát', + 'native.notification.music.pause': 'Tạm dừng', + 'native.notification.qqMusic.playing': 'Đang phát nhạc', + + // 版本更新 'newVersionFound': 'Đã tìm thấy phiên bản mới', // 版本更新对话框标题 'remindLater': 'Nhắc lại sau', // 稍后提醒按钮 'updateNow': 'Cập nhật ngay', // 立即更新按钮 @@ -997,242 +1148,7 @@ const Map viVN = { 'cannotOpenAppStore': 'Không thể mở App Store, vui lòng vào App Store để cập nhật thủ công', // 无法打开应用商店提示 'updateErrorRetry': 'Đã xảy ra lỗi trong quá trình cập nhật, vui lòng thử lại sau', // 更新错误重试提示 - //国家列表 - "邮箱": "Email", - "中国": "Trung Quốc", - "美国": "Hoa Kỳ", - "加拿大": "Canada", - "俄罗斯": "Nga", - "英国": "Vương quốc Anh", - "德国": "Đức", - "意大利": "Ý", - "法国": "Pháp", - "西班牙": "Tây Ban Nha", - "南非": "Nam Phi", - "沙特阿拉伯": "Ả Rập Xê Út", - "土耳其": "Thổ Nhĩ Kỳ", - "日本": "Nhật Bản", - "韩国": "Hàn Quốc", - "新加坡": "Singapore", - "马来西亚": "Malaysia", - "泰国": "Thái Lan", - "越南": "Việt Nam", - "印度": "Ấn Độ", - "巴基斯坦": "Pakistan", - "菲律宾": "Philippines", - "印度尼西亚": "Indonesia", - "阿联酋": "Các Tiểu vương quốc Ả Rập Thống nhất", - "墨西哥": "Mexico", - "巴西": "Brazil", - "阿根廷": "Argentina", - "澳大利亚": "Úc", - "新西兰": "New Zealand", - "中国香港": "Hồng Kông (Trung Quốc)", - "中国澳门": "Macao (Trung Quốc)", - "中国台湾": "Đài Loan (Trung Quốc)", - "埃及": "Ai Cập", - "希腊": "Hy Lạp", - "荷兰": "Hà Lan", - "比利时": "Bỉ", - "匈牙利": "Hungary", - "罗马尼亚": "Romania", - "瑞士": "Thụy Sĩ", - "奥地利": "Áo", - "丹麦": "Đan Mạch", - "瑞典": "Thụy Điển", - "挪威": "Na Uy", - "波兰": "Ba Lan", - "秘鲁": "Peru", - "智利": "Chile", - "哥伦比亚": "Colombia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Bồ Đào Nha", - "卢森堡": "Luxembourg", - "爱尔兰": "Ireland", - "冰岛": "Iceland", - "阿尔巴尼亚": "Albania", - "马耳他": "Malta", - "塞浦路斯": "Síp", - "芬兰": "Phần Lan", - "保加利亚": "Bulgaria", - "立陶宛": "Litva", - "拉脱维亚": "Latvia", - "爱沙尼亚": "Estonia", - "乌克兰": "Ukraina", - "塞尔维亚": "Serbia", - "克罗地亚": "Croatia", - "斯洛文尼亚": "Slovenia", - "捷克": "Cộng hòa Séc", - "斯洛伐克": "Slovakia", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolivia", - "厄瓜多尔": "Ecuador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Ma Rốc", - "阿尔及利亚": "Algeria", - "突尼斯": "Tunisia", - "尼日利亚": "Nigeria", - "加纳": "Ghana", - "埃塞俄比亚": "Ethiopia", - "肯尼亚": "Kenya", - "坦桑尼亚": "Tanzania", - "乌干达": "Uganda", - "孟加拉国": "Bangladesh", - "以色列": "Israel", - "黎巴嫩": "Lebanon", - "约旦": "Jordan", - "伊拉克": "Iraq", - "科威特": "Kuwait", - "巴林": "Bahrain", - "卡塔尔": "Qatar", - "阿曼": "Oman", - "阿富汗": "Afghanistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepal", - "蒙古": "Mông Cổ", - "柬埔寨": "Campuchia", - "老挝": "Lào", - "文莱": "Brunei", - "东帝汶": "Timor-Leste", - "斐济": "Fiji", - "所罗门群岛": "Quần đảo Solomon", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Lịch sử dịch", - "enableRecording": "Bật ghi âm", - "viewAudioFiles": "Xem tệp âm thanh", - "headsetUser": "Người dùng tai nghe", - "phoneUser": "Người dùng điện thoại", - "selectSourceLanguage": "Chọn ngôn ngữ nguồn", - "selectTargetLanguage": "Chọn ngôn ngữ đích", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Chưa có lịch sử", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Xóa lịch sử", - "clearHistoryConfirm": "Bạn có chắc muốn xóa toàn bộ lịch sử dịch không? Thao tác này không thể hoàn tác.", - "unknownLanguage": "Ngôn ngữ không xác định", - "deleteSessionRecord": "Xóa bản ghi phiên", - "deleteSessionConfirm": "Bạn có chắc muốn xóa tất cả các bản ghi dịch của phiên này không? Thao tác này không thể hoàn tác.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Dịch tệp âm thanh", - "noAudioFiles": "Chưa có tệp âm thanh", - "calculating": "Đang tính toán...", - "playing": "Đang phát...", - "paused": "Đã tạm dừng", - "clickToPlay": "Nhấn để phát", - "rename": "Đổi tên", - "smartTranscription": "Chuyển đổi thông minh", - "renameAudioFile": "Đổi tên tệp âm thanh", - "enterNewFileName": "Vui lòng nhập tên tệp mới", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Bản ghi gốc", - "recordSummary": "Tóm tắt bản ghi", - "clickToGenerateSummary": "Nhấn nút bên dưới để tạo tóm tắt phiên", - "summaryContent": "Nội dung tóm tắt", - "copied": "Đã sao chép", - "summaryCopiledToClipboard": "Tóm tắt đã được sao chép vào khay nhớ tạm", - "extractSummary": "Trích xuất tóm tắt", - "summaryGenerated": "Đã tạo tóm tắt", - "generating": "Đang tạo...", - "regenerate": "Tạo lại", - "summaryTimeoutMessage": "Yêu cầu tạo tóm tắt đã hết thời gian, có thể do sự cố mạng hoặc máy chủ bận.", - "deleteTranslationRecord": "Xóa bản ghi dịch", - "deleteTranslationConfirm": "Bạn có chắc muốn xóa bản ghi dịch này không? Thao tác này không thể hoàn tác.", - "originalText": "Văn bản gốc", - "translatedText": "Văn bản dịch", - "sessionSummary": "Tóm tắt phiên", - "cannotShare": "Không thể chia sẻ", - "generateSummaryFirst": "Vui lòng tạo tóm tắt trước", - "translationSessionRecord": "Bản ghi phiên dịch", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Ghép nối thiết bị", "connectYourDeepSoundHeadset": "Kết nối tai nghe Voitrans của bạn", "bind": "Liên kết", @@ -1241,14 +1157,11 @@ const Map viVN = { "autoInputCode": "Tự động nhập mã", "skipBinding": "Bỏ qua liên kết", "rescan": "Quét lại", - "verifyingDevice": "Đang xác minh thiết bị...", "confirmBinding": "Xác nhận liên kết", "associatingDevice": "Đang liên kết thiết bị...", "goToBluetoothSettings": "Đến cài đặt Bluetooth", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Sẵn sàng để ghép nối", "preparingPairingEnvironment": "Đang chuẩn bị môi trường ghép nối...", "connectDeepSoundViaSystemBluetooth": "Vui lòng kết nối với thiết bị Voitrans qua Bluetooth hệ thống trước", @@ -1256,8 +1169,6 @@ const Map viVN = { "establishingDeviceAssociation": "Đang thiết lập liên kết thiết bị...", "waitingCompletePairing": "Vui lòng đợi, đang hoàn tất ghép nối...", "pairingSuccessRedirecting": "Ghép nối thành công! Sắp chuyển hướng đến trang chủ...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Vui lòng đảm bảo bạn đang kết nối với thiết bị Voitrans", "deviceAlreadyBoundToOtherAccount": "Thiết bị này đã được liên kết với tài khoản khác", "deviceAssociationFailed": "Liên kết thiết bị thất bại, vui lòng thử lại", @@ -1265,18 +1176,11 @@ const Map viVN = { "networkError": "Lỗi mạng", "authorizationFailedCheckCode": "Ủy quyền thất bại, vui lòng kiểm tra xem mã ủy quyền có đúng không", "pairingFailedRetry": "Ghép nối thất bại, vui lòng thử lại", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Vui lòng bật Bluetooth', 'deviceDisconnected': 'Thiết bị đã ngắt kết nối', 'readyToStartPairing': 'Sẵn sàng bắt đầu ghép nối', 'checkingEnvironment': 'Đang kiểm tra môi trường...', 'ensureHeadsetOnAndPairingMode': 'Vui lòng đảm bảo tai nghe đã bật và ở chế độ ghép nối', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Đang thiết lập kết nối an toàn...', 'needManualBindingAuthCode': 'Cần mã ủy quyền liên kết thủ công...', 'pairingSuccessful': 'Ghép nối thành công!', @@ -1295,8 +1199,6 @@ const Map viVN = { 'blePairingStartupFailed': 'Khởi động ghép nối BLE thất bại', 'bleConnectionFailed': 'Kết nối BLE thất bại', 'deviceAuthorizationFailedCheckCode': 'Ủy quyền thiết bị thất bại, vui lòng kiểm tra mã ủy quyền', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 @@ -1305,7 +1207,18 @@ const Map viVN = { 'bluetoothGuideTip': 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Phản hồi người dùng", 'feedbackInfo': 'Cung cấp phản hồi hoặc đề xuất', 'feedbackDescription': 'Vui lòng mô tả vấn đề hoặc đề xuất của bạn', @@ -1340,7 +1253,7 @@ const Map viVN = { "updateContent": "Nội dung cập nhật", "removeEarbudsEnsureBattery": "Lấy cả hai tai nghe ra và đảm bảo pin của cả hai đều trên 20%", - // 音乐列表页面 + // 音乐模块 "noMusic": "Không có nhạc", // 暂无音乐 "noPlayingMusic": "Không có nhạc đang phát", // 暂无播放音乐 "unknownSong": "Bài hát không xác định", // 未知歌曲 @@ -1388,20 +1301,122 @@ const Map viVN = { "波斯语": "Tiếng Ba Tư", "斯瓦希里语": "Tiếng Swahili", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": "Insufficient balance, please go to the corresponding recharge page to recharge.", - "recharge": "Go to Recharge", - // 会员到期提示 - "aiMemberExpiredDesc": "AI membership expired, please go to the membership recharge page to renew.", + // 国家列表 + "邮箱": "Email", + "中国": "Trung Quốc", + "美国": "Hoa Kỳ", + "加拿大": "Canada", + "俄罗斯": "Nga", + "英国": "Vương quốc Anh", + "德国": "Đức", + "意大利": "Ý", + "法国": "Pháp", + "西班牙": "Tây Ban Nha", + "南非": "Nam Phi", + "沙特阿拉伯": "Ả Rập Xê Út", + "土耳其": "Thổ Nhĩ Kỳ", + "日本": "Nhật Bản", + "韩国": "Hàn Quốc", + "新加坡": "Singapore", + "马来西亚": "Malaysia", + "泰国": "Thái Lan", + "越南": "Việt Nam", + "印度": "Ấn Độ", + "巴基斯坦": "Pakistan", + "菲律宾": "Philippines", + "印度尼西亚": "Indonesia", + "阿联酋": "Các Tiểu vương quốc Ả Rập Thống nhất", + "墨西哥": "Mexico", + "巴西": "Brazil", + "阿根廷": "Argentina", + "澳大利亚": "Úc", + "新西兰": "New Zealand", + "中国香港": "Hồng Kông (Trung Quốc)", + "中国澳门": "Macao (Trung Quốc)", + "中国台湾": "Đài Loan (Trung Quốc)", + "埃及": "Ai Cập", + "希腊": "Hy Lạp", + "荷兰": "Hà Lan", + "比利时": "Bỉ", + "匈牙利": "Hungary", + "罗马尼亚": "Romania", + "瑞士": "Thụy Sĩ", + "奥地利": "Áo", + "丹麦": "Đan Mạch", + "瑞典": "Thụy Điển", + "挪威": "Na Uy", + "波兰": "Ba Lan", + "秘鲁": "Peru", + "智利": "Chile", + "哥伦比亚": "Colombia", + "委内瑞拉": "Venezuela", + "葡萄牙": "Bồ Đào Nha", + "卢森堡": "Luxembourg", + "爱尔兰": "Ireland", + "冰岛": "Iceland", + "阿尔巴尼亚": "Albania", + "马耳他": "Malta", + "塞浦路斯": "Síp", + "芬兰": "Phần Lan", + "保加利亚": "Bulgaria", + "立陶宛": "Litva", + "拉脱维亚": "Latvia", + "爱沙尼亚": "Estonia", + "乌克兰": "Ukraina", + "塞尔维亚": "Serbia", + "克罗地亚": "Croatia", + "斯洛文尼亚": "Slovenia", + "捷克": "Cộng hòa Séc", + "斯洛伐克": "Slovakia", + "危地马拉": "Guatemala", + "萨尔瓦多": "El Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nicaragua", + "哥斯达黎加": "Costa Rica", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Bolivia", + "厄瓜多尔": "Ecuador", + "巴拉圭": "Paraguay", + "乌拉圭": "Uruguay", + "摩洛哥": "Ma Rốc", + "阿尔及利亚": "Algeria", + "突尼斯": "Tunisia", + "尼日利亚": "Nigeria", + "加纳": "Ghana", + "埃塞俄比亚": "Ethiopia", + "肯尼亚": "Kenya", + "坦桑尼亚": "Tanzania", + "乌干达": "Uganda", + "孟加拉国": "Bangladesh", + "以色列": "Israel", + "黎巴嫩": "Lebanon", + "约旦": "Jordan", + "伊拉克": "Iraq", + "科威特": "Kuwait", + "巴林": "Bahrain", + "卡塔尔": "Qatar", + "阿曼": "Oman", + "阿富汗": "Afghanistan", + "斯里兰卡": "Sri Lanka", + "缅甸": "Myanmar", + "尼泊尔": "Nepal", + "蒙古": "Mông Cổ", + "柬埔寨": "Campuchia", + "老挝": "Lào", + "文莱": "Brunei", + "东帝汶": "Timor-Leste", + "斐济": "Fiji", + "所罗门群岛": "Quần đảo Solomon", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/zh_cn.dart b/lib/core/translations/language/zh_cn.dart index 36db75d26..a52ee1a1c 100644 --- a/lib/core/translations/language/zh_cn.dart +++ b/lib/core/translations/language/zh_cn.dart @@ -1,4 +1,5 @@ const Map zhCN = { + // 通用 'continue': '继续', 'confirm': '确认', @@ -17,6 +18,11 @@ const Map zhCN = { "responseTimeout": "响应超时", "unknownError": "未知错误", "asrConnectionFailed": "语音识别服务连接失败,请检查网络或稍后重试", + "justNow": "刚刚", + "minutesAgo": "@minutes分钟前", + "yesterday": "昨天", + "daysAgo": "@days天前", + "hoursAgo": "@hours小时前", // 启动页 "slogan": "连接世界,岂止声音", @@ -27,7 +33,7 @@ const Map zhCN = { "explore": "发现", "settings": "设置", - // 语言 + // 语言列表 "followingSystem": "跟随系统", "chinese": "中文", "english": "英语", @@ -71,7 +77,7 @@ const Map zhCN = { "arabic": "阿拉伯语", "persian": "波斯语", - // 登录页 + // 登录模块 "welcome": "欢迎使用", "loginTips": "请使用手机号或邮箱登录/注册", "accountNumber": "手机号码或邮箱", @@ -98,12 +104,8 @@ const Map zhCN = { "resendVerificationCode": "重新发送验证码", "login": "登录", "usePasswordLogin": "使用密码登录", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans 声明", // Voitrans 声明 "welcomeToThisApp": "欢迎使用Voitrans,请充分阅读", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "不同意", // 不同意 @@ -158,7 +160,7 @@ const Map zhCN = { 'right': '右', 'checkConnectionStatusFailed': '检查连接状态失败', -// 发现页 + // 发现页 "searchAi": "搜索AI功能...", "exploreSlogan": "智能耳机,无限可能", "exploreSlogan1": "智能陪伴,无限可能", @@ -181,6 +183,7 @@ const Map zhCN = { "usageStats": "用量统计", "usageStatsInfo": "查看您的使用统计数据", "scene": "场景", + // 用量统计模块 "aiChat": "AI聊天", "translationStats": "翻译统计", @@ -201,7 +204,6 @@ const Map zhCN = { "translationApi": "翻译API", "asr": "语音识别", "tts": "语音合成", - //"aiSummary": "AI摘要", "dataVolumeStats": "数据量统计", "sourceTextCharacters": "源文本字符", "ttsTextCharacters": "TTS文本字符", @@ -218,7 +220,6 @@ const Map zhCN = { "totalAudioDuration": "音频总时长", "audioFileSize": "音频文件大小", "transcriptBytes": "转写字节", - // 通知文案 "loadFailed": "加载失败", "statsLoadFailedTryLater": "统计数据加载失败,请稍后重试", "cleanupComplete": "清理完成", @@ -226,7 +227,7 @@ const Map zhCN = { "exportFeature": "导出功能", "exportInDevelopment": "数据导出功能正在开发中", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': '可购买套餐', 'remainingQuota': '剩余额度', 'totalQuota': '总额度', @@ -291,50 +292,54 @@ const Map zhCN = { 'alipayPaymentLaunchFailed': '支付宝支付启动失败', 'cannotLaunchAlipayPayment': '无法启动支付宝支付', 'alipayPaymentException': '支付宝支付异常', - // AI 功能卡片 + "insufficientIntegral": "积分不足", + "insufficientBalanceDesc": "余额不足,请前往对应充值界面进行充值", + "recharge": "前往充值", + "aiMemberExpiredDesc": "AI会员已到期,请前往会员充值续费", + + // 商品模块 - AI商品页 'musicAndRecommendation': '听歌与推荐', 'navigationAndRoutes': '导航与路线', 'nearbySearch': '附近搜索', 'newsInformation': '新闻资讯', 'communicationAssistant': '通讯助手', - // 翻译功能卡片 + 'aiHeaderDesc1': '更长对话额度、更多工具调用、更强上下文长度支持。', + 'aiHeaderDesc2': '适用于智能体问答、总结分析、任务执行等场景。', + 'musicSearchPlaybackControl': '检索曲库、播放控制', + 'smartPlaylistAndSimilarRecommendations': '智能推荐歌单与相似歌曲', + 'routePlanningAndCongestionAvoidance': '路线规划与拥堵规避', + 'voiceBroadcastAndWaypoints': '语音播报与途径点设置', + 'realTimeWeatherForecast': '实时天气与预报', + 'clothingAdviceAndTravelReminders': '穿衣建议与出行提醒', + 'poiSearchFoodGasParking': '餐饮/加油/停车等地点检索', + 'ratingsHoursAndDirectRoutes': '评分、营业时间与路线直达', + 'hotNewsAndTopicOverview': '热点快讯与专题速览', + 'longArticleSummariesAndKeyPoints': '长文总结与要点提炼', + 'helpCallAndSMS': '帮忙拨打电话与发短信', + 'templatedMessagesAndScheduleReminders': '模板消息与日程提醒', + 'aiDisclaimer': '以上功能受设备权限、服务可用性与网络状况影响,具体以实际表现为准。', + + // 商品模块 - 翻译商品页 'realtimeTranscription': '实时同传', - // 'textTranslation' 已存在 'sceneLexicon': '场景词库', 'subtitleDisplay': '字幕显示', - // 会议功能卡片 + 'transHeaderDesc1': '多语种实时同传与文本翻译,低延时语音播报。', + 'transHeaderDesc2': '适用于出行、商务、演讲与教学等场景。', + 'translateZhEn': '中英互译', + 'lowLatencyVoiceBroadcast': '低延时语音播报', + 'multiLangTextTranslation': '多语种文本翻译', + 'termOptimizationContextPreserve': '术语优化与语境保持', + 'lexiconTourBusinessLife': '旅游/商务/生活词库', + 'personalVocabularyMemory': '专属词汇记忆', + 'conversationSubtitleLargeText': '对话字幕/大字模式', + 'colorHighContrast': '颜色高对比度', + 'transDisclaimer': '翻译效果受麦克风、网络时延与环境噪声影响,具体以实际表现为准。', + + // 商品模块 - 会议商品页 'meetingRecording': '会议记录', 'transcriptionAndSummary': '转写与总结', 'keywordSearch': '关键词检索', 'collaborationSharing': '协同分享', - // 商品名称(按ID) - 'ai_001_name': 'AI基础 100 次', - 'ai_002_name': 'AI基础 500 次', - 'ai_003_name': 'AI基础 1000 次', - 'meet_001_name': '会议基础 100 次', - 'meet_002_name': '会议基础 500 次', - 'meet_003_name': '会议基础 1000 次', - 'trans_001_name': '翻译基础 100 次', - 'trans_002_name': '翻译基础 500 次', - 'trans_003_name': '翻译基础 1000 次', - - // 商品描述(按ID) - 'ai_001_desc': '含 100 次使用,覆盖核心 AI 功能', - 'ai_002_desc': '含 500 次使用,覆盖核心 AI 功能', - 'ai_003_desc': '含 1000 次使用,覆盖核心 AI 功能', - 'meet_001_desc': '含 100 次会议录音/转写', - 'meet_002_desc': '含 500 次会议录音/转写', - 'meet_003_desc': '含 1000 次会议录音/转写', - 'trans_001_desc': '含 100 次翻译(语音/文本)', - 'trans_002_desc': '含 500 次翻译(语音/文本)', - 'trans_003_desc': '含 1000 次翻译(语音/文本)', - -// 商品页通用页脚 - 'appNameProvider': '应用名称:Voitrans · 服务提供:Voitrans', - 'iapCustomerServiceQQLabel': '内购商品专属客服QQ:@qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 'meetingHeaderDesc1': '录音转写、关键词检索与自动总结,提升会议效率。', 'meetingHeaderDesc2': '适用于商务会议、课堂笔记、访谈纪要等场景。', 'meetingAutoRecording': '自动录音与分段', @@ -347,37 +352,7 @@ const Map zhCN = { 'meetingMultiPlatformShare': '多平台分享', 'meetingDisclaimer': '建议在安静环境使用,效果受麦克风与网络影响,具体以实际表现为准。', - // 同传/翻译商品页描述 - 'transHeaderDesc1': '多语种实时同传与文本翻译,低延时语音播报。', - 'transHeaderDesc2': '适用于出行、商务、演讲与教学等场景。', - 'translateZhEn': '中英互译', - 'lowLatencyVoiceBroadcast': '低延时语音播报', - 'multiLangTextTranslation': '多语种文本翻译', - 'termOptimizationContextPreserve': '术语优化与语境保持', - 'lexiconTourBusinessLife': '旅游/商务/生活词库', - 'personalVocabularyMemory': '专属词汇记忆', - 'conversationSubtitleLargeText': '对话字幕/大字模式', - 'colorHighContrast': '颜色高对比度', - 'transDisclaimer': '翻译效果受麦克风、网络时延与环境噪声影响,具体以实际表现为准。', - - // AI 商品页描述 - 'aiHeaderDesc1': '更长对话额度、更多工具调用、更强上下文长度支持。', - 'aiHeaderDesc2': '适用于智能体问答、总结分析、任务执行等场景。', - 'musicSearchPlaybackControl': '检索曲库、播放控制', - 'smartPlaylistAndSimilarRecommendations': '智能推荐歌单与相似歌曲', - 'routePlanningAndCongestionAvoidance': '路线规划与拥堵规避', - 'voiceBroadcastAndWaypoints': '语音播报与途径点设置', - 'realTimeWeatherForecast': '实时天气与预报', - 'clothingAdviceAndTravelReminders': '穿衣建议与出行提醒', - 'poiSearchFoodGasParking': '餐饮/加油/停车等地点检索', - 'ratingsHoursAndDirectRoutes': '评分、营业时间与路线直达', - 'hotNewsAndTopicOverview': '热点快讯与专题速览', - 'longArticleSummariesAndKeyPoints': '长文总结与要点提炼', - 'helpCallAndSMS': '帮忙拨打电话与发短信', - 'templatedMessagesAndScheduleReminders': '模板消息与日程提醒', - 'aiDisclaimer': '以上功能受设备权限、服务可用性与网络状况影响,具体以实际表现为准。', - - // 会员商品页 + // 商品模块 - VIP会员页 'benefitsOverview': '权益总览', 'higherQuota': '更高使用额度', 'lowerUnitPrice': '更低单价', @@ -392,7 +367,32 @@ const Map zhCN = { 'crossDeviceSync': '跨设备同步', 'vipDisclaimer': '具体权益以实际套餐说明为准,可能随版本迭代调整。', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI基础 100 次', + 'ai_002_name': 'AI基础 500 次', + 'ai_003_name': 'AI基础 1000 次', + 'meet_001_name': '会议基础 100 次', + 'meet_002_name': '会议基础 500 次', + 'meet_003_name': '会议基础 1000 次', + 'trans_001_name': '翻译基础 100 次', + 'trans_002_name': '翻译基础 500 次', + 'trans_003_name': '翻译基础 1000 次', + 'ai_001_desc': '含 100 次使用,覆盖核心 AI 功能', + 'ai_002_desc': '含 500 次使用,覆盖核心 AI 功能', + 'ai_003_desc': '含 1000 次使用,覆盖核心 AI 功能', + 'meet_001_desc': '含 100 次会议录音/转写', + 'meet_002_desc': '含 500 次会议录音/转写', + 'meet_003_desc': '含 1000 次会议录音/转写', + 'trans_001_desc': '含 100 次翻译(语音/文本)', + 'trans_002_desc': '含 500 次翻译(语音/文本)', + 'trans_003_desc': '含 1000 次翻译(语音/文本)', + + // 商品模块 - 页脚 + 'appNameProvider': '应用名称:Voitrans · 服务提供:Voitrans', + 'iapCustomerServiceQQLabel': '内购商品专属客服QQ:@qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': '跳过', 'next': '下一步', 'sayLilyHint': '对着麦克风说:“Lily Lily”', @@ -403,7 +403,6 @@ const Map zhCN = { 'guideAwakenSuccess': '太棒了!你已成功唤醒Lily,接下来试试让它帮你做件事吧', 'confirmInput': '确定输入', 'guideClickSendPrefix': '点击发送,', - // AI 引导步骤 'guideWeatherStart': '对Lily说:“今天天气怎么样”', 'guideWeatherInput': '今天天气怎么样', 'guideWeatherSend': 'Lily会为你实时为你播报天气', @@ -429,7 +428,7 @@ const Map zhCN = { 'guideSmsSend': 'Lily会为你发送短信', 'guideSmsEnd': '短信已发送,语音操控更便捷', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "开始会议", 'edit': '编辑', 'delete': '删除', @@ -441,8 +440,6 @@ const Map zhCN = { 'recordingDetails': '录音详情', 'aiSummary': 'AI总结', 'meetingTranscript': '会议原文', - - // Meeting模块 - 导航和基础功能 'files': '文件', 'mine': '我的', 'connect': '连接', @@ -474,28 +471,27 @@ const Map zhCN = { 'audioVideoRecording': '音、视频录音', 'callRecording': '通话录音', 'importAudio': '导入音频', - 'meetingRecordExitTitle': '退出录音', // 退出录音 - 'meetingRecordExitMessage': '请选择离开后的操作', // 请选择离开后的操作 - 'meetingRecordEndAndSave': '结束录音并保存', // 结束录音并保存 - 'meetingRecordEndWithoutSave': '结束录音不保存', // 结束录音不保存 - 'meetingRecordContinueInBackground': '后台继续录音', // 后台继续录音 - 'meetingRecordStopTimeout': '结束录音超时,请重试', // 结束录音超时,请重试 - 'meetingRecordStopFailed': '结束录音失败,请重试', // 结束录音失败,请重试 - 'meetingRecordSaveFailed': '保存录音失败,请重试', // 保存录音失败,请重试 - 'meetingRecordRecordingNotificationTitle': '录音进行中', // 录音进行中 - 'meetingRecordRecordingNotificationBody': '正在后台录音,点击返回应用', // 正在后台录音,点击返回应用 - 'overlayPermissionTitle': '悬浮窗权限', // 悬浮窗权限 + 'meetingRecordExitTitle': '退出录音', + 'meetingRecordExitMessage': '请选择离开后的操作', + 'meetingRecordEndAndSave': '结束录音并保存', + 'meetingRecordEndWithoutSave': '结束录音不保存', + 'meetingRecordContinueInBackground': '后台继续录音', + 'meetingRecordStopTimeout': '结束录音超时,请重试', + 'meetingRecordStopFailed': '结束录音失败,请重试', + 'meetingRecordSaveFailed': '保存录音失败,请重试', + 'meetingRecordRecordingNotificationTitle': '录音进行中', + 'meetingRecordRecordingNotificationBody': '正在后台录音,点击返回应用', + 'overlayPermissionTitle': '悬浮窗权限', 'overlayPermissionTranslationDesc': - '为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 + '为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。', 'overlayPermissionRecordingDesc': - '为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 + '为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。', 'overlayPermissionOpenSettingsFailed': - '无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 + '无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。', 'transcribing': '正在转写...', 'summarizing': '正在总结...', 'analyzing': '正在分析...', 'summaryComplete': '总结完成', - //'generating': '正在生成...', 'generate': '生成', 'overview': '概览', 'transcription': '转写', @@ -504,6 +500,94 @@ const Map zhCN = { 'editSpeaker': '编辑', 'nameSpeaker': '命名发言者', + // Meeting模块 - 转写与总结 + 'reSummarize': '重新总结', + 'dateAndTime': '日期时间', + 'location': '地点', + 'attendees': '与会人员', + 'inputLocation': '输入地点', + 'inputAttendees': '输入与会人员', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': '选择总结模版', + 'useThisTemplate': '就用这个模版', + 'lastUsed': '上次使用', + 'create': '创建', + 'templateDetails': '模版详情', + 'tag': '标签', + 'description': '描述', + 'template': '模版', + 'deleteTemplate': '删除模版', + 'deleteTemplateConfirm': '确定要删除当前模版吗?', + 'editTemplate': '编辑模版', + 'createTemplate': '创建模版', + 'name': '名称', + 'templateContentHint': '请输入模版内容!温馨提示:点击上方AI,根据上面填写的名称和描述,可以帮助你快速生成模版内容', + 'inputNameHint': '请输入名称', + 'inputDescHint': '请输入描述', + 'custom': '自定义', + 'pleaseEnter': '请输入', + 'viewAll': '查看全部', + 'recordingLanguage': '录音语言', + 'chineseSimplified': '中文普通话(简体)', + 'meetingGenerateNow': '立即生成', + 'keyEventsAnalyzed': '分析出{count}个关键事件。', + 'aiAnalysisDesc': 'AI分析识别录音中的关键事件,让你选择重要事件进行AI生成。', + + // Meeting模块 - 文件操作 + 'importing': '正在导入...', + 'batchImporting': '正在批量导入...', + 'importingLocalRecordings': '正在导入本地录音...', + 'importFailed': '导入文件失败: {filePath}, error: {error}', + 'importSuccess': '成功导入本地 {count} 条录音', + 'importError': '导入失败: {error}', + 'pleaseSelectAudioFile': '请选择音频文件', + 'shareAudio': '分享会议音频', + 'shareComplete': '分享完成!', + 'shareFailed': '分享失败: {error}', + 'fileProcessingFailed': '文件处理失败: {filePath}, 错误: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': '保存思维导图', + 'shareMindMap': '分享思维导图', + 'shareSuccess': '分享成功', + + // Meeting模块 - AI问答 + 'askAI': '问 AI ...', + 'askAIPrompt': '今天我能帮您做点什么呢?', + 'continueAsk': '继续提问', + 'todoList': '代办事项', + 'extractConclusion': '提取结论', + 'generateKeyIndicators': '生成关键指标', + + // Meeting模块 - 分享与导出 + 'shareLink': '分享链接', + 'copyTranscript': '复制转写', + 'copySummary': '复制总结', + 'exportAudio': '导出音频', + 'exportTranscript': '导出转写', + 'shareMeetingAudio': '分享会议音频', + 'exportSummary': '导出总结', + 'exportAs': '导出为', + 'exportingPDF': '正在导出PDF...', + 'export': '导出', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': '应用到这个发言者的所有段落', + 'summaryWillBeUpdatedAutomatically': '总结将根据模版自动更新', + 'nameCurrentSpeaker': '命名当前发言者', + 'recentlyUsedNames': '最近使用过的名称', + 'applyToCurrentParagraph': '应用到当前段落', + 'totalTime': '总计', + 'summarySpeakerWillBeUpdatedAutomatically': '总结的发言者将自动更新', + + // Meeting模块 - 云端同步 + 'syncToCloud': '同步到云端', + 'syncToCloudTip': + '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', + 'syncToVoitransApp': '同步VOITRANS APP', + 'transcriptionRecord': '转写记录', + // Meeting模块 - 我的页面 'transcriptionRecords': '转写记录', 'templateCommunity': '模版社区', @@ -522,7 +606,7 @@ const Map zhCN = { 'bindDeviceToActivate': '绑定 Voitrans 设备可激活 Starter 会员', 'unlockNow': '立即解锁', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': '对比', 'detailedInfo': '详细信息', 'monthlyTranscriptionTime': '每月转写时长', @@ -548,8 +632,6 @@ const Map zhCN = { 'aiVoiceEnhancementDesc': 'Al 人声增强支持多档降噪设置,智能消除背景噪音,增强语音清晰度,提升音频回放效果。', 'audioImportDesc': '可以轻松从本地或第三方应用导入音频文件,如语音备忘录、Google云端硬盘等。', 'multipleExportFormatsDesc': '导出您的音频录音、转写文本和摘要为各种格式(TXT、PDF、JPEG),以满足您的需求。', - - // Meeting模块 - 升级会员 'upgradeMembership': '升级您的会员', 'yearlySubscription': '年订阅', 'monthlySubscription': '月订阅', @@ -574,132 +656,27 @@ const Map zhCN = { 'validityNote': '购买后立即激活,激活后2年内有效。', 'purchase': '购买', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': '选择总结模版', - 'useThisTemplate': '就用这个模版', - 'lastUsed': '上次使用', - 'create': '创建', - 'templateDetails': '模版详情', - 'tag': '标签', - 'description': '描述', - 'template': '模版', - 'deleteTemplate': '删除模版', - 'deleteTemplateConfirm': '确定要删除当前模版吗?', - 'editTemplate': '编辑模版', - 'createTemplate': '创建模版', - 'name': '名称', - 'templateContentHint': '请输入模版内容!温馨提示:点击上方AI,根据上面填写的名称和描述,可以帮助你快速生成模版内容', - 'inputNameHint': '请输入名称', - 'inputDescHint': '请输入描述', - 'custom': '自定义', - 'viewAll': '查看全部', - 'recordingLanguage': '录音语言', - 'chineseSimplified': '中文普通话(简体)', - 'meetingGenerateNow': '立即生成', - 'keyEventsAnalyzed': '分析出{count}个关键事件。', - 'aiAnalysisDesc': 'AI分析识别录音中的关键事件,让你选择重要事件进行AI生成。', - - // Meeting模块 - 文件操作和状态 - 'importing': '正在导入...', - 'batchImporting': '正在批量导入...', - 'importingLocalRecordings': '正在导入本地录音...', - 'importFailed': '导入文件失败: {filePath}, error: {error}', - 'importSuccess': '成功导入本地 {count} 条录音', - 'importError': '导入失败: {error}', - 'pleaseSelectAudioFile': '请选择音频文件', - 'shareAudio': '分享会议音频', - 'shareComplete': '分享完成!', - 'shareFailed': '分享失败: {error}', - 'fileProcessingFailed': '文件处理失败: {filePath}, 错误: {error}', + // Meeting模块 - 录音语言 + 'recordLanguage': '录音语言', + 'cantonese': '粤语', + 'sichuan': '四川话', + 'shanghai': '上海话', - // 翻译模块 - Meeting相关 + // Meeting模块 - 错误提示 'meetingUnknownLanguage': '未知语言', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': '存储', - 'meetingStoragePermissionExplanation': '我们需要访问存储权限,以便您可以选择并上传音频文件。', - 'meetingStoragePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - // Meeting模块 - 思维导图相关 - 'saveMindMap': '保存思维导图', - 'shareMindMap': '分享思维导图', - 'shareSuccess': '分享成功', - - // Meeting模块 - AI相关 - 'askAI': '问 AI ...', - 'askAIPrompt': '今天我能帮您做点什么呢?', - 'continueAsk': '继续提问', - 'todoList': '代办事项', - 'extractConclusion': '提取结论', - 'generateKeyIndicators': '生成关键指标', - - // Meeting模块 - 更多操作相关 - 'reSummarize': '重新总结', - - // Meeting模块 - 错误提示相关 'analysisFailed': '分析失败,请稍后重试', 'transcriptionFailed': '转写失败,请稍后重试', 'summaryFailed': '总结失败,请稍后重试', 'summaryFailedShort': '总结失败', 'transcriptionFailedShort': '转写失败', - // Meeting模块 - 播放器相关 + // Meeting模块 - 播放器 'playerNotReady': '音频播放器未准备好,请稍候', 'playFailed': '播放失败', 'audioFileNotFound': '音频文件不存在', 'fetchingAudio': '正在从云端获取音频...', // 导出音频时本地文件不存在,尝试从云端下载的提示 'playerLoadFailed': '音频播放器加载失败', - // Meeting模块 - 录音语言相关 - 'recordLanguage': '录音语言', - // 'chinese': '中文普通话(简体)', - 'cantonese': '粤语', - 'sichuan': '四川话', - 'shanghai': '上海话', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': '分享链接', - 'copyTranscript': '复制转写', - 'copySummary': '复制总结', - 'exportAudio': '导出音频', - 'exportTranscript': '导出转写', - 'shareMeetingAudio': '分享会议音频', - 'exportSummary': '导出总结', - 'exportAs': '导出为', - 'exportingPDF': '正在导出PDF...', - 'export': '导出', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': '应用到这个发言者的所有段落', - 'summaryWillBeUpdatedAutomatically': '总结将根据模版自动更新', - 'nameCurrentSpeaker': '命名当前发言者', - 'recentlyUsedNames': '最近使用过的名称', - 'applyToCurrentParagraph': '应用到当前段落', - 'totalTime': '总计', - 'summarySpeakerWillBeUpdatedAutomatically': '总结的发言者将自动更新', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': '同步到云端', - 'syncToCloudTip': - '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', - 'syncToVoitransApp': '同步VOITRANS APP', - 'transcriptionRecord': '转写记录', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': '日期时间', - 'location': '地点', - 'attendees': '与会人员', - 'inputLocation': '输入地点', - 'inputAttendees': '输入与会人员', - // 设置页 "systemSettings": "系统设置", "vipRecharge": "会员充值", @@ -747,25 +724,14 @@ const Map zhCN = { "bleHeadsetFirmwareUpgrade": "BLE耳机固件版本升级", "deviceManagement": "设备管理", "manageConnectedDevices": "管理已绑定的蓝牙设备", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': '当前已是最新版本 {version}', 'checkUpdateFailed': '检查更新失败', 'networkErrorRetry': '网络错误,请稍后重试', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "实时语音对话", "realtimeVoiceChatInfo": "体验智能语音交互功能(功能预览)", "loading": "加载中...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "未知设备", "deviceTypeClassicBluetoothHeadset": "经典蓝牙耳机", "deviceTypeBleBluetoothHeadset": "BLE蓝牙耳机", @@ -780,8 +746,7 @@ const Map zhCN = { "confirmUnbindMessage": "确定要解绑设备 \"{deviceName}\" 吗?", "confirmUnbindAction": "确认解绑", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "清空聊天记录", "online": "在线", @@ -814,7 +779,7 @@ const Map zhCN = { "voice_interrupt_tip": "开启后:AI播报时不会被语音打断,只能进行单轮对话,需要打断时请说唤醒词开启新一轮对话。", // 开启后:AI播报时不会被语音打断,只能进行单轮对话,需要打断时请说唤醒词。关闭后:播报期间保持拾音,可能出现回声或误触发。 - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "来点音乐", // 来点音乐 "presetNavigation": "导航到", // 导航 "presetWeather": "今日天气", // 今日天气 @@ -826,7 +791,7 @@ const Map zhCN = { "todayNews": "今天有哪些新闻?", // 今日新闻 "nearbyFood": "附近有哪些美食?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': '你好!我是**Lily**,我能帮你:\n\n' '• 回答问题和提供信息\n\n' '• 实时语音翻译\n\n' @@ -842,18 +807,17 @@ const Map zhCN = { 'startVoiceInput': '开始语音输入', 'startPhoneCallMode': '开始打电话模式,开始语音输入', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': '在这里输入你的消息...', // 全屏编辑器输入提示 'characterCount': '{count} 字符', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': '复制', 'copySuccess': '复制成功', 'report': '举报', 'submitSuccess': '提交成功', 'submitFailed': '提交失败', 'reportSubmitted': '举报已提交,我们会尽快处理', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': '有害/不安全', 'pornographicVulgar': '色情低俗', 'misleadingAttack': '误导攻击', @@ -862,24 +826,21 @@ const Map zhCN = { 'copyrightViolation': '侵犯我的著作权、名誉权等', 'other': '其他', 'reportDescriptionHint': '我们想知道你举报的原因,你可以描述你遇到的问题。', - //'submit': '提交', - - //Message_bubble 'generatedByAi': '由AI生成', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': '以下是一些推荐的音乐:', 'playList': '播放列表', 'moreMusic': '更多音乐', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': '公里', // 公里单位 'meters': '米', // 米单位 'hours': '小时', // 小时单位 'minutes': '分钟', // 分钟单位 'seconds': '秒', // 秒单位 'navigating': '导航中', // 导航状态 - 'currentLocation': '当前位置', // 当前位置 + 'currentLocation': '当前位置', 'approximate': '约', // 大约 'enterRoad': '进入', // 进入道路 "driving": "驾车", @@ -887,7 +848,7 @@ const Map zhCN = { "bicycling": "骑行", "tsransit": "公交", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': '查询天气情况:', 'highest': '最高', 'lowest': '最低', @@ -908,18 +869,8 @@ const Map zhCN = { "friday": "周五", "saturday": "周六", "sunday": "周日", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "到期时间:", - "notActivated": "未激活", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "晴", "partlyCloudy": "少云", "partlySunny": "晴间多云", @@ -940,7 +891,119 @@ const Map zhCN = { "haze": "霾", "strongWind": "大风", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "图片翻译", + "textTranslation": "文本翻译", + + // 翻译模块 - 主页 + "translationHistory": "翻译历史", + "enableRecording": "是否开启录音", + "viewAudioFiles": "查看录音文件", + "headsetUser": "耳机用户", + "phoneUser": "手机用户", + "selectSourceLanguage": "选择源语言", + "selectTargetLanguage": "选择目标语言", + "me": "我", + "counterPart": "对方", + "bluetoothCallStateError": "请确保蓝牙耳机已连接到手机并处于通话状态", + "autoDetect": "自动检测", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "语言检测失败", + "translationFailed": "翻译失败", + "pleaseInputText": "请输入文本", + "textTooLong": "文本过长,最多5000字符", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "暂无历史记录", + "historyRecords": "历史记录", + "clearResults": "清空结果", + "clearHistory": "清除历史记录", + "clearHistoryConfirm": "确定要清除所有翻译历史记录吗?此操作无法撤销。", + "unknownLanguage": "未知语言", + "deleteSessionRecord": "删除会话记录", + "deleteSessionConfirm": "确定要删除该会话的所有翻译记录吗?此操作无法撤销。", + + // 翻译模块 - 图片翻译 + "selectImageSource": "选择图片来源", + "imagePreview": "图片预览", + "translationResult": "翻译结果", + "recognitionResult": "识别结果", + "translatedImagePreview": "翻译后的图片预览", + "translatedImageLoadFailed": "翻译图片加载失败", + "pleaseSelectImage": "请选择图片", + "imageLoadFailed": "图片加载失败", + "imageQuality": "图片质量", + "maxSize": "最大尺寸", + "close": "关闭", + "setImageQuality": "设置图片质量", + "currentQuality": "当前质量: @value%", + "setMaxSize": "设置最大尺寸", + "currentMaxSize": "当前: @pxpx", + "waitingForAction": "等待操作", + "pleaseSelectImageToStart": "请选择图片开始翻译", + "chooseImage": "选择图片", + "openingCamera": "正在打开相机...", + "openingPhotoAlbum": "正在打开相册...", + "cancelled": "已取消", + "userCancelledSelection": "用户取消了选择", + "translatingImage": "翻译图片", + "callingImageTranslateService": "正在调用图片翻译服务...", + "savingRecord": "保存记录", + "savingTranslationResult": "正在保存翻译结果...", + "translationCompleted": "翻译完成", + "allStepsCompleted": "所有步骤已完成", + "processingFailed": "处理失败", + "imageProcessingOrTranslationFailed": "图片处理或翻译失败,请重试。\n错误信息: {error}", + "imageTooLarge": "图片大小超过4MB限制", + "imageTooLargeHint": "图片大小超过4MB限制,请降低质量或尺寸后重试", + "emptyTranslationResult": "图片翻译接口返回空结果", + "imageTranslationFailedTryLater": "图片翻译失败,可能的原因:网络异常或接口限流,请稍后重试", + "imageTranslationApiException": "图片翻译接口调用异常,请检查网络后重试", + "permissionRequired": "权限需求", + "cameraPermissionRequired": "需要相机权限才能拍照", + "photoAlbumPermissionRequired": "需要相册权限才能选择图片", + "translationDetails": "翻译详情", + "originalImage": "原图片", + "sourceLanguage": "源语言", + "targetLanguage": "目标语言", + "translationTime": "翻译时间", + "shareInDevelopment": "分享功能开发中", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "翻译录音文件", + "noAudioFiles": "暂无音频文件", + "calculating": "计算中...", + "playing": "播放中...", + "paused": "已暂停", + "clickToPlay": "点击播放", + "rename": "重命名", + "smartTranscription": "智能转写", + "renameAudioFile": "重命名音频文件", + "enterNewFileName": "请输入新的文件名", + + // 翻译模块 - 翻译详情 + "originalRecord": "原始记录", + "recordSummary": "记录摘要", + "clickToGenerateSummary": "点击下方按钮生成会话摘要", + "summaryContent": "摘要内容", + "copied": "已复制", + "summaryCopiledToClipboard": "摘要已复制到剪贴板", + "extractSummary": "提取摘要", + "summaryGenerated": "已生成摘要", + "generating": "生成中...", + "regenerate": "重新生成", + "summaryTimeoutMessage": "生成摘要请求超时,可能是网络问题或服务器繁忙。", + "deleteTranslationRecord": "删除翻译记录", + "deleteTranslationConfirm": "确定要删除这条翻译记录吗?此操作无法撤销。", + "originalText": "原文", + "translatedText": "译文", + "sessionSummary": "会话摘要", + "cannotShare": "无法分享", + "generateSummaryFirst": "请先生成摘要", + "translationSessionRecord": "翻译会话记录", + + // 个人资料模块 "editProfile": "编辑个人信息", "avatar": "头像", "nickname": "昵称", @@ -955,8 +1018,6 @@ const Map zhCN = { 'deleteAccountTips': '确定要永久删除您的账号吗?此操作不可撤销', 'clean': '清除缓存', 'cleanTips': '确定要清除个人缓存吗?', - - // Profile 错误信息 'networkConnectionFailed': '网络连接失败,请检查网络设置后重试', 'serverTemporarilyUnavailable': '服务器暂时无法响应,请稍后重试', 'loginExpiredPleaseRelogin': '登录已过期,请重新登录', @@ -968,10 +1029,6 @@ const Map zhCN = { 'serverError': '服务器错误', 'networkConnectionFailedCheckSettings': '网络连接失败,请检查网络设置', 'serverInternalErrorRetryLater': '服务器内部错误,请稍后重试', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': '图片压缩失败', 'avatarUpdateFailed': '头像更新失败', 'usernameCannotBeEmpty': '用户名不能为空', @@ -982,19 +1039,21 @@ const Map zhCN = { 'logoutFailedRetry': '退出登录失败,请重试', 'accountPermanentlyDeleted': '账号已被永久删除', 'deleteAccountFailedRetry': '删除账号失败,请重试', - - // 账号服务相关 - 'clearUserDataFailed': '清理用户数据失败', // 清理用户数据失败 - 'deleteUserDataFailed': '删除用户数据失败', // 删除用户数据失败 - 'thirdPartyLogoutSuccess': '第三方登录退出成功', // 第三方登录退出成功 - 'thirdPartyLogoutFailed': '第三方登录退出失败', // 第三方登录退出失败 - 'signOutProcessError': '登出过程发生错误', // 登出过程发生错误 - 'deleteAccountProcessError': '删除账号过程发生错误', // 删除账号过程发生错误 - 'userDataClearSuccess': '用户数据清理成功', // 用户数据清理成功 - 'allUserDataClearSuccess': '所有用户数据清理成功', // 所有用户数据清理成功 - 'accountServiceInitialized': 'AccountService 已初始化', // AccountService 已初始化 - - // 权限管理页面 + 'clearUserDataFailed': '清理用户数据失败', + 'deleteUserDataFailed': '删除用户数据失败', + 'thirdPartyLogoutSuccess': '第三方登录退出成功', + 'thirdPartyLogoutFailed': '第三方登录退出失败', + 'signOutProcessError': '登出过程发生错误', + 'deleteAccountProcessError': '删除账号过程发生错误', + 'userDataClearSuccess': '用户数据清理成功', + 'allUserDataClearSuccess': '所有用户数据清理成功', + 'accountServiceInitialized': 'AccountService 已初始化', + + // 权限模块 + 'meetingStoragePermission': '存储', + 'meetingStoragePermissionExplanation': '我们需要访问存储权限,以便您可以选择并上传音频文件。', + 'meetingStoragePermissionPermanentDenial': + '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', 'getPermissionStatusFailed': '获取权限状态失败', 'communicationPermissions': '通讯权限', 'bluetoothPermissions': '蓝牙权限', @@ -1007,7 +1066,6 @@ const Map zhCN = { 'phone': '电话', 'sms': '短信', 'contacts': '联系人', - //'bluetooth': '蓝牙', 'notification': '通知', 'alarm': '闹钟', 'calendarWrite': '日历写入', @@ -1046,8 +1104,6 @@ const Map zhCN = { 'appNeedsPermissionForFullFunction': '应用需要此权限以提供完整功能', 'permanentDenialText': '您已永久拒绝{permission}权限,请前往应用设置开启', 'goToSettings': '去设置', - - // 权限申请 'bluetoothScan': '蓝牙扫描', 'bluetoothConnect': '蓝牙连接', 'bluetoothScanExplanation': '为了扫描附近的蓝牙设备,应用需要获取蓝牙扫描权限。', @@ -1062,7 +1118,6 @@ const Map zhCN = { 'locationPermissionExplanation': '需要定位权限来获取当前位置。', 'notificationPermissionPermanentDenial': '您已永久拒绝通知权限,请前往设置开启权限。', 'locationPermissionPermanentDenial': '您已永久拒绝定位权限,请前往设置开启权限。', -//'microphonePermission': '录音', 'storagePermission': '存储', 'microphonePermissionExplanation': '我们需要访问麦克风权限,以便您录制音频内容。', 'storagePermissionExplanation': '我们需要访问存储权限,以便您可以选择并上传音频文件。', @@ -1070,6 +1125,11 @@ const Map zhCN = { '检测到您已永久拒绝录音权限。如需继续使用此功能,请前往应用设置中手动开启麦克风权限。', 'storagePermissionPermanentDenial': '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', + 'permissionUtilNeed': '需要', + 'permissionUtilPermission': '权限', + 'permissionUtilRestricted': '权限受限', + 'permissionUtilRestrictedMessage': '此功能在当前设备上不可用或受限,请检查设备设置或系统限制', + 'permissionUtilConfirm': '确定', // 原生前台服务通知(Android) 'native.notification.appName': 'VOITRANS', @@ -1084,14 +1144,7 @@ const Map zhCN = { 'native.notification.music.pause': '暂停', 'native.notification.qqMusic.playing': '正在播放音乐', - //permission_util.dart - 'permissionUtilNeed': '需要', - 'permissionUtilPermission': '权限', - 'permissionUtilRestricted': '权限受限', - 'permissionUtilRestrictedMessage': '此功能在当前设备上不可用或受限,请检查设备设置或系统限制', - 'permissionUtilConfirm': '确定', - - // 版本更新对话框 + // 版本更新 'newVersionFound': '发现新版本', // 版本更新对话框标题 'remindLater': '稍后提醒', // 稍后提醒按钮 'updateNow': '立即更新', // 立即更新按钮 @@ -1100,242 +1153,7 @@ const Map zhCN = { 'cannotOpenAppStore': '无法打开应用商店,请手动前往应用商店更新', // 无法打开应用商店提示 'updateErrorRetry': '更新过程中发生错误,请稍后重试', // 更新错误重试提示 - //国家列表 - "邮箱": "邮箱", - "中国": "中国", - "美国": "美国", - "加拿大": "加拿大", - "俄罗斯": "俄罗斯", - "英国": "英国", - "德国": "德国", - "意大利": "意大利", - "法国": "法国", - "西班牙": "西班牙", - "南非": "南非", - "沙特阿拉伯": "沙特阿拉伯", - "土耳其": "土耳其", - "日本": "日本", - "韩国": "韩国", - "新加坡": "新加坡", - "马来西亚": "马来西亚", - "泰国": "泰国", - "越南": "越南", - "印度": "印度", - "巴基斯坦": "巴基斯坦", - "菲律宾": "菲律宾", - "印度尼西亚": "印度尼西亚", - "阿联酋": "阿联酋", - "墨西哥": "墨西哥", - "巴西": "巴西", - "阿根廷": "阿根廷", - "澳大利亚": "澳大利亚", - "新西兰": "新西兰", - "中国香港": "中国香港", - "中国澳门": "中国澳门", - "中国台湾": "中国台湾", - "埃及": "埃及", - "希腊": "希腊", - "荷兰": "荷兰", - "比利时": "比利时", - "匈牙利": "匈牙利", - "罗马尼亚": "罗马尼亚", - "瑞士": "瑞士", - "奥地利": "奥地利", - "丹麦": "丹麦", - "瑞典": "瑞典", - "挪威": "挪威", - "波兰": "波兰", - "秘鲁": "秘鲁", - "智利": "智利", - "哥伦比亚": "哥伦比亚", - "委内瑞拉": "委内瑞拉", - "葡萄牙": "葡萄牙", - "卢森堡": "卢森堡", - "爱尔兰": "爱尔兰", - "冰岛": "冰岛", - "阿尔巴尼亚": "阿尔巴尼亚", - "马耳他": "马耳他", - "塞浦路斯": "塞浦路斯", - "芬兰": "芬兰", - "保加利亚": "保加利亚", - "立陶宛": "立陶宛", - "拉脱维亚": "拉脱维亚", - "爱沙尼亚": "爱沙尼亚", - "乌克兰": "乌克兰", - "塞尔维亚": "塞尔维亚", - "克罗地亚": "克罗地亚", - "斯洛文尼亚": "斯洛文尼亚", - "捷克": "捷克", - "斯洛伐克": "斯洛伐克", - "危地马拉": "危地马拉", - "萨尔瓦多": "萨尔瓦多", - "洪都拉斯": "洪都拉斯", - "尼加拉瓜": "尼加拉瓜", - "哥斯达黎加": "哥斯达黎加", - "巴拿马": "巴拿马", - "海地": "海地", - "玻利维亚": "玻利维亚", - "厄瓜多尔": "厄瓜多尔", - "巴拉圭": "巴拉圭", - "乌拉圭": "乌拉圭", - "摩洛哥": "摩洛哥", - "阿尔及利亚": "阿尔及利亚", - "突尼斯": "突尼斯", - "尼日利亚": "尼日利亚", - "加纳": "加纳", - "埃塞俄比亚": "埃塞俄比亚", - "肯尼亚": "肯尼亚", - "坦桑尼亚": "坦桑尼亚", - "乌干达": "乌干达", - "孟加拉国": "孟加拉国", - "以色列": "以色列", - "黎巴嫩": "黎巴嫩", - "约旦": "约旦", - "伊拉克": "伊拉克", - "科威特": "科威特", - "巴林": "巴林", - "卡塔尔": "卡塔尔", - "阿曼": "阿曼", - "阿富汗": "阿富汗", - "斯里兰卡": "斯里兰卡", - "缅甸": "缅甸", - "尼泊尔": "尼泊尔", - "蒙古": "蒙古", - "柬埔寨": "柬埔寨", - "老挝": "老挝", - "文莱": "文莱", - "东帝汶": "东帝汶", - "斐济": "斐济", - "所罗门群岛": "所罗门群岛", - "刚果民主共和国": "刚果民主共和国", - "安哥拉": "安哥拉", - "苏丹": "苏丹", - "马尔代夫": "马尔代夫", - "不丹": "不丹", - "摩纳哥": "摩纳哥", - "圣马力诺": "圣马力诺", - "牙买加": "牙买加", - "巴哈马": "巴哈马", - "巴布亚新几内亚": "巴布亚新几内亚", - "萨摩亚": "萨摩亚", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "图片翻译", - "textTranslation": "文本翻译", - - // 翻译主页 (translation_view.dart) - "translationHistory": "翻译历史", - "enableRecording": "是否开启录音", - "viewAudioFiles": "查看录音文件", - "headsetUser": "耳机用户", - "phoneUser": "手机用户", - "selectSourceLanguage": "选择源语言", - "selectTargetLanguage": "选择目标语言", - "me": "我", - "counterPart": "对方", - "bluetoothCallStateError": "请确保蓝牙耳机已连接到手机并处于通话状态", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "自动检测", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "语言检测失败", - "translationFailed": "翻译失败", - "pleaseInputText": "请输入文本", - "textTooLong": "文本过长,最多5000字符", - - // 翻译历史页 - "noTranslationHistory": "暂无历史记录", - "historyRecords": "历史记录", - "clearResults": "清空结果", - "clearHistory": "清除历史记录", - "clearHistoryConfirm": "确定要清除所有翻译历史记录吗?此操作无法撤销。", - "unknownLanguage": "未知语言", - "deleteSessionRecord": "删除会话记录", - "deleteSessionConfirm": "确定要删除该会话的所有翻译记录吗?此操作无法撤销。", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "选择图片来源", - "imagePreview": "图片预览", - "translationResult": "翻译结果", - "recognitionResult": "识别结果", - "translatedImagePreview": "翻译后的图片预览", - "translatedImageLoadFailed": "翻译图片加载失败", - "pleaseSelectImage": "请选择图片", - "imageLoadFailed": "图片加载失败", - "imageQuality": "图片质量", - "maxSize": "最大尺寸", - "close": "关闭", - "setImageQuality": "设置图片质量", - "currentQuality": "当前质量: @value%", - "setMaxSize": "设置最大尺寸", - "currentMaxSize": "当前: @pxpx", - "waitingForAction": "等待操作", - "pleaseSelectImageToStart": "请选择图片开始翻译", - "chooseImage": "选择图片", - "openingCamera": "正在打开相机...", - "openingPhotoAlbum": "正在打开相册...", - "cancelled": "已取消", - "userCancelledSelection": "用户取消了选择", - "translatingImage": "翻译图片", - "callingImageTranslateService": "正在调用图片翻译服务...", - "savingRecord": "保存记录", - "savingTranslationResult": "正在保存翻译结果...", - "translationCompleted": "翻译完成", - "allStepsCompleted": "所有步骤已完成", - "processingFailed": "处理失败", - "imageProcessingOrTranslationFailed": "图片处理或翻译失败,请重试。\n错误信息: {error}", - "imageTooLarge": "图片大小超过4MB限制", - "imageTooLargeHint": "图片大小超过4MB限制,请降低质量或尺寸后重试", - "emptyTranslationResult": "图片翻译接口返回空结果", - "imageTranslationFailedTryLater": "图片翻译失败,可能的原因:网络异常或接口限流,请稍后重试", - "imageTranslationApiException": "图片翻译接口调用异常,请检查网络后重试", - "permissionRequired": "权限需求", - "cameraPermissionRequired": "需要相机权限才能拍照", - "photoAlbumPermissionRequired": "需要相册权限才能选择图片", - "translationDetails": "翻译详情", - "originalImage": "原图片", - "sourceLanguage": "源语言", - "targetLanguage": "目标语言", - "translationTime": "翻译时间", - "shareInDevelopment": "分享功能开发中", - - // 翻译录音文件列表页 - "translateAudioFiles": "翻译录音文件", - "noAudioFiles": "暂无音频文件", - "calculating": "计算中...", - "playing": "播放中...", - "paused": "已暂停", - "clickToPlay": "点击播放", - "rename": "重命名", - "smartTranscription": "智能转写", - "renameAudioFile": "重命名音频文件", - "enterNewFileName": "请输入新的文件名", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "原始记录", - "recordSummary": "记录摘要", - "clickToGenerateSummary": "点击下方按钮生成会话摘要", - "summaryContent": "摘要内容", - "copied": "已复制", - "summaryCopiledToClipboard": "摘要已复制到剪贴板", - "extractSummary": "提取摘要", - "summaryGenerated": "已生成摘要", - "generating": "生成中...", - "regenerate": "重新生成", - "summaryTimeoutMessage": "生成摘要请求超时,可能是网络问题或服务器繁忙。", - "deleteTranslationRecord": "删除翻译记录", - "deleteTranslationConfirm": "确定要删除这条翻译记录吗?此操作无法撤销。", - "originalText": "原文", - "translatedText": "译文", - "sessionSummary": "会话摘要", - "cannotShare": "无法分享", - "generateSummaryFirst": "请先生成摘要", - "translationSessionRecord": "翻译会话记录", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "设备配对", "connectYourDeepSoundHeadset": "连接您的 Voitrans 耳机", "bind": "绑定", @@ -1344,14 +1162,11 @@ const Map zhCN = { "autoInputCode": "自动输入代码", "skipBinding": "跳过绑定", "rescan": "重新扫描", - "verifyingDevice": "正在验证设备...", "confirmBinding": "确认绑定", "associatingDevice": "正在关联设备...", "goToBluetoothSettings": "前往蓝牙设置", 'bluetooth': '蓝牙', - - // 配对状态文本 "readyToPair": "准备开始配对", "preparingPairingEnvironment": "正在准备配对环境...", "connectDeepSoundViaSystemBluetooth": "请先通过系统蓝牙连接Voitrans设备", @@ -1359,8 +1174,6 @@ const Map zhCN = { "establishingDeviceAssociation": "正在建立设备关联...", "waitingCompletePairing": "请稍候,正在完成配对...", "pairingSuccessRedirecting": "配对成功!即将跳转到主页...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "当前使用设备:%s,请确保连接的是Voitrans支持的设备", "deviceAlreadyBoundToOtherAccount": "该设备已被其他账号绑定", "deviceAssociationFailed": "设备关联失败,请重试", @@ -1368,18 +1181,11 @@ const Map zhCN = { "networkError": "网络错误", "authorizationFailedCheckCode": "授权失败,请检查授权码是否正确", "pairingFailedRetry": "配对失败,请重试", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': '请开启蓝牙', 'deviceDisconnected': '设备已断开', 'readyToStartPairing': '准备开始配对', 'checkingEnvironment': '正在检查环境...', 'ensureHeadsetOnAndPairingMode': '请确保耳机已开启并进入配对模式', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': '正在建立安全连接...', 'needManualBindingAuthCode': '需要手动绑定授权码...', 'pairingSuccessful': '配对成功!', @@ -1398,17 +1204,26 @@ const Map zhCN = { 'blePairingStartupFailed': 'BLE配对启动失败', 'bleConnectionFailed': 'BLE连接失败', 'deviceAuthorizationFailedCheckCode': '设备授权失败,请检查授权码', + 'bluetoothGuideTitle': '需要手动开启蓝牙', + 'bluetoothGuideSteps': '请按照以下步骤操作:', + 'bluetoothGuideStep1': '开启蓝牙:设置 → 蓝牙 → 开启', + 'bluetoothGuideStep2': '连接设备:在"我的设备"中找到您的设备并点击连接', + 'bluetoothGuideStep3': '返回应用继续配对流程', + 'bluetoothGuideTip': '提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置', + 'iKnow': '我知道了', + + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "到期时间:", + "notActivated": "未激活", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", - ///iOS蓝牙引导窗 - 'bluetoothGuideTitle': '需要手动开启蓝牙', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': '请按照以下步骤操作:', // 请按照以下步骤操作: - 'bluetoothGuideStep1': '开启蓝牙:设置 → 蓝牙 → 开启', // 开启蓝牙:设置 → 蓝牙 → 开启 - 'bluetoothGuideStep2': '连接设备:在"我的设备"中找到您的设备并点击连接', // 连接设备:在"我的设备"中找到您的设备并点击连接 - 'bluetoothGuideStep3': '返回应用继续配对流程', // 返回应用继续配对流程 - 'bluetoothGuideTip': '提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': '我知道了', // 我知道了 - - //用户反馈页 + // 用户反馈模块 "feedback": "用户反馈", 'feedbackInfo': '提供反馈或建议', 'feedbackDescription': '请描述您遇到的问题或建议', @@ -1443,7 +1258,7 @@ const Map zhCN = { "updateContent": "更新内容", "removeEarbudsEnsureBattery": "取出双耳机,并保证电量均为20%以上的状态", - // 音乐列表页面 + // 音乐模块 "noMusic": "暂无音乐", // 暂无音乐 "noPlayingMusic": "暂无播放音乐", // 暂无播放音乐 "unknownSong": "未知歌曲", // 未知歌曲 @@ -1491,20 +1306,122 @@ const Map zhCN = { "波斯语": "波斯语", "斯瓦希里语": "斯瓦希里语", - // 时间相关 - "justNow": "刚刚", - "minutesAgo": "@minutes分钟前", - "yesterday": "昨天", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days天前", - "hoursAgo": "@hours小时前", - - //补充 - "insufficientIntegral": "积分不足", - - //余额不足弹窗 - "insufficientBalanceDesc": "余额不足,请前往对应充值界面进行充值", - "recharge": "前往充值", - // 会员到期提示 - "aiMemberExpiredDesc": "AI会员已到期,请前往会员充值续费", + // 国家列表 + "邮箱": "邮箱", + "中国": "中国", + "美国": "美国", + "加拿大": "加拿大", + "俄罗斯": "俄罗斯", + "英国": "英国", + "德国": "德国", + "意大利": "意大利", + "法国": "法国", + "西班牙": "西班牙", + "南非": "南非", + "沙特阿拉伯": "沙特阿拉伯", + "土耳其": "土耳其", + "日本": "日本", + "韩国": "韩国", + "新加坡": "新加坡", + "马来西亚": "马来西亚", + "泰国": "泰国", + "越南": "越南", + "印度": "印度", + "巴基斯坦": "巴基斯坦", + "菲律宾": "菲律宾", + "印度尼西亚": "印度尼西亚", + "阿联酋": "阿联酋", + "墨西哥": "墨西哥", + "巴西": "巴西", + "阿根廷": "阿根廷", + "澳大利亚": "澳大利亚", + "新西兰": "新西兰", + "中国香港": "中国香港", + "中国澳门": "中国澳门", + "中国台湾": "中国台湾", + "埃及": "埃及", + "希腊": "希腊", + "荷兰": "荷兰", + "比利时": "比利时", + "匈牙利": "匈牙利", + "罗马尼亚": "罗马尼亚", + "瑞士": "瑞士", + "奥地利": "奥地利", + "丹麦": "丹麦", + "瑞典": "瑞典", + "挪威": "挪威", + "波兰": "波兰", + "秘鲁": "秘鲁", + "智利": "智利", + "哥伦比亚": "哥伦比亚", + "委内瑞拉": "委内瑞拉", + "葡萄牙": "葡萄牙", + "卢森堡": "卢森堡", + "爱尔兰": "爱尔兰", + "冰岛": "冰岛", + "阿尔巴尼亚": "阿尔巴尼亚", + "马耳他": "马耳他", + "塞浦路斯": "塞浦路斯", + "芬兰": "芬兰", + "保加利亚": "保加利亚", + "立陶宛": "立陶宛", + "拉脱维亚": "拉脱维亚", + "爱沙尼亚": "爱沙尼亚", + "乌克兰": "乌克兰", + "塞尔维亚": "塞尔维亚", + "克罗地亚": "克罗地亚", + "斯洛文尼亚": "斯洛文尼亚", + "捷克": "捷克", + "斯洛伐克": "斯洛伐克", + "危地马拉": "危地马拉", + "萨尔瓦多": "萨尔瓦多", + "洪都拉斯": "洪都拉斯", + "尼加拉瓜": "尼加拉瓜", + "哥斯达黎加": "哥斯达黎加", + "巴拿马": "巴拿马", + "海地": "海地", + "玻利维亚": "玻利维亚", + "厄瓜多尔": "厄瓜多尔", + "巴拉圭": "巴拉圭", + "乌拉圭": "乌拉圭", + "摩洛哥": "摩洛哥", + "阿尔及利亚": "阿尔及利亚", + "突尼斯": "突尼斯", + "尼日利亚": "尼日利亚", + "加纳": "加纳", + "埃塞俄比亚": "埃塞俄比亚", + "肯尼亚": "肯尼亚", + "坦桑尼亚": "坦桑尼亚", + "乌干达": "乌干达", + "孟加拉国": "孟加拉国", + "以色列": "以色列", + "黎巴嫩": "黎巴嫩", + "约旦": "约旦", + "伊拉克": "伊拉克", + "科威特": "科威特", + "巴林": "巴林", + "卡塔尔": "卡塔尔", + "阿曼": "阿曼", + "阿富汗": "阿富汗", + "斯里兰卡": "斯里兰卡", + "缅甸": "缅甸", + "尼泊尔": "尼泊尔", + "蒙古": "蒙古", + "柬埔寨": "柬埔寨", + "老挝": "老挝", + "文莱": "文莱", + "东帝汶": "东帝汶", + "斐济": "斐济", + "所罗门群岛": "所罗门群岛", + "刚果民主共和国": "刚果民主共和国", + "安哥拉": "安哥拉", + "苏丹": "苏丹", + "马尔代夫": "马尔代夫", + "不丹": "不丹", + "摩纳哥": "摩纳哥", + "圣马力诺": "圣马力诺", + "牙买加": "牙买加", + "巴哈马": "巴哈马", + "巴布亚新几内亚": "巴布亚新几内亚", + "萨摩亚": "萨摩亚", }; diff --git a/lib/core/translations/language/zh_hk.dart b/lib/core/translations/language/zh_hk.dart index aef489f72..7be68a20f 100644 --- a/lib/core/translations/language/zh_hk.dart +++ b/lib/core/translations/language/zh_hk.dart @@ -1,4 +1,5 @@ const Map zhHK = { + // 通用 'continue': '繼續', 'confirm': '確認', @@ -17,6 +18,11 @@ const Map zhHK = { "responseTimeout": "響應超時", "unknownError": "未知錯誤", "asrConnectionFailed": "語音識別服務連接失敗,請檢查網絡或稍後重試", + "justNow": '剛剛', + "minutesAgo": '@minutes分鐘前', + "yesterday": '昨天', + "daysAgo": '@days天前', + "hoursAgo": '@hours小時前', // 启动页 "slogan": "連接世界,豈止聲音", @@ -27,7 +33,7 @@ const Map zhHK = { "explore": "發現", "settings": "設定", - // 语言 + // 语言列表 "followingSystem": "跟隨系統", "chinese": "中文", "english": "英語", @@ -71,7 +77,7 @@ const Map zhHK = { "arabic": "阿拉伯語", "persian": "波斯語", - // 登录页 + // 登录模块 "welcome": "歡迎使用", "loginTips": "請使用手機號或郵箱登入/註冊", "accountNumber": "手機號碼或郵箱", @@ -98,12 +104,8 @@ const Map zhHK = { "resendVerificationCode": "重新發送驗證碼", "login": "登入", "usePasswordLogin": "使用密碼登入", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans 聲明", // Voitrans 声明 "welcomeToThisApp": "歡迎使用Voitrans,請充分閱讀", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": "點擊'同意並進入'表示您已充分閱讀並同意上述協議。點擊'不同意'將退出應用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "不同意", // 不同意 @@ -158,7 +160,7 @@ const Map zhHK = { 'right': '右', 'checkConnectionStatusFailed': '檢查連接狀態失敗', -// 发现页 + // 发现页 "searchAi": "搜尋AI功能...", "exploreSlogan": "智能耳機,無限可能", "exploreSlogan1": "智能陪伴,無限可能", @@ -181,6 +183,7 @@ const Map zhHK = { "usageStats": "用量統計", "usageStatsInfo": "查看您的使用統計數據", "scene": "場景", + // 用量统计模块 "aiChat": 'AI聊天', "translationStats": '翻譯統計', @@ -201,7 +204,6 @@ const Map zhHK = { "translationApi": '翻譯API', "asr": '語音識別', "tts": '語音合成', - //"aiSummary": "AI摘要", "dataVolumeStats": '數據量統計', "sourceTextCharacters": '來源文本字元', "ttsTextCharacters": 'TTS文本字元', @@ -218,7 +220,6 @@ const Map zhHK = { "totalAudioDuration": '音訊總時長', "audioFileSize": '音訊檔案大小', "transcriptBytes": '轉寫位元組', - // 通知文案 "loadFailed": '載入失敗', "statsLoadFailedTryLater": '統計數據載入失敗,請稍後重試', "cleanupComplete": '清理完成', @@ -226,7 +227,7 @@ const Map zhHK = { "exportFeature": '導出功能', "exportInDevelopment": '數據導出功能正在開發中', - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': '可購買套餐', 'remainingQuota': '剩餘額度', 'totalQuota': '總額度', @@ -291,50 +292,54 @@ const Map zhHK = { 'alipayPaymentLaunchFailed': '支付寶支付啟動失敗', 'cannotLaunchAlipayPayment': '無法啟動支付寶支付', 'alipayPaymentException': '支付寶支付異常', - // AI 功能卡片 + "insufficientIntegral": '積分不足', + "insufficientBalanceDesc": "餘額不足,請前往對應充值界面進行充值", + "recharge": "去充值", + "aiMemberExpiredDesc": 'AI會員已到期,請前往會員充值續費', + + // 商品模块 - AI商品页 'musicAndRecommendation': '聽歌與推薦', 'navigationAndRoutes': '導航與路線', 'nearbySearch': '附近搜尋', 'newsInformation': '新聞資訊', 'communicationAssistant': '通訊助手', - // 翻译功能卡片 + 'aiHeaderDesc1': '更長對話額度、更多工具調用、更強上下文長度支持。', + 'aiHeaderDesc2': '適用於智能體問答、總結分析、任務執行等場景。', + 'musicSearchPlaybackControl': '檢索曲庫、播放控制', + 'smartPlaylistAndSimilarRecommendations': '智能推薦歌單與相似歌曲', + 'routePlanningAndCongestionAvoidance': '路線規劃與擁堵規避', + 'voiceBroadcastAndWaypoints': '語音播報與途徑點設置', + 'realTimeWeatherForecast': '實時天氣與預報', + 'clothingAdviceAndTravelReminders': '穿衣建議與出行提醒', + 'poiSearchFoodGasParking': '餐飲/加油/停車等地點檢索', + 'ratingsHoursAndDirectRoutes': '評分、營業時間與路線直達', + 'hotNewsAndTopicOverview': '熱點快訊與專題速覽', + 'longArticleSummariesAndKeyPoints': '長文總結與要點提煉', + 'helpCallAndSMS': '幫忙撥打電話與發短信', + 'templatedMessagesAndScheduleReminders': '模板消息與日程提醒', + 'aiDisclaimer': '以上功能受設備權限、服務可用性與網絡狀況影響,具體以實際表現為準。', + + // 商品模块 - 翻译商品页 'realtimeTranscription': '實時同傳', - // 'textTranslation' 已存在 'sceneLexicon': '場景詞庫', 'subtitleDisplay': '字幕顯示', - // 会议功能卡片 + 'transHeaderDesc1': '多語種實時同傳與文本翻譯,低延時語音播報。', + 'transHeaderDesc2': '適用於出行、商務、演講與教學等場景。', + 'translateZhEn': '中英互譯', + 'lowLatencyVoiceBroadcast': '低延時語音播報', + 'multiLangTextTranslation': '多語種文本翻譯', + 'termOptimizationContextPreserve': '術語優化與語境保持', + 'lexiconTourBusinessLife': '旅遊/商務/生活詞庫', + 'personalVocabularyMemory': '專屬詞彙記憶', + 'conversationSubtitleLargeText': '對話字幕/大字模式', + 'colorHighContrast': '顏色高對比度', + 'transDisclaimer': '翻譯效果受麥克風、網絡時延與環境噪聲影響,具體以實際表現為準。', + + // 商品模块 - 会议商品页 'meetingRecording': '會議記錄', 'transcriptionAndSummary': '轉寫與總結', 'keywordSearch': '關鍵詞檢索', 'collaborationSharing': '協同分享', - // 商品名称(按ID) - 'ai_001_name': 'AI基礎 100 次', - 'ai_002_name': 'AI基礎 500 次', - 'ai_003_name': 'AI基礎 1000 次', - 'meet_001_name': '會議基礎 100 次', - 'meet_002_name': '會議基礎 500 次', - 'meet_003_name': '會議基礎 1000 次', - 'trans_001_name': '翻譯基礎 100 次', - 'trans_002_name': '翻譯基礎 500 次', - 'trans_003_name': '翻譯基礎 1000 次', - - // 商品描述(按ID) - 'ai_001_desc': '含 100 次使用,涵蓋核心 AI 功能', - 'ai_002_desc': '含 500 次使用,涵蓋核心 AI 功能', - 'ai_003_desc': '含 1000 次使用,涵蓋核心 AI 功能', - 'meet_001_desc': '含 100 次會議錄音/轉寫', - 'meet_002_desc': '含 500 次會議錄音/轉寫', - 'meet_003_desc': '含 1000 次會議錄音/轉寫', - 'trans_001_desc': '含 100 次翻譯(語音/文本)', - 'trans_002_desc': '含 500 次翻譯(語音/文本)', - 'trans_003_desc': '含 1000 次翻譯(語音/文本)', - -// 商品页通用页脚 - 'appNameProvider': '應用名稱:Voitrans · 服務提供:Voitrans', - 'iapCustomerServiceQQLabel': '內購商品專屬客服QQ:@qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 'meetingHeaderDesc1': '錄音轉寫、關鍵詞檢索與自動總結,提升會議效率。', 'meetingHeaderDesc2': '適用於商務會議、課堂筆記、訪談紀要等場景。', 'meetingAutoRecording': '自動錄音與分段', @@ -347,37 +352,7 @@ const Map zhHK = { 'meetingMultiPlatformShare': '多平台分享', 'meetingDisclaimer': '建議在安靜環境使用,效果受麥克風與網絡影響,具體以實際表現為準。', - // 同传/翻译商品页描述 - 'transHeaderDesc1': '多語種實時同傳與文本翻譯,低延時語音播報。', - 'transHeaderDesc2': '適用於出行、商務、演講與教學等場景。', - 'translateZhEn': '中英互譯', - 'lowLatencyVoiceBroadcast': '低延時語音播報', - 'multiLangTextTranslation': '多語種文本翻譯', - 'termOptimizationContextPreserve': '術語優化與語境保持', - 'lexiconTourBusinessLife': '旅遊/商務/生活詞庫', - 'personalVocabularyMemory': '專屬詞彙記憶', - 'conversationSubtitleLargeText': '對話字幕/大字模式', - 'colorHighContrast': '顏色高對比度', - 'transDisclaimer': '翻譯效果受麥克風、網絡時延與環境噪聲影響,具體以實際表現為準。', - - // AI 商品页描述 - 'aiHeaderDesc1': '更長對話額度、更多工具調用、更強上下文長度支持。', - 'aiHeaderDesc2': '適用於智能體問答、總結分析、任務執行等場景。', - 'musicSearchPlaybackControl': '檢索曲庫、播放控制', - 'smartPlaylistAndSimilarRecommendations': '智能推薦歌單與相似歌曲', - 'routePlanningAndCongestionAvoidance': '路線規劃與擁堵規避', - 'voiceBroadcastAndWaypoints': '語音播報與途徑點設置', - 'realTimeWeatherForecast': '實時天氣與預報', - 'clothingAdviceAndTravelReminders': '穿衣建議與出行提醒', - 'poiSearchFoodGasParking': '餐飲/加油/停車等地點檢索', - 'ratingsHoursAndDirectRoutes': '評分、營業時間與路線直達', - 'hotNewsAndTopicOverview': '熱點快訊與專題速覽', - 'longArticleSummariesAndKeyPoints': '長文總結與要點提煉', - 'helpCallAndSMS': '幫忙撥打電話與發短信', - 'templatedMessagesAndScheduleReminders': '模板消息與日程提醒', - 'aiDisclaimer': '以上功能受設備權限、服務可用性與網絡狀況影響,具體以實際表現為準。', - - // 会员商品页 + // 商品模块 - VIP会员页 'benefitsOverview': '權益總覽', 'higherQuota': '更高使用額度', 'lowerUnitPrice': '更低單價', @@ -392,7 +367,32 @@ const Map zhHK = { 'crossDeviceSync': '跨設備同步', 'vipDisclaimer': '具體權益以實際套餐說明為準,可能隨版本迭代調整。', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI基礎 100 次', + 'ai_002_name': 'AI基礎 500 次', + 'ai_003_name': 'AI基礎 1000 次', + 'meet_001_name': '會議基礎 100 次', + 'meet_002_name': '會議基礎 500 次', + 'meet_003_name': '會議基礎 1000 次', + 'trans_001_name': '翻譯基礎 100 次', + 'trans_002_name': '翻譯基礎 500 次', + 'trans_003_name': '翻譯基礎 1000 次', + 'ai_001_desc': '含 100 次使用,涵蓋核心 AI 功能', + 'ai_002_desc': '含 500 次使用,涵蓋核心 AI 功能', + 'ai_003_desc': '含 1000 次使用,涵蓋核心 AI 功能', + 'meet_001_desc': '含 100 次會議錄音/轉寫', + 'meet_002_desc': '含 500 次會議錄音/轉寫', + 'meet_003_desc': '含 1000 次會議錄音/轉寫', + 'trans_001_desc': '含 100 次翻譯(語音/文本)', + 'trans_002_desc': '含 500 次翻譯(語音/文本)', + 'trans_003_desc': '含 1000 次翻譯(語音/文本)', + + // 商品模块 - 页脚 + 'appNameProvider': '應用名稱:Voitrans · 服務提供:Voitrans', + 'iapCustomerServiceQQLabel': '內購商品專屬客服QQ:@qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "跳過", 'next': '下一步', 'sayLilyHint': "Say \"Lily Lily\" to the mic", @@ -403,7 +403,6 @@ const Map zhHK = { 'guideAwakenSuccess': "Great! Lily is awake—ask it to help.", 'confirmInput': "Confirm Input", 'guideClickSendPrefix': "Tap send, ", - // AI 引导步骤 'guideWeatherStart': "Tell Lily: “What’s the weather today?”", 'guideWeatherInput': "What’s the weather today?", 'guideWeatherSend': "Lily will report the weather in real time", @@ -430,7 +429,7 @@ const Map zhHK = { 'guideSmsSend': "Lily will send the message", 'guideSmsEnd': "Message sent—voice control is convenient", - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "開始會議", 'edit': '編輯', 'delete': '刪除', @@ -442,8 +441,6 @@ const Map zhHK = { 'recordingDetails': '錄音詳情', 'aiSummary': 'AI總結', 'meetingTranscript': '會議原文', - - // Meeting模块 - 导航和基础功能 'files': '檔案', 'mine': '我的', 'connect': '連接', @@ -496,7 +493,6 @@ const Map zhHK = { 'summarizing': '正在總結...', 'analyzing': '正在分析...', 'summaryComplete': '總結完成', - //'generating': '正在生成...', 'generate': '生成', 'overview': '概覽', 'transcription': '轉寫', @@ -505,77 +501,15 @@ const Map zhHK = { 'editSpeaker': '編輯', 'nameSpeaker': '命名發言者', - // Meeting模块 - 我的页面 - 'transcriptionRecords': '轉寫記錄', - 'templateCommunity': '模板社區', - 'comingSoon': '敬請期待', - 'integration': '集成', - 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', - 'enabled': '開啟', - 'disabled': '關閉', - 'myVoitransDevice': '我的VOITRANS設備', - 'helpAndFeedback': '幫助與反饋', - 'aboutVoitrans': '關於VOITRANS', - 'meetingDays': '天', - 'meetingHours': '小時', - 'voitransAiMember': 'Voitrans AI會員', - 'unlockStarterMember': '解鎖 Starter 會員', - 'bindDeviceToActivate': '綁定 Voitrans 設備可啟用 Starter 會員', - 'unlockNow': '立即解鎖', - - // Meeting模块 - 会员功能 - 'comparison': '對比', - 'detailedInfo': '詳細資訊', - 'monthlyTranscriptionTime': '每月轉寫時長', - 'unlimited': '無限', - 'professionalTemplates': '專業模板', - 'limited': '有限', - 'fullTemplates': '全量模板', - 'professionalTerms': '專業術語', - 'customTemplates': '自訂模板', - 'visualMindMap': '可視化思維導圖', - 'speakerIdentification': '區分說話人', - 'aiVoiceEnhancement': 'AI 人聲增強', - 'audioImport': '音訊導入', - 'multipleExportFormats': '支援多種導出格式', - 'professionalSummaryTemplates': '專業總結模板', - 'professionalTemplateDesc': '專業模板設計,提高您的工作效率。根據行業需求量身定制。', - 'customTemplateDesc': '您可以根據需求自訂總結 Prompts,並用它們生成所需的總結。', - 'askAiDesc': '從錄音中智能挖掘更深入資訊,一鍵生成數據表格、關鍵討論結論、To Do、匯報郵件等格式內容。', - 'visualMindMapDesc': '超越總結-用思維導圖整理和可視化要點,更有效地理解全文。', - 'templateCommunityDesc': '發現、分享,並從用戶建立的模板庫中獲得靈感。', - 'speakerIdentificationDesc': '音訊轉寫將支援區分發言者,更直觀地還原會議或電話通話內容。同時總結將更加準確。', - 'privateCloudSyncDesc': '您的錄音和轉寫等數據將安全儲存在專屬的雲端伺服器中,無論是上傳還是下載,全程加密處理,確保隱私安全。', - 'aiVoiceEnhancementDesc': 'AI 人聲增強支援多檔降噪設定,智能消除背景噪音,增強語音清晰度,提升音訊回放效果。', - 'audioImportDesc': '可以輕鬆從本地或第三方應用導入音訊檔案,如語音備忘錄、Google雲端硬碟等。', - 'multipleExportFormatsDesc': '導出您的音訊錄音、轉寫文本和摘要為各種格式(TXT、PDF、JPEG),以滿足您的需求。', - - // Meeting模块 - 升级会员 - 'upgradeMembership': '升級您的會員', - 'yearlySubscription': '年訂閱', - 'monthlySubscription': '月訂閱', - 'proMonthly': 'Pro ¥60/月', - 'proMonthlyDesc': '7天免費試用,之後按¥800/年。試用期結束前可隨時取消。', - 'sevenDayTrial': '7天免費試用', - 'unlimitedMonthly': 'Unlimited ¥120/月', - 'unlimitedMonthlyDesc': '7天免費試用,之後按¥1600/年。試用期結束前可隨時取消。', - 'trialNote': '*免費試用7天,然後按年收費,隨時取消。', - 'proPrice': 'Pro ¥120', - 'proMonthlyPrice': '¥120/月', - 'subscribe': '訂閱', - 'unlimitedPrice': 'Unlimited ¥198', - 'unlimitedMonthlyPrice': '¥198/月', - 'upgradeNote': '*升級訂閱後,原訂閱的剩餘天數會自動折算差價並退還至您的支付帳戶', - 'buyMoreTranscriptionTime': '購買更多轉寫時長', - 'sixThousandMinutes': '6,000分鐘', - 'threeThousandMinutes': '3,000分鐘', - 'sixHundredMinutes': '600分鐘', - 'oneHundredTwentyMinutes': '120分鐘', - 'validityPeriod': '*有效期:', - 'validityNote': '購買後立即啟用,啟用後2年內有效。', - 'purchase': '購買', + // Meeting模块 - 转写与总结 + 'reSummarize': '重新總結', + 'dateAndTime': '日期時間', + 'location': '地點', + 'attendees': '與會人員', + 'inputLocation': '輸入地點', + 'inputAttendees': '輸入與會人員', - // Meeting模块 - 模版和生成 + // Meeting模块 - 模版与生成 'selectSummaryTemplate': '選擇總結模板', 'useThisTemplate': '就用這個模板', 'lastUsed': '上次使用', @@ -601,7 +535,7 @@ const Map zhHK = { 'keyEventsAnalyzed': '分析出{count}個關鍵事件。', 'aiAnalysisDesc': 'AI分析識別錄音中的關鍵事件,讓你選擇重要事件進行AI生成。', - // Meeting模块 - 文件操作和状态 + // Meeting模块 - 文件操作 'importing': '正在導入...', 'batchImporting': '正在批量導入...', 'importingLocalRecordings': '正在導入本地錄音...', @@ -614,21 +548,12 @@ const Map zhHK = { 'shareFailed': '分享失敗: {error}', 'fileProcessingFailed': '檔案處理失敗: {filePath}, 錯誤: {error}', - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': '未知語言', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': '儲存', - 'meetingStoragePermissionExplanation': '我們需要存取儲存權限,以便您可以選擇並上傳音訊檔案。', - 'meetingStoragePermissionPermanentDenial': - '檢測到您已永久拒絕儲存權限。如需繼續使用此功能,請前往應用設定中手動開啟儲存權限。', - - // Meeting模块 - 思维导图相关 + // Meeting模块 - 思维导图 'saveMindMap': '儲存思維導圖', 'shareMindMap': '分享思維導圖', 'shareSuccess': '分享成功', - // Meeting模块 - AI相关 + // Meeting模块 - AI问答 'askAI': '問 AI ...', 'askAIPrompt': '今天我能幫您做點什麼呢?', 'continueAsk': '繼續提問', @@ -636,37 +561,7 @@ const Map zhHK = { 'extractConclusion': '提取結論', 'generateKeyIndicators': '生成關鍵指標', - // Meeting模块 - 更多操作相关 - 'reSummarize': '重新總結', - - // Meeting模块 - 错误提示相关 - 'analysisFailed': '分析失敗,請稍後重試', - 'transcriptionFailed': '轉寫失敗,請稍後重試', - 'summaryFailed': '總結失敗,請稍後重試', - 'summaryFailedShort': '總結失敗', - 'transcriptionFailedShort': '轉寫失敗', - - // Meeting模块 - 播放器相关 - 'playerNotReady': '音頻播放器未準備好,請稍候', - 'playFailed': '播放失敗', - 'audioFileNotFound': '音頻文件不存在', - 'playerLoadFailed': '音頻播放器加載失敗', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': '錄音語言', - // 'chinese': '中文普通话(简体)', - 'cantonese': '粵語', - 'sichuan': '四川話', - 'shanghai': '上海話', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 + // Meeting模块 - 分享与导出 'shareLink': '分享連結', 'copyTranscript': '複製轉寫', 'copySummary': '複製總結', @@ -678,7 +573,7 @@ const Map zhHK = { 'exportingPDF': '正在導出PDF...', 'export': '導出', - // Meeting模块 - 发言者相关 + // Meeting模块 - 发言者 'applyToAllParagraphs': '應用到這個發言者的所有段落', 'summaryWillBeUpdatedAutomatically': '總結將根據模版自動更新', 'nameCurrentSpeaker': '命名當前發言者', @@ -687,39 +582,121 @@ const Map zhHK = { 'totalTime': '總計', 'summarySpeakerWillBeUpdatedAutomatically': '總結的發言者將自動更新', - // Meeting模块 - 云端同步相关 + // Meeting模块 - 云端同步 'syncToCloud': '同步到雲端', 'syncToCloudTip': '自動將你的錄音同步到雲端,你可以通過任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享錄音。', 'syncToVoitransApp': '同步VOITRANS APP', 'transcriptionRecord': '轉寫記錄', - // Meeting模块 - 总结页面相关 - 'dateAndTime': '日期時間', - 'location': '地點', - 'attendees': '與會人員', - 'inputLocation': '輸入地點', - 'inputAttendees': '輸入與會人員', + // Meeting模块 - 我的页面 + 'transcriptionRecords': '轉寫記錄', + 'templateCommunity': '模板社區', + 'comingSoon': '敬請期待', + 'integration': '集成', + 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', + 'enabled': '開啟', + 'disabled': '關閉', + 'myVoitransDevice': '我的VOITRANS設備', + 'helpAndFeedback': '幫助與反饋', + 'aboutVoitrans': '關於VOITRANS', + 'meetingDays': '天', + 'meetingHours': '小時', + 'voitransAiMember': 'Voitrans AI會員', + 'unlockStarterMember': '解鎖 Starter 會員', + 'bindDeviceToActivate': '綁定 Voitrans 設備可啟用 Starter 會員', + 'unlockNow': '立即解鎖', - // 设置页 - "systemSettings": "系統設定", - "vipRecharge": "高級會員充值", - "aiRecharge": "AI充值", - "translationRecharge": "翻譯充值", - "meetingAssistantRecharge": "會議充值", - "cloudSync": "雲端同步", - "memberService": '會員服務', - "bindRewardTitle": '獎勵', - "bindRewardSimpleDesc": '首次綁定設備獎勵已下發,點擊確定關閉即可', - "joinDevice": "已連接設備:", - "accountId": "帳號ID:", - "systemSetting": "系統設定", - "languageSetting": "語言設定", - "darkMode": "深色模式", - "darkModeInfo": "切換應用的明暗主題", - "backups": "備份與還原", - "backupsInfo": "備份設定和AI互動歷史", - "lastBackup": "上次備份:", + // Meeting模块 - 会员与升级 + 'comparison': '對比', + 'detailedInfo': '詳細資訊', + 'monthlyTranscriptionTime': '每月轉寫時長', + 'unlimited': '無限', + 'professionalTemplates': '專業模板', + 'limited': '有限', + 'fullTemplates': '全量模板', + 'professionalTerms': '專業術語', + 'customTemplates': '自訂模板', + 'visualMindMap': '可視化思維導圖', + 'speakerIdentification': '區分說話人', + 'aiVoiceEnhancement': 'AI 人聲增強', + 'audioImport': '音訊導入', + 'multipleExportFormats': '支援多種導出格式', + 'professionalSummaryTemplates': '專業總結模板', + 'professionalTemplateDesc': '專業模板設計,提高您的工作效率。根據行業需求量身定制。', + 'customTemplateDesc': '您可以根據需求自訂總結 Prompts,並用它們生成所需的總結。', + 'askAiDesc': '從錄音中智能挖掘更深入資訊,一鍵生成數據表格、關鍵討論結論、To Do、匯報郵件等格式內容。', + 'visualMindMapDesc': '超越總結-用思維導圖整理和可視化要點,更有效地理解全文。', + 'templateCommunityDesc': '發現、分享,並從用戶建立的模板庫中獲得靈感。', + 'speakerIdentificationDesc': '音訊轉寫將支援區分發言者,更直觀地還原會議或電話通話內容。同時總結將更加準確。', + 'privateCloudSyncDesc': '您的錄音和轉寫等數據將安全儲存在專屬的雲端伺服器中,無論是上傳還是下載,全程加密處理,確保隱私安全。', + 'aiVoiceEnhancementDesc': 'AI 人聲增強支援多檔降噪設定,智能消除背景噪音,增強語音清晰度,提升音訊回放效果。', + 'audioImportDesc': '可以輕鬆從本地或第三方應用導入音訊檔案,如語音備忘錄、Google雲端硬碟等。', + 'multipleExportFormatsDesc': '導出您的音訊錄音、轉寫文本和摘要為各種格式(TXT、PDF、JPEG),以滿足您的需求。', + 'upgradeMembership': '升級您的會員', + 'yearlySubscription': '年訂閱', + 'monthlySubscription': '月訂閱', + 'proMonthly': 'Pro ¥60/月', + 'proMonthlyDesc': '7天免費試用,之後按¥800/年。試用期結束前可隨時取消。', + 'sevenDayTrial': '7天免費試用', + 'unlimitedMonthly': 'Unlimited ¥120/月', + 'unlimitedMonthlyDesc': '7天免費試用,之後按¥1600/年。試用期結束前可隨時取消。', + 'trialNote': '*免費試用7天,然後按年收費,隨時取消。', + 'proPrice': 'Pro ¥120', + 'proMonthlyPrice': '¥120/月', + 'subscribe': '訂閱', + 'unlimitedPrice': 'Unlimited ¥198', + 'unlimitedMonthlyPrice': '¥198/月', + 'upgradeNote': '*升級訂閱後,原訂閱的剩餘天數會自動折算差價並退還至您的支付帳戶', + 'buyMoreTranscriptionTime': '購買更多轉寫時長', + 'sixThousandMinutes': '6,000分鐘', + 'threeThousandMinutes': '3,000分鐘', + 'sixHundredMinutes': '600分鐘', + 'oneHundredTwentyMinutes': '120分鐘', + 'validityPeriod': '*有效期:', + 'validityNote': '購買後立即啟用,啟用後2年內有效。', + 'purchase': '購買', + + // Meeting模块 - 录音语言 + 'recordLanguage': '錄音語言', + 'cantonese': '粵語', + 'sichuan': '四川話', + 'shanghai': '上海話', + + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': '未知語言', + 'analysisFailed': '分析失敗,請稍後重試', + 'transcriptionFailed': '轉寫失敗,請稍後重試', + 'summaryFailed': '總結失敗,請稍後重試', + 'summaryFailedShort': '總結失敗', + 'transcriptionFailedShort': '轉寫失敗', + + // Meeting模块 - 播放器 + 'playerNotReady': '音頻播放器未準備好,請稍候', + 'playFailed': '播放失敗', + 'audioFileNotFound': '音頻文件不存在', + 'fetchingAudio': '正在從雲端獲取音頻...', + 'playerLoadFailed': '音頻播放器加載失敗', + + // 设置页 + "systemSettings": "系統設定", + "vipRecharge": "高級會員充值", + "aiRecharge": "AI充值", + "translationRecharge": "翻譯充值", + "meetingAssistantRecharge": "會議充值", + "cloudSync": "雲端同步", + "memberService": '會員服務', + "bindRewardTitle": '獎勵', + "bindRewardSimpleDesc": '首次綁定設備獎勵已下發,點擊確定關閉即可', + "joinDevice": "已連接設備:", + "accountId": "帳號ID:", + "systemSetting": "系統設定", + "languageSetting": "語言設定", + "darkMode": "深色模式", + "darkModeInfo": "切換應用的明暗主題", + "backups": "備份與還原", + "backupsInfo": "備份設定和AI互動歷史", + "lastBackup": "上次備份:", "privacySettings": "私隱設定", "privacySettingsInfo": "管理數據收集和權限", "permissionManagement": "權限管理", // 权限管理 @@ -748,25 +725,14 @@ const Map zhHK = { "bleHeadsetFirmwareUpgrade": "BLE耳機韌體版本升級", "deviceManagement": "設備管理", "manageConnectedDevices": "管理已綁定的藍牙設備", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': '當前已是最新版本 {version}', 'checkUpdateFailed': '檢查更新失敗', 'networkErrorRetry': '網絡錯誤,請稍後重試', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "實時語音對話", "realtimeVoiceChatInfo": "體驗智能語音互動功能(功能預覽)", "loading": "載入中...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": '未知設備', "deviceTypeClassicBluetoothHeadset": '經典藍牙耳機', "deviceTypeBleBluetoothHeadset": 'BLE藍牙耳機', @@ -781,8 +747,7 @@ const Map zhHK = { "confirmUnbindMessage": '確定要解除綁定設備 "{deviceName}" 嗎?', "confirmUnbindAction": '確認解除綁定', -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "清空聊天記錄", "online": "在線", @@ -812,8 +777,9 @@ const Map zhHK = { "swipeUpForMore": "向上滑動查看更多", "callingTool": "正在幫您,請稍等!", // 正在帮您,请稍等! "voice_interrupt": "語音打斷", // 语音打断 + 'voice_interrupt_tip': '開啟後:AI播報時不會被語音打斷,只能進行單輪對話,需要打斷時請說喚醒詞開啟新一輪對話。', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": '來點音樂', // 来点音乐 "presetNavigation": '導航到', // 导航 "presetWeather": '今日天氣', // 今日天气 @@ -825,7 +791,7 @@ const Map zhHK = { "todayNews": '今天有哪些新聞?', // 今日新闻 "nearbyFood": '附近有哪些美食?', // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': '你好!我是**Lily**,我能幫你:\n\n' '• 回答問題和提供資訊\n\n' '• 實時語音翻譯\n\n' @@ -841,18 +807,17 @@ const Map zhHK = { 'startVoiceInput': '開始語音輸入', 'startPhoneCallMode': '開始打電話模式,開始語音輸入', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': '在這裡輸入你的訊息...', // 全屏编辑器输入提示 'characterCount': '{count} 字元', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': '複製', 'copySuccess': '複製成功', 'report': '舉報', 'submitSuccess': '提交成功', 'submitFailed': '提交失敗', 'reportSubmitted': '舉報已提交,我們會盡快處理', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': '有害/不安全', 'pornographicVulgar': '色情低俗', 'misleadingAttack': '誤導攻擊', @@ -861,17 +826,14 @@ const Map zhHK = { 'copyrightViolation': '侵犯我的著作權、名譽權等', 'other': '其他', 'reportDescriptionHint': '我們想知道你舉報的原因,你可以描述你遇到的問題。', - //'submit': '提交', - - //Message_bubble 'generatedByAi': '由AI生成', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': '以下是一些推薦的音樂:', 'playList': '播放清單', 'moreMusic': '更多音樂', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': '公里', // 公里单位 'meters': '米', // 米单位 'hours': '小時', // 小时单位 @@ -886,7 +848,7 @@ const Map zhHK = { "bicycling": "騎行", "tsransit": "公共交通", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': '查詢天氣情況:', 'highest': '最高', 'lowest': '最低', @@ -907,18 +869,8 @@ const Map zhHK = { "friday": "週五", "saturday": "週六", "sunday": "週日", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": 'Welcome Reward', - "firstBindRewardDesc": 'You\'ve received binding rewards.', - "vipLevelLabel": 'VIP Level:', - "expiryLabel": '到期時間:', - "notActivated": '未啟用', - "aiChatCreditsLabel": 'AI Chat Credits:', - "translationCreditsLabel": 'Translation Credits:', - "meetingCreditsLabel": 'Meeting Credits:', - "ok": 'OK', - // 天气描述 + // Agent模块 - 天气描述 "sunny": "晴", "partlyCloudy": "少雲", "partlySunny": "晴間多雲", @@ -939,7 +891,119 @@ const Map zhHK = { "haze": "霾", "strongWind": "大風", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": '圖片翻譯', + "textTranslation": '文本翻譯', + + // 翻译模块 - 主页 + "translationHistory": "翻譯歷史", + "enableRecording": "是否開啟錄音", + "viewAudioFiles": "查看錄音檔案", + "headsetUser": "耳機用戶", + "phoneUser": "手機用戶", + "selectSourceLanguage": "選擇來源語言", + "selectTargetLanguage": "選擇目標語言", + "me": '我', + "counterPart": '對方', + "bluetoothCallStateError": '請確保藍牙耳機已連接到手機並處於通話狀態', + "autoDetect": '自動檢測', // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": '語言檢測失敗', + "translationFailed": '翻譯失敗', + "pleaseInputText": '請輸入文本', + "textTooLong": '文本過長,最多5000字符', + + // 翻译模块 - 历史记录 + "noTranslationHistory": "暫無歷史記錄", + "historyRecords": '歷史記錄', + "clearResults": '清空結果', + "clearHistory": "清除歷史記錄", + "clearHistoryConfirm": "確定要清除所有翻譯歷史記錄嗎?此操作無法撤銷。", + "unknownLanguage": "未知語言", + "deleteSessionRecord": "刪除對話記錄", + "deleteSessionConfirm": "確定要刪除該對話的所有翻譯記錄嗎?此操作無法撤銷。", + + // 翻译模块 - 图片翻译 + "selectImageSource": '選擇圖片來源', + "imagePreview": '圖片預覽', + "translationResult": '翻譯結果', + "recognitionResult": '識別結果', + "translatedImagePreview": '翻譯後的圖片預覽', + "translatedImageLoadFailed": '翻譯圖片載入失敗', + "pleaseSelectImage": '請選擇圖片', + "imageLoadFailed": '圖片載入失敗', + "imageQuality": '圖片品質', + "maxSize": '最大尺寸', + "close": '關閉', + "setImageQuality": '設定圖片品質', + "currentQuality": '當前品質: @value%', + "setMaxSize": '設定最大尺寸', + "currentMaxSize": '當前: @pxpx', + "waitingForAction": '等待操作', + "pleaseSelectImageToStart": '請選擇圖片開始翻譯', + "chooseImage": '選擇圖片', + "openingCamera": '正在打開相機...', + "openingPhotoAlbum": '正在打開相簿...', + "cancelled": '已取消', + "userCancelledSelection": '用戶取消了選擇', + "translatingImage": '翻譯圖片', + "callingImageTranslateService": '正在調用圖片翻譯服務...', + "savingRecord": '保存記錄', + "savingTranslationResult": '正在保存翻譯結果...', + "translationCompleted": '翻譯完成', + "allStepsCompleted": '所有步驟已完成', + "processingFailed": '處理失敗', + "imageProcessingOrTranslationFailed": '圖片處理或翻譯失敗,請重試。n錯誤資訊: {error}', + "imageTooLarge": '圖片大小超過4MB限制', + "imageTooLargeHint": '圖片大小超過4MB限制,請降低品質或尺寸後重試', + "emptyTranslationResult": '圖片翻譯接口返回空結果', + "imageTranslationFailedTryLater": '圖片翻譯失敗,可能的原因:網路異常或接口限流,請稍後重試', + "imageTranslationApiException": '圖片翻譯接口調用異常,請檢查網路後重試', + "permissionRequired": '權限需求', + "cameraPermissionRequired": '需要相機權限才能拍照', + "photoAlbumPermissionRequired": '需要相簿權限才能選擇圖片', + "translationDetails": '翻譯詳情', + "originalImage": '原圖片', + "sourceLanguage": '源語言', + "targetLanguage": '目標語言', + "translationTime": '翻譯時間', + "shareInDevelopment": '分享功能開發中', + + // 翻译模块 - 录音文件 + "translateAudioFiles": "翻譯錄音檔案", + "noAudioFiles": "暫無音訊檔案", + "calculating": "計算中...", + "playing": "播放中...", + "paused": "已暫停", + "clickToPlay": "點擊播放", + "rename": "重新命名", + "smartTranscription": "智能轉寫", + "renameAudioFile": "重新命名音訊檔案", + "enterNewFileName": "請輸入新的檔案名稱", + + // 翻译模块 - 翻译详情 + "originalRecord": "原始記錄", + "recordSummary": "記錄摘要", + "clickToGenerateSummary": "點擊下方按鈕生成對話摘要", + "summaryContent": "摘要內容", + "copied": "已複製", + "summaryCopiledToClipboard": "摘要已複製到剪貼簿", + "extractSummary": "提取摘要", + "summaryGenerated": "已生成摘要", + "generating": "生成中...", + "regenerate": "重新生成", + "summaryTimeoutMessage": "生成摘要請求超時,可能是網絡問題或伺服器繁忙。", + "deleteTranslationRecord": "刪除翻譯記錄", + "deleteTranslationConfirm": "確定要刪除這條翻譯記錄嗎?此操作無法撤銷。", + "originalText": "原文", + "translatedText": "譯文", + "sessionSummary": "對話摘要", + "cannotShare": "無法分享", + "generateSummaryFirst": "請先生成摘要", + "translationSessionRecord": "翻譯對話記錄", + + // 个人资料模块 "editProfile": "編輯個人資訊", "avatar": "頭像", "nickname": "暱稱", @@ -954,8 +1018,6 @@ const Map zhHK = { 'deleteAccountTips': '確定要永久刪除您的帳號嗎?此操作不可撤銷', 'clean': '清除快取', 'cleanTips': '確定要清除個人快取嗎?', - - // Profile 错误信息 'networkConnectionFailed': '網絡連接失敗,請檢查網絡設定後重試', 'serverTemporarilyUnavailable': '伺服器暫時無法響應,請稍後重試', 'loginExpiredPleaseRelogin': '登入已過期,請重新登入', @@ -967,10 +1029,6 @@ const Map zhHK = { 'serverError': '伺服器錯誤', 'networkConnectionFailedCheckSettings': '網絡連接失敗,請檢查網絡設定', 'serverInternalErrorRetryLater': '伺服器內部錯誤,請稍後重試', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': '圖片壓縮失敗', 'avatarUpdateFailed': '頭像更新失敗', 'usernameCannotBeEmpty': '用戶名不能為空', @@ -981,8 +1039,6 @@ const Map zhHK = { 'logoutFailedRetry': '登出失敗,請重試', 'accountPermanentlyDeleted': '帳號已被永久刪除', 'deleteAccountFailedRetry': '刪除帳號失敗,請重試', - - // 账号服务相关 'clearUserDataFailed': '清理用戶數據失敗', // 清理用户数据失败 'deleteUserDataFailed': '刪除用戶數據失敗', // 删除用户数据失败 'thirdPartyLogoutSuccess': '第三方登出成功', // 第三方登录退出成功 @@ -993,7 +1049,11 @@ const Map zhHK = { 'allUserDataClearSuccess': '所有用戶數據清理成功', // 所有用户数据清理成功 'accountServiceInitialized': 'AccountService 已初始化', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': '儲存', + 'meetingStoragePermissionExplanation': '我們需要存取儲存權限,以便您可以選擇並上傳音訊檔案。', + 'meetingStoragePermissionPermanentDenial': + '檢測到您已永久拒絕儲存權限。如需繼續使用此功能,請前往應用設定中手動開啟儲存權限。', 'getPermissionStatusFailed': '獲取權限狀態失敗', 'communicationPermissions': '通訊權限', 'bluetoothPermissions': '藍牙權限', @@ -1006,7 +1066,6 @@ const Map zhHK = { 'phone': '電話', 'sms': '短訊', 'contacts': '聯絡人', - //'bluetooth': '蓝牙', 'notification': '通知', 'alarm': '鬧鐘', 'calendarWrite': '日曆寫入', @@ -1045,8 +1104,6 @@ const Map zhHK = { 'appNeedsPermissionForFullFunction': '應用需要此權限以提供完整功能', 'permanentDenialText': '您已永久拒絕{permission}權限,請前往應用設定開啟', 'goToSettings': '去設定', - - // 权限申请 'bluetoothScan': '藍牙掃描', 'bluetoothConnect': '藍牙連接', 'bluetoothScanExplanation': '為了掃描附近的藍牙設備,應用需要取得藍牙掃描權限。', @@ -1061,7 +1118,6 @@ const Map zhHK = { 'locationPermissionExplanation': '需要定位權限來取得當前位置。', 'notificationPermissionPermanentDenial': '您已永久拒絕通知權限,請前往設定開啟權限。', 'locationPermissionPermanentDenial': '您已永久拒絕定位權限,請前往設定開啟權限。', -//'microphonePermission': '录音', 'storagePermission': '儲存', 'microphonePermissionExplanation': '我們需要存取麥克風權限,以便您錄製音訊內容。', 'storagePermissionExplanation': '我們需要存取儲存權限,以便您可以選擇並上傳音訊檔案。', @@ -1069,6 +1125,11 @@ const Map zhHK = { '檢測到您已永久拒絕錄音權限。如需繼續使用此功能,請前往應用設定中手動開啟麥克風權限。', 'storagePermissionPermanentDenial': '檢測到您已永久拒絕儲存權限。如需繼續使用此功能,請前往應用設定中手動開啟儲存權限。', + 'permissionUtilNeed': '需要', + 'permissionUtilPermission': '權限', + 'permissionUtilRestricted': '權限受限', + 'permissionUtilRestrictedMessage': '此功能在當前設備上不可用或受限,請檢查設備設定或系統限制', + 'permissionUtilConfirm': '確定', // 原生前台服务通知(Android) 'native.notification.appName': 'VOITRANS', @@ -1083,14 +1144,7 @@ const Map zhHK = { 'native.notification.music.pause': '暫停', 'native.notification.qqMusic.playing': '正在播放音樂', - //permission_util.dart - 'permissionUtilNeed': '需要', - 'permissionUtilPermission': '權限', - 'permissionUtilRestricted': '權限受限', - 'permissionUtilRestrictedMessage': '此功能在當前設備上不可用或受限,請檢查設備設定或系統限制', - 'permissionUtilConfirm': '確定', - - // 版本更新对话框 + // 版本更新 'newVersionFound': '發現新版本', // 版本更新对话框标题 'remindLater': '稍後提醒', // 稍后提醒按钮 'updateNow': '立即更新', // 立即更新按钮 @@ -1099,242 +1153,7 @@ const Map zhHK = { 'cannotOpenAppStore': '無法打開應用商店,請手動前往應用商店更新', // 无法打开应用商店提示 'updateErrorRetry': '更新過程中發生錯誤,請稍後重試', // 更新错误重试提示 - //国家列表 - "邮箱": "郵箱", - "中国": "中國", - "美国": "美國", - "加拿大": "加拿大", - "俄罗斯": "俄羅斯", - "英国": "英國", - "德国": "德國", - "意大利": "意大利", - "法国": "法國", - "西班牙": "西班牙", - "南非": "南非", - "沙特阿拉伯": "沙特阿拉伯", - "土耳其": "土耳其", - "日本": "日本", - "韩国": "韓國", - "新加坡": "新加坡", - "马来西亚": "馬來西亞", - "泰国": "泰國", - "越南": "越南", - "印度": "印度", - "巴基斯坦": "巴基斯坦", - "菲律宾": "菲律賓", - "印度尼西亚": "印度尼西亞", - "阿联酋": "阿聯酋", - "墨西哥": "墨西哥", - "巴西": "巴西", - "阿根廷": "阿根廷", - "澳大利亚": "澳大利亞", - "新西兰": "新西蘭", - "中国香港": "中國香港", - "中国澳门": "中國澳門", - "中国台湾": "中國台灣", - "埃及": "埃及", - "希腊": "希臘", - "荷兰": "荷蘭", - "比利时": "比利時", - "匈牙利": "匈牙利", - "罗马尼亚": "羅馬尼亞", - "瑞士": "瑞士", - "奥地利": "奧地利", - "丹麦": "丹麥", - "瑞典": "瑞典", - "挪威": "挪威", - "波兰": "波蘭", - "秘鲁": "秘魯", - "智利": "智利", - "哥伦比亚": "哥倫比亞", - "委内瑞拉": "委內瑞拉", - "葡萄牙": "葡萄牙", - "卢森堡": "盧森堡", - "爱尔兰": "愛爾蘭", - "冰岛": "冰島", - "阿尔巴尼亚": "阿爾巴尼亞", - "马耳他": "馬耳他", - "塞浦路斯": "塞浦路斯", - "芬兰": "芬蘭", - "保加利亚": "保加利亞", - "立陶宛": "立陶宛", - "拉脱维亚": "拉脫維亞", - "爱沙尼亚": "愛沙尼亞", - "乌克兰": "烏克蘭", - "塞尔维亚": "塞爾維亞", - "克罗地亚": "克羅地亞", - "斯洛文尼亚": "斯洛文尼亞", - "捷克": "捷克", - "斯洛伐克": "斯洛伐克", - "危地马拉": "危地馬拉", - "萨尔瓦多": "薩爾瓦多", - "洪都拉斯": "洪都拉斯", - "尼加拉瓜": "尼加拉瓜", - "哥斯达黎加": "哥斯達黎加", - "巴拿马": "巴拿馬", - "海地": "海地", - "玻利维亚": "玻利維亞", - "厄瓜多尔": "厄瓜多爾", - "巴拉圭": "巴拉圭", - "乌拉圭": "烏拉圭", - "摩洛哥": "摩洛哥", - "阿尔及利亚": "阿爾及利亞", - "突尼斯": "突尼斯", - "尼日利亚": "尼日利亞", - "加纳": "加納", - "埃塞俄比亚": "埃塞俄比亞", - "肯尼亚": "肯尼亞", - "坦桑尼亚": "坦桑尼亞", - "乌干达": "烏干達", - "孟加拉国": "孟加拉國", - "以色列": "以色列", - "黎巴嫩": "黎巴嫩", - "约旦": "約旦", - "伊拉克": "伊拉克", - "科威特": "科威特", - "巴林": "巴林", - "卡塔尔": "卡塔爾", - "阿曼": "阿曼", - "阿富汗": "阿富汗", - "斯里兰卡": "斯里蘭卡", - "缅甸": "緬甸", - "尼泊尔": "尼泊爾", - "蒙古": "蒙古", - "柬埔寨": "柬埔寨", - "老挝": "老撾", - "文莱": "文萊", - "东帝汶": "東帝汶", - "斐济": "斐濟", - "所罗门群岛": "所羅門群島", - "刚果民主共和国": '剛果民主共和國', - "安哥拉": '安哥拉', - "苏丹": '蘇丹', - "马尔代夫": '馬爾代夫', - "不丹": '不丹', - "摩纳哥": '摩納哥', - "圣马力诺": '聖馬力諾', - "牙买加": '牙買加', - "巴哈马": '巴哈馬', - "巴布亚新几内亚": '巴布亞新幾內亞', - "萨摩亚": '薩摩亞', - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": '圖片翻譯', - "textTranslation": '文本翻譯', - - // 翻译主页 (translation_view.dart) - "translationHistory": "翻譯歷史", - "enableRecording": "是否開啟錄音", - "viewAudioFiles": "查看錄音檔案", - "headsetUser": "耳機用戶", - "phoneUser": "手機用戶", - "selectSourceLanguage": "選擇來源語言", - "selectTargetLanguage": "選擇目標語言", - "me": '我', - "counterPart": '對方', - "bluetoothCallStateError": '請確保藍牙耳機已連接到手機並處於通話狀態', - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": '自動檢測', // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": '語言檢測失敗', - "translationFailed": '翻譯失敗', - "pleaseInputText": '請輸入文本', - "textTooLong": '文本過長,最多5000字符', - - // 翻译历史页 - "noTranslationHistory": "暫無歷史記錄", - "historyRecords": '歷史記錄', - "clearResults": '清空結果', - "clearHistory": "清除歷史記錄", - "clearHistoryConfirm": "確定要清除所有翻譯歷史記錄嗎?此操作無法撤銷。", - "unknownLanguage": "未知語言", - "deleteSessionRecord": "刪除對話記錄", - "deleteSessionConfirm": "確定要刪除該對話的所有翻譯記錄嗎?此操作無法撤銷。", - - // 图片翻译模块(Picture Translation) - "selectImageSource": '選擇圖片來源', - "imagePreview": '圖片預覽', - "translationResult": '翻譯結果', - "recognitionResult": '識別結果', - "translatedImagePreview": '翻譯後的圖片預覽', - "translatedImageLoadFailed": '翻譯圖片載入失敗', - "pleaseSelectImage": '請選擇圖片', - "imageLoadFailed": '圖片載入失敗', - "imageQuality": '圖片品質', - "maxSize": '最大尺寸', - "close": '關閉', - "setImageQuality": '設定圖片品質', - "currentQuality": '當前品質: @value%', - "setMaxSize": '設定最大尺寸', - "currentMaxSize": '當前: @pxpx', - "waitingForAction": '等待操作', - "pleaseSelectImageToStart": '請選擇圖片開始翻譯', - "chooseImage": '選擇圖片', - "openingCamera": '正在打開相機...', - "openingPhotoAlbum": '正在打開相簿...', - "cancelled": '已取消', - "userCancelledSelection": '用戶取消了選擇', - "translatingImage": '翻譯圖片', - "callingImageTranslateService": '正在調用圖片翻譯服務...', - "savingRecord": '保存記錄', - "savingTranslationResult": '正在保存翻譯結果...', - "translationCompleted": '翻譯完成', - "allStepsCompleted": '所有步驟已完成', - "processingFailed": '處理失敗', - "imageProcessingOrTranslationFailed": '圖片處理或翻譯失敗,請重試。n錯誤資訊: {error}', - "imageTooLarge": '圖片大小超過4MB限制', - "imageTooLargeHint": '圖片大小超過4MB限制,請降低品質或尺寸後重試', - "emptyTranslationResult": '圖片翻譯接口返回空結果', - "imageTranslationFailedTryLater": '圖片翻譯失敗,可能的原因:網路異常或接口限流,請稍後重試', - "imageTranslationApiException": '圖片翻譯接口調用異常,請檢查網路後重試', - "permissionRequired": '權限需求', - "cameraPermissionRequired": '需要相機權限才能拍照', - "photoAlbumPermissionRequired": '需要相簿權限才能選擇圖片', - "translationDetails": '翻譯詳情', - "originalImage": '原圖片', - "sourceLanguage": '源語言', - "targetLanguage": '目標語言', - "translationTime": '翻譯時間', - "shareInDevelopment": '分享功能開發中', - - // 翻译录音文件列表页 - "translateAudioFiles": "翻譯錄音檔案", - "noAudioFiles": "暫無音訊檔案", - "calculating": "計算中...", - "playing": "播放中...", - "paused": "已暫停", - "clickToPlay": "點擊播放", - "rename": "重新命名", - "smartTranscription": "智能轉寫", - "renameAudioFile": "重新命名音訊檔案", - "enterNewFileName": "請輸入新的檔案名稱", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "原始記錄", - "recordSummary": "記錄摘要", - "clickToGenerateSummary": "點擊下方按鈕生成對話摘要", - "summaryContent": "摘要內容", - "copied": "已複製", - "summaryCopiledToClipboard": "摘要已複製到剪貼簿", - "extractSummary": "提取摘要", - "summaryGenerated": "已生成摘要", - "generating": "生成中...", - "regenerate": "重新生成", - "summaryTimeoutMessage": "生成摘要請求超時,可能是網絡問題或伺服器繁忙。", - "deleteTranslationRecord": "刪除翻譯記錄", - "deleteTranslationConfirm": "確定要刪除這條翻譯記錄嗎?此操作無法撤銷。", - "originalText": "原文", - "translatedText": "譯文", - "sessionSummary": "對話摘要", - "cannotShare": "無法分享", - "generateSummaryFirst": "請先生成摘要", - "translationSessionRecord": "翻譯對話記錄", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "設備配對", "connectYourDeepSoundHeadset": "連接您的 Voitrans 耳機", "bind": "綁定", @@ -1343,14 +1162,11 @@ const Map zhHK = { "autoInputCode": "自動輸入代碼", "skipBinding": "跳過綁定", "rescan": "重新掃描", - "verifyingDevice": "正在驗證設備...", "confirmBinding": "確認綁定", "associatingDevice": "正在關聯設備...", "goToBluetoothSettings": "前往藍牙設定", 'bluetooth': '藍牙', - - // 配对状态文本 "readyToPair": "準備開始配對", "preparingPairingEnvironment": "正在準備配對環境...", "connectDeepSoundViaSystemBluetooth": "請先透過系統藍牙連接Voitrans設備", @@ -1358,8 +1174,6 @@ const Map zhHK = { "establishingDeviceAssociation": "正在建立設備關聯...", "waitingCompletePairing": "請稍候,正在完成配對...", "pairingSuccessRedirecting": "配對成功!即將跳轉到首頁...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "請確保連接的是Voitrans設備", "deviceAlreadyBoundToOtherAccount": "該設備已被其他帳號綁定", "deviceAssociationFailed": "設備關聯失敗,請重試", @@ -1367,18 +1181,11 @@ const Map zhHK = { "networkError": "網絡錯誤", "authorizationFailedCheckCode": "授權失敗,請檢查授權碼是否正確", "pairingFailedRetry": "配對失敗,請重試", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': '請開啟藍牙', 'deviceDisconnected': '設備已斷開', 'readyToStartPairing': '準備開始配對', 'checkingEnvironment': '正在檢查環境...', 'ensureHeadsetOnAndPairingMode': '請確保耳機已開啟並進入配對模式', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': '正在建立安全連接...', 'needManualBindingAuthCode': '需要手動綁定授權碼...', 'pairingSuccessful': '配對成功!', @@ -1397,8 +1204,6 @@ const Map zhHK = { 'blePairingStartupFailed': 'BLE配對啟動失敗', 'bleConnectionFailed': 'BLE連接失敗', 'deviceAuthorizationFailedCheckCode': '設備授權失敗,請檢查授權碼', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': '需要手動開啟藍牙', // 需要手动开启蓝牙 'bluetoothGuideSteps': '請按照以下步驟操作:', // 请按照以下步骤操作: 'bluetoothGuideStep1': '開啟藍牙:設定 → 藍牙 → 開啟', // 开启蓝牙:设置 → 蓝牙 → 开启 @@ -1407,7 +1212,18 @@ const Map zhHK = { 'bluetoothGuideTip': '提示:也可以從控制中心長按藍牙圖標快速進入藍牙設定', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': '我知道了', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": 'Welcome Reward', + "firstBindRewardDesc": 'You\'ve received binding rewards.', + "vipLevelLabel": 'VIP Level:', + "expiryLabel": '到期時間:', + "notActivated": '未啟用', + "aiChatCreditsLabel": 'AI Chat Credits:', + "translationCreditsLabel": 'Translation Credits:', + "meetingCreditsLabel": 'Meeting Credits:', + "ok": 'OK', + + // 用户反馈模块 "feedback": "用戶反饋", 'feedbackInfo': '提供反饋或建議', 'feedbackDescription': '請描述您遇到的問題或建議', @@ -1442,7 +1258,7 @@ const Map zhHK = { "updateContent": "更新內容", "removeEarbudsEnsureBattery": "取出雙耳機,並保證電量均為20%以上的狀態", - // 音乐列表页面 + // 音乐模块 "noMusic": "暫無音樂", // 暂无音乐 "noPlayingMusic": "暫無播放音樂", // 暂无播放音乐 "unknownSong": "未知歌曲", // 未知歌曲 @@ -1490,20 +1306,122 @@ const Map zhHK = { "波斯语": "波斯語", "斯瓦希里语": "斯瓦希里語", - // 时间相关 - "justNow": '剛剛', - "minutesAgo": '@minutes分鐘前', - "yesterday": '昨天', - // 时间扩展(图片翻译模块使用) - "daysAgo": '@days天前', - "hoursAgo": '@hours小時前', - - //补充 - "insufficientIntegral": '積分不足', - - //余额不足弹窗 - "insufficientBalanceDesc": "餘額不足,請前往對應充值界面進行充值", - "recharge": "去充值", - // 会员到期提示 - "aiMemberExpiredDesc": 'AI會員已到期,請前往會員充值續費', + // 国家列表 + "邮箱": "郵箱", + "中国": "中國", + "美国": "美國", + "加拿大": "加拿大", + "俄罗斯": "俄羅斯", + "英国": "英國", + "德国": "德國", + "意大利": "意大利", + "法国": "法國", + "西班牙": "西班牙", + "南非": "南非", + "沙特阿拉伯": "沙特阿拉伯", + "土耳其": "土耳其", + "日本": "日本", + "韩国": "韓國", + "新加坡": "新加坡", + "马来西亚": "馬來西亞", + "泰国": "泰國", + "越南": "越南", + "印度": "印度", + "巴基斯坦": "巴基斯坦", + "菲律宾": "菲律賓", + "印度尼西亚": "印度尼西亞", + "阿联酋": "阿聯酋", + "墨西哥": "墨西哥", + "巴西": "巴西", + "阿根廷": "阿根廷", + "澳大利亚": "澳大利亞", + "新西兰": "新西蘭", + "中国香港": "中國香港", + "中国澳门": "中國澳門", + "中国台湾": "中國台灣", + "埃及": "埃及", + "希腊": "希臘", + "荷兰": "荷蘭", + "比利时": "比利時", + "匈牙利": "匈牙利", + "罗马尼亚": "羅馬尼亞", + "瑞士": "瑞士", + "奥地利": "奧地利", + "丹麦": "丹麥", + "瑞典": "瑞典", + "挪威": "挪威", + "波兰": "波蘭", + "秘鲁": "秘魯", + "智利": "智利", + "哥伦比亚": "哥倫比亞", + "委内瑞拉": "委內瑞拉", + "葡萄牙": "葡萄牙", + "卢森堡": "盧森堡", + "爱尔兰": "愛爾蘭", + "冰岛": "冰島", + "阿尔巴尼亚": "阿爾巴尼亞", + "马耳他": "馬耳他", + "塞浦路斯": "塞浦路斯", + "芬兰": "芬蘭", + "保加利亚": "保加利亞", + "立陶宛": "立陶宛", + "拉脱维亚": "拉脫維亞", + "爱沙尼亚": "愛沙尼亞", + "乌克兰": "烏克蘭", + "塞尔维亚": "塞爾維亞", + "克罗地亚": "克羅地亞", + "斯洛文尼亚": "斯洛文尼亞", + "捷克": "捷克", + "斯洛伐克": "斯洛伐克", + "危地马拉": "危地馬拉", + "萨尔瓦多": "薩爾瓦多", + "洪都拉斯": "洪都拉斯", + "尼加拉瓜": "尼加拉瓜", + "哥斯达黎加": "哥斯達黎加", + "巴拿马": "巴拿馬", + "海地": "海地", + "玻利维亚": "玻利維亞", + "厄瓜多尔": "厄瓜多爾", + "巴拉圭": "巴拉圭", + "乌拉圭": "烏拉圭", + "摩洛哥": "摩洛哥", + "阿尔及利亚": "阿爾及利亞", + "突尼斯": "突尼斯", + "尼日利亚": "尼日利亞", + "加纳": "加納", + "埃塞俄比亚": "埃塞俄比亞", + "肯尼亚": "肯尼亞", + "坦桑尼亚": "坦桑尼亞", + "乌干达": "烏干達", + "孟加拉国": "孟加拉國", + "以色列": "以色列", + "黎巴嫩": "黎巴嫩", + "约旦": "約旦", + "伊拉克": "伊拉克", + "科威特": "科威特", + "巴林": "巴林", + "卡塔尔": "卡塔爾", + "阿曼": "阿曼", + "阿富汗": "阿富汗", + "斯里兰卡": "斯里蘭卡", + "缅甸": "緬甸", + "尼泊尔": "尼泊爾", + "蒙古": "蒙古", + "柬埔寨": "柬埔寨", + "老挝": "老撾", + "文莱": "文萊", + "东帝汶": "東帝汶", + "斐济": "斐濟", + "所罗门群岛": "所羅門群島", + "刚果民主共和国": '剛果民主共和國', + "安哥拉": '安哥拉', + "苏丹": '蘇丹', + "马尔代夫": '馬爾代夫', + "不丹": '不丹', + "摩纳哥": '摩納哥', + "圣马力诺": '聖馬力諾', + "牙买加": '牙買加', + "巴哈马": '巴哈馬', + "巴布亚新几内亚": '巴布亞新幾內亞', + "萨摩亚": '薩摩亞', }; diff --git a/lib/core/translations/language/zh_tw.dart b/lib/core/translations/language/zh_tw.dart index 6abf56eaa..69abec864 100644 --- a/lib/core/translations/language/zh_tw.dart +++ b/lib/core/translations/language/zh_tw.dart @@ -1,4 +1,5 @@ const Map zhTW = { + // 通用 'continue': '繼續', 'confirm': '確認', @@ -17,6 +18,11 @@ const Map zhTW = { "responseTimeout": "回應逾時", "unknownError": "未知錯誤", "asrConnectionFailed": "語音辨識服務連線失敗,請檢查網路或稍後重試", + "justNow": '剛剛', + "minutesAgo": '@minutes分鐘前', + "yesterday": '昨天', + "daysAgo": '@days天前', + "hoursAgo": '@hours小時前', // 启动页 "slogan": "連接世界,豈止聲音", @@ -27,7 +33,7 @@ const Map zhTW = { "explore": "發現", "settings": "設定", - // 语言 + // 语言列表 "followingSystem": "跟隨系統", "chinese": "中文", "english": "英語", @@ -71,7 +77,7 @@ const Map zhTW = { "arabic": "阿拉伯語", "persian": "波斯語", - // 登录页 + // 登录模块 "welcome": "歡迎使用", "loginTips": "請使用手機號或電子郵件登入/註冊", "accountNumber": "手機號碼或電子郵件", @@ -98,12 +104,8 @@ const Map zhTW = { "resendVerificationCode": "重新發送驗證碼", "login": "登入", "usePasswordLogin": "使用密碼登入", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans 聲明", // Voitrans 声明 "welcomeToThisApp": "歡迎使用Voitrans,請充分閱讀", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": "點擊'同意並進入'表示您已充分閱讀並同意上述協議。點擊'不同意'將退出應用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "不同意", // 不同意 @@ -158,7 +160,7 @@ const Map zhTW = { 'right': '右', 'checkConnectionStatusFailed': '檢查連接狀態失敗', -// 发现页 + // 发现页 "searchAi": "搜尋AI功能...", "exploreSlogan": "智能耳機,無限可能", "exploreSlogan1": "智能陪伴,無限可能", @@ -181,6 +183,7 @@ const Map zhTW = { "usageStats": "用量統計", "usageStatsInfo": "查看您的使用統計資料", "scene": "場景", + // 用量统计模块 "aiChat": 'AI聊天', "translationStats": '翻譯統計', @@ -201,7 +204,6 @@ const Map zhTW = { "translationApi": '翻譯API', "asr": '語音識別', "tts": '語音合成', - //"aiSummary": "AI摘要", "dataVolumeStats": '資料量統計', "sourceTextCharacters": '來源文本字元', "ttsTextCharacters": 'TTS文本字元', @@ -218,7 +220,6 @@ const Map zhTW = { "totalAudioDuration": '音訊總時長', "audioFileSize": '音訊檔案大小', "transcriptBytes": '轉寫位元組', - // 通知文案 "loadFailed": '載入失敗', "statsLoadFailedTryLater": '統計資料載入失敗,請稍後重試', "cleanupComplete": '清理完成', @@ -226,7 +227,7 @@ const Map zhTW = { "exportFeature": '導出功能', "exportInDevelopment": '資料匯出功能正在開發中', - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': '可購買套餐', 'remainingQuota': '剩餘額度', 'totalQuota': '總額度', @@ -291,50 +292,54 @@ const Map zhTW = { 'alipayPaymentLaunchFailed': '支付寶支付啟動失敗', 'cannotLaunchAlipayPayment': '無法啟動支付寶支付', 'alipayPaymentException': '支付寶支付異常', - // AI 功能卡片 + "insufficientIntegral": '積分不足', + "insufficientBalanceDesc": "餘額不足,請前往對應充值界面進行充值", + "recharge": "去充值", + "aiMemberExpiredDesc": 'AI會員已到期,請前往會員充值續費', + + // 商品模块 - AI商品页 'musicAndRecommendation': '聽歌與推薦', 'navigationAndRoutes': '導航與路線', 'nearbySearch': '附近搜尋', 'newsInformation': '新聞資訊', 'communicationAssistant': '通訊助手', - // 翻译功能卡片 + 'aiHeaderDesc1': '更長對話額度、更多工具呼叫、更強上下文長度支持。', + 'aiHeaderDesc2': '適用於智能體問答、總結分析、任務執行等場景。', + 'musicSearchPlaybackControl': '檢索曲庫、播放控制', + 'smartPlaylistAndSimilarRecommendations': '智能推薦歌單與相似歌曲', + 'routePlanningAndCongestionAvoidance': '路線規劃與擁堵規避', + 'voiceBroadcastAndWaypoints': '語音播報與途徑點設置', + 'realTimeWeatherForecast': '實時天氣與預報', + 'clothingAdviceAndTravelReminders': '穿衣建議與出行提醒', + 'poiSearchFoodGasParking': '餐飲/加油/停車等地點檢索', + 'ratingsHoursAndDirectRoutes': '評分、營業時間與路線直達', + 'hotNewsAndTopicOverview': '熱點快訊與專題速覽', + 'longArticleSummariesAndKeyPoints': '長文總結與要點提煉', + 'helpCallAndSMS': '幫忙撥打電話與發短信', + 'templatedMessagesAndScheduleReminders': '模板消息與日程提醒', + 'aiDisclaimer': '以上功能受設備權限、服務可用性與網路狀況影響,具體以實際表現為準。', + + // 商品模块 - 翻译商品页 'realtimeTranscription': '實時同傳', - // 'textTranslation' 已存在 'sceneLexicon': '場景詞庫', 'subtitleDisplay': '字幕顯示', - // 会议功能卡片 + 'transHeaderDesc1': '多語種實時同傳與文本翻譯,低延時語音播報。', + 'transHeaderDesc2': '適用於出行、商務、演講與教學等場景。', + 'translateZhEn': '中英互譯', + 'lowLatencyVoiceBroadcast': '低延時語音播報', + 'multiLangTextTranslation': '多語種文本翻譯', + 'termOptimizationContextPreserve': '術語優化與語境保持', + 'lexiconTourBusinessLife': '旅遊/商務/生活詞庫', + 'personalVocabularyMemory': '專屬詞彙記憶', + 'conversationSubtitleLargeText': '對話字幕/大字模式', + 'colorHighContrast': '顏色高對比度', + 'transDisclaimer': '翻譯效果受麥克風、網路時延與環境噪聲影響,具體以實際表現為準。', + + // 商品模块 - 会议商品页 'meetingRecording': '會議記錄', 'transcriptionAndSummary': '轉寫與總結', 'keywordSearch': '關鍵詞檢索', 'collaborationSharing': '協同分享', - // 商品名称(按ID) - 'ai_001_name': 'AI基礎 100 次', - 'ai_002_name': 'AI基礎 500 次', - 'ai_003_name': 'AI基礎 1000 次', - 'meet_001_name': '會議基礎 100 次', - 'meet_002_name': '會議基礎 500 次', - 'meet_003_name': '會議基礎 1000 次', - 'trans_001_name': '翻譯基礎 100 次', - 'trans_002_name': '翻譯基礎 500 次', - 'trans_003_name': '翻譯基礎 1000 次', - - // 商品描述(按ID) - 'ai_001_desc': '含 100 次使用,涵蓋核心 AI 功能', - 'ai_002_desc': '含 500 次使用,涵蓋核心 AI 功能', - 'ai_003_desc': '含 1000 次使用,涵蓋核心 AI 功能', - 'meet_001_desc': '含 100 次會議錄音/轉寫', - 'meet_002_desc': '含 500 次會議錄音/轉寫', - 'meet_003_desc': '含 1000 次會議錄音/轉寫', - 'trans_001_desc': '含 100 次翻譯(語音/文本)', - 'trans_002_desc': '含 500 次翻譯(語音/文本)', - 'trans_003_desc': '含 1000 次翻譯(語音/文本)', - -// 商品页通用页脚 - 'appNameProvider': '應用名稱:Voitrans · 服務提供:Voitrans', - 'iapCustomerServiceQQLabel': '內購商品專屬客服QQ:@qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 'meetingHeaderDesc1': '錄音轉寫、關鍵詞檢索與自動總結,提升會議效率。', 'meetingHeaderDesc2': '適用於商務會議、課堂筆記、訪談紀要等場景。', 'meetingAutoRecording': '自動錄音與分段', @@ -347,37 +352,7 @@ const Map zhTW = { 'meetingMultiPlatformShare': '多平台分享', 'meetingDisclaimer': '建議在安靜環境使用,效果受麥克風與網路影響,具體以實際表現為準。', - // 同传/翻译商品页描述 - 'transHeaderDesc1': '多語種實時同傳與文本翻譯,低延時語音播報。', - 'transHeaderDesc2': '適用於出行、商務、演講與教學等場景。', - 'translateZhEn': '中英互譯', - 'lowLatencyVoiceBroadcast': '低延時語音播報', - 'multiLangTextTranslation': '多語種文本翻譯', - 'termOptimizationContextPreserve': '術語優化與語境保持', - 'lexiconTourBusinessLife': '旅遊/商務/生活詞庫', - 'personalVocabularyMemory': '專屬詞彙記憶', - 'conversationSubtitleLargeText': '對話字幕/大字模式', - 'colorHighContrast': '顏色高對比度', - 'transDisclaimer': '翻譯效果受麥克風、網路時延與環境噪聲影響,具體以實際表現為準。', - - // AI 商品页描述 - 'aiHeaderDesc1': '更長對話額度、更多工具呼叫、更強上下文長度支持。', - 'aiHeaderDesc2': '適用於智能體問答、總結分析、任務執行等場景。', - 'musicSearchPlaybackControl': '檢索曲庫、播放控制', - 'smartPlaylistAndSimilarRecommendations': '智能推薦歌單與相似歌曲', - 'routePlanningAndCongestionAvoidance': '路線規劃與擁堵規避', - 'voiceBroadcastAndWaypoints': '語音播報與途徑點設置', - 'realTimeWeatherForecast': '實時天氣與預報', - 'clothingAdviceAndTravelReminders': '穿衣建議與出行提醒', - 'poiSearchFoodGasParking': '餐飲/加油/停車等地點檢索', - 'ratingsHoursAndDirectRoutes': '評分、營業時間與路線直達', - 'hotNewsAndTopicOverview': '熱點快訊與專題速覽', - 'longArticleSummariesAndKeyPoints': '長文總結與要點提煉', - 'helpCallAndSMS': '幫忙撥打電話與發短信', - 'templatedMessagesAndScheduleReminders': '模板消息與日程提醒', - 'aiDisclaimer': '以上功能受設備權限、服務可用性與網路狀況影響,具體以實際表現為準。', - - // 会员商品页 + // 商品模块 - VIP会员页 'benefitsOverview': '權益總覽', 'higherQuota': '更高使用額度', 'lowerUnitPrice': '更低單價', @@ -392,7 +367,32 @@ const Map zhTW = { 'crossDeviceSync': '跨設備同步', 'vipDisclaimer': '具體權益以實際套餐說明為準,可能隨版本迭代調整。', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI基礎 100 次', + 'ai_002_name': 'AI基礎 500 次', + 'ai_003_name': 'AI基礎 1000 次', + 'meet_001_name': '會議基礎 100 次', + 'meet_002_name': '會議基礎 500 次', + 'meet_003_name': '會議基礎 1000 次', + 'trans_001_name': '翻譯基礎 100 次', + 'trans_002_name': '翻譯基礎 500 次', + 'trans_003_name': '翻譯基礎 1000 次', + 'ai_001_desc': '含 100 次使用,涵蓋核心 AI 功能', + 'ai_002_desc': '含 500 次使用,涵蓋核心 AI 功能', + 'ai_003_desc': '含 1000 次使用,涵蓋核心 AI 功能', + 'meet_001_desc': '含 100 次會議錄音/轉寫', + 'meet_002_desc': '含 500 次會議錄音/轉寫', + 'meet_003_desc': '含 1000 次會議錄音/轉寫', + 'trans_001_desc': '含 100 次翻譯(語音/文本)', + 'trans_002_desc': '含 500 次翻譯(語音/文本)', + 'trans_003_desc': '含 1000 次翻譯(語音/文本)', + + // 商品模块 - 页脚 + 'appNameProvider': '應用名稱:Voitrans · 服務提供:Voitrans', + 'iapCustomerServiceQQLabel': '內購商品專屬客服QQ:@qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "跳過", 'next': '下一步', 'sayLilyHint': "Say \"Lily Lily\" to the mic", @@ -403,7 +403,6 @@ const Map zhTW = { 'guideAwakenSuccess': "Great! Lily is awake—ask it to help.", 'confirmInput': "Confirm Input", 'guideClickSendPrefix': "Tap send, ", - // AI 引导步骤 'guideWeatherStart': "Tell Lily: “What’s the weather today?”", 'guideWeatherInput': "What’s the weather today?", 'guideWeatherSend': "Lily will report the weather in real time", @@ -430,7 +429,7 @@ const Map zhTW = { 'guideSmsSend': "Lily will send the message", 'guideSmsEnd': "Message sent—voice control is convenient", - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "開始會議", 'edit': '編輯', 'delete': '刪除', @@ -442,8 +441,6 @@ const Map zhTW = { 'recordingDetails': '錄音詳情', 'aiSummary': 'AI總結', 'meetingTranscript': '會議原文', - - // Meeting模块 - 导航和基础功能 'files': '檔案', 'mine': '我的', 'connect': '連接', @@ -496,7 +493,6 @@ const Map zhTW = { 'summarizing': '正在總結...', 'analyzing': '正在分析...', 'summaryComplete': '總結完成', - //'generating': '正在生成...', 'generate': '生成', 'overview': '概覽', 'transcription': '轉寫', @@ -505,77 +501,15 @@ const Map zhTW = { 'editSpeaker': '編輯', 'nameSpeaker': '命名發言者', - // Meeting模块 - 我的页面 - 'transcriptionRecords': '轉寫記錄', - 'templateCommunity': '模板社區', - 'comingSoon': '敬請期待', - 'integration': '集成', - 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', - 'enabled': '開啟', - 'disabled': '關閉', - 'myVoitransDevice': '我的VOITRANS設備', - 'helpAndFeedback': '幫助與反饋', - 'aboutVoitrans': '關於VOITRANS', - 'meetingDays': '天', - 'meetingHours': '小時', - 'voitransAiMember': 'Voitrans AI會員', - 'unlockStarterMember': '解鎖 Starter 會員', - 'bindDeviceToActivate': '綁定 Voitrans 設備可啟用 Starter 會員', - 'unlockNow': '立即解鎖', - - // Meeting模块 - 会员功能 - 'comparison': '對比', - 'detailedInfo': '詳細資訊', - 'monthlyTranscriptionTime': '每月轉寫時長', - 'unlimited': '無限', - 'professionalTemplates': '專業模板', - 'limited': '有限', - 'fullTemplates': '全量模板', - 'professionalTerms': '專業術語', - 'customTemplates': '自訂模板', - 'visualMindMap': '可視化思維導圖', - 'speakerIdentification': '區分說話人', - 'aiVoiceEnhancement': 'AI 人聲增強', - 'audioImport': '音訊導入', - 'multipleExportFormats': '支援多種導出格式', - 'professionalSummaryTemplates': '專業總結模板', - 'professionalTemplateDesc': '專業模板設計,提高您的工作效率。根據行業需求量身定制。', - 'customTemplateDesc': '您可以根據需求自訂總結 Prompts,並用它們生成所需的總結。', - 'askAiDesc': '從錄音中智能挖掘更深入資訊,一鍵生成資料表格、關鍵討論結論、To Do、匯報郵件等格式內容。', - 'visualMindMapDesc': '超越總結-用思維導圖整理和可視化要點,更有效地理解全文。', - 'templateCommunityDesc': '發現、分享,並從使用者建立的模板庫中獲得靈感。', - 'speakerIdentificationDesc': '音訊轉寫將支援區分發言者,更直觀地還原會議或電話通話內容。同時總結將更加準確。', - 'privateCloudSyncDesc': '您的錄音和轉寫等資料將安全儲存在專屬的雲端伺服器中,無論是上傳還是下載,全程加密處理,確保隱私安全。', - 'aiVoiceEnhancementDesc': 'AI 人聲增強支援多檔降噪設定,智能消除背景噪音,增強語音清晰度,提升音訊回放效果。', - 'audioImportDesc': '可以輕鬆從本地或第三方應用導入音訊檔案,如語音備忘錄、Google雲端硬碟等。', - 'multipleExportFormatsDesc': '導出您的音訊錄音、轉寫文本和摘要為各種格式(TXT、PDF、JPEG),以滿足您的需求。', - - // Meeting模块 - 升级会员 - 'upgradeMembership': '升級您的會員', - 'yearlySubscription': '年訂閱', - 'monthlySubscription': '月訂閱', - 'proMonthly': 'Pro ¥60/月', - 'proMonthlyDesc': '7天免費試用,之後按¥800/年。試用期結束前可隨時取消。', - 'sevenDayTrial': '7天免費試用', - 'unlimitedMonthly': 'Unlimited ¥120/月', - 'unlimitedMonthlyDesc': '7天免費試用,之後按¥1600/年。試用期結束前可隨時取消。', - 'trialNote': '*免費試用7天,然後按年收費,隨時取消。', - 'proPrice': 'Pro ¥120', - 'proMonthlyPrice': '¥120/月', - 'subscribe': '訂閱', - 'unlimitedPrice': 'Unlimited ¥198', - 'unlimitedMonthlyPrice': '¥198/月', - 'upgradeNote': '*升級訂閱後,原訂閱的剩餘天數會自動折算差價並退還至您的支付帳戶', - 'buyMoreTranscriptionTime': '購買更多轉寫時長', - 'sixThousandMinutes': '6,000分鐘', - 'threeThousandMinutes': '3,000分鐘', - 'sixHundredMinutes': '600分鐘', - 'oneHundredTwentyMinutes': '120分鐘', - 'validityPeriod': '*有效期:', - 'validityNote': '購買後立即啟用,啟用後2年內有效。', - 'purchase': '購買', + // Meeting模块 - 转写与总结 + 'reSummarize': '重新總結', + 'dateAndTime': '日期時間', + 'location': '地點', + 'attendees': '與會人員', + 'inputLocation': '輸入地點', + 'inputAttendees': '輸入與會人員', - // Meeting模块 - 模版和生成 + // Meeting模块 - 模版与生成 'selectSummaryTemplate': '選擇總結模板', 'useThisTemplate': '就用這個模板', 'lastUsed': '上次使用', @@ -601,7 +535,7 @@ const Map zhTW = { 'keyEventsAnalyzed': '分析出{count}個關鍵事件。', 'aiAnalysisDesc': 'AI分析識別錄音中的關鍵事件,讓你選擇重要事件進行AI生成。', - // Meeting模块 - 文件操作和状态 + // Meeting模块 - 文件操作 'importing': '正在導入...', 'batchImporting': '正在批量導入...', 'importingLocalRecordings': '正在導入本地錄音...', @@ -614,21 +548,12 @@ const Map zhTW = { 'shareFailed': '分享失敗: {error}', 'fileProcessingFailed': '檔案處理失敗: {filePath}, 錯誤: {error}', - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': '未知語言', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': '儲存', - 'meetingStoragePermissionExplanation': '我們需要存取儲存權限,以便您可以選擇並上傳音訊檔案。', - 'meetingStoragePermissionPermanentDenial': - '檢測到您已永久拒絕儲存權限。如需繼續使用此功能,請前往應用設定中手動開啟儲存權限。', - - // Meeting模块 - 思维导图相关 + // Meeting模块 - 思维导图 'saveMindMap': '儲存思維導圖', 'shareMindMap': '分享思維導圖', 'shareSuccess': '分享成功', - // Meeting模块 - AI相关 + // Meeting模块 - AI问答 'askAI': '問 AI ...', 'askAIPrompt': '今天我能幫您做點什麼呢?', 'continueAsk': '繼續提問', @@ -636,37 +561,7 @@ const Map zhTW = { 'extractConclusion': '提取結論', 'generateKeyIndicators': '生成關鍵指標', - // Meeting模块 - 更多操作相关 - 'reSummarize': '重新總結', - - // Meeting模块 - 错误提示相关 - 'analysisFailed': '分析失敗,請稍後重試', - 'transcriptionFailed': '轉寫失敗,請稍後重試', - 'summaryFailed': '總結失敗,請稍後重試', - 'summaryFailedShort': '總結失敗', - 'transcriptionFailedShort': '轉寫失敗', - - // Meeting模块 - 播放器相关 - 'playerNotReady': '音頻播放器未準備好,請稍候', - 'playFailed': '播放失敗', - 'audioFileNotFound': '音頻文件不存在', - 'playerLoadFailed': '音頻播放器加載失敗', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': '錄音語言', - // 'chinese': '中文普通话(简体)', - 'cantonese': '粵語', - 'sichuan': '四川話', - 'shanghai': '上海話', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 + // Meeting模块 - 分享与导出 'shareLink': '分享連結', 'copyTranscript': '複製轉寫', 'copySummary': '複製總結', @@ -678,7 +573,7 @@ const Map zhTW = { 'exportingPDF': '正在導出PDF...', 'export': '導出', - // Meeting模块 - 发言者相关 + // Meeting模块 - 发言者 'applyToAllParagraphs': '應用到這個發言者的所有段落', 'summaryWillBeUpdatedAutomatically': '總結將根據模版自動更新', 'nameCurrentSpeaker': '命名當前發言者', @@ -687,39 +582,121 @@ const Map zhTW = { 'totalTime': '總計', 'summarySpeakerWillBeUpdatedAutomatically': '總結的發言者將自動更新', - // Meeting模块 - 云端同步相关 + // Meeting模块 - 云端同步 'syncToCloud': '同步到雲端', 'syncToCloudTip': '自動將你的錄音同步到雲端,你可以通過任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享錄音。', 'syncToVoitransApp': '同步VOITRANS APP', 'transcriptionRecord': '轉寫記錄', - // Meeting模块 - 总结页面相关 - 'dateAndTime': '日期時間', - 'location': '地點', - 'attendees': '與會人員', - 'inputLocation': '輸入地點', - 'inputAttendees': '輸入與會人員', + // Meeting模块 - 我的页面 + 'transcriptionRecords': '轉寫記錄', + 'templateCommunity': '模板社區', + 'comingSoon': '敬請期待', + 'integration': '集成', + 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', + 'enabled': '開啟', + 'disabled': '關閉', + 'myVoitransDevice': '我的VOITRANS設備', + 'helpAndFeedback': '幫助與反饋', + 'aboutVoitrans': '關於VOITRANS', + 'meetingDays': '天', + 'meetingHours': '小時', + 'voitransAiMember': 'Voitrans AI會員', + 'unlockStarterMember': '解鎖 Starter 會員', + 'bindDeviceToActivate': '綁定 Voitrans 設備可啟用 Starter 會員', + 'unlockNow': '立即解鎖', - // 设置页 - "systemSettings": "系統設定", - "vipRecharge": "高級會員充值", - "aiRecharge": "AI充值", - "translationRecharge": "翻譯充值", - "meetingAssistantRecharge": "會議充值", - "cloudSync": "雲端同步", - "memberService": '會員服務', - "bindRewardTitle": '獎勵', - "bindRewardSimpleDesc": '首次綁定設備獎勵已下發,點擊確定關閉即可', - "joinDevice": "已連接設備:", - "accountId": "帳號ID:", - "systemSetting": "系統設定", - "languageSetting": "語言設定", - "darkMode": "深色模式", - "darkModeInfo": "切換應用的明暗主題", - "backups": "備份與還原", - "backupsInfo": "備份設定和AI互動歷史", - "lastBackup": "上次備份:", + // Meeting模块 - 会员与升级 + 'comparison': '對比', + 'detailedInfo': '詳細資訊', + 'monthlyTranscriptionTime': '每月轉寫時長', + 'unlimited': '無限', + 'professionalTemplates': '專業模板', + 'limited': '有限', + 'fullTemplates': '全量模板', + 'professionalTerms': '專業術語', + 'customTemplates': '自訂模板', + 'visualMindMap': '可視化思維導圖', + 'speakerIdentification': '區分說話人', + 'aiVoiceEnhancement': 'AI 人聲增強', + 'audioImport': '音訊導入', + 'multipleExportFormats': '支援多種導出格式', + 'professionalSummaryTemplates': '專業總結模板', + 'professionalTemplateDesc': '專業模板設計,提高您的工作效率。根據行業需求量身定制。', + 'customTemplateDesc': '您可以根據需求自訂總結 Prompts,並用它們生成所需的總結。', + 'askAiDesc': '從錄音中智能挖掘更深入資訊,一鍵生成資料表格、關鍵討論結論、To Do、匯報郵件等格式內容。', + 'visualMindMapDesc': '超越總結-用思維導圖整理和可視化要點,更有效地理解全文。', + 'templateCommunityDesc': '發現、分享,並從使用者建立的模板庫中獲得靈感。', + 'speakerIdentificationDesc': '音訊轉寫將支援區分發言者,更直觀地還原會議或電話通話內容。同時總結將更加準確。', + 'privateCloudSyncDesc': '您的錄音和轉寫等資料將安全儲存在專屬的雲端伺服器中,無論是上傳還是下載,全程加密處理,確保隱私安全。', + 'aiVoiceEnhancementDesc': 'AI 人聲增強支援多檔降噪設定,智能消除背景噪音,增強語音清晰度,提升音訊回放效果。', + 'audioImportDesc': '可以輕鬆從本地或第三方應用導入音訊檔案,如語音備忘錄、Google雲端硬碟等。', + 'multipleExportFormatsDesc': '導出您的音訊錄音、轉寫文本和摘要為各種格式(TXT、PDF、JPEG),以滿足您的需求。', + 'upgradeMembership': '升級您的會員', + 'yearlySubscription': '年訂閱', + 'monthlySubscription': '月訂閱', + 'proMonthly': 'Pro ¥60/月', + 'proMonthlyDesc': '7天免費試用,之後按¥800/年。試用期結束前可隨時取消。', + 'sevenDayTrial': '7天免費試用', + 'unlimitedMonthly': 'Unlimited ¥120/月', + 'unlimitedMonthlyDesc': '7天免費試用,之後按¥1600/年。試用期結束前可隨時取消。', + 'trialNote': '*免費試用7天,然後按年收費,隨時取消。', + 'proPrice': 'Pro ¥120', + 'proMonthlyPrice': '¥120/月', + 'subscribe': '訂閱', + 'unlimitedPrice': 'Unlimited ¥198', + 'unlimitedMonthlyPrice': '¥198/月', + 'upgradeNote': '*升級訂閱後,原訂閱的剩餘天數會自動折算差價並退還至您的支付帳戶', + 'buyMoreTranscriptionTime': '購買更多轉寫時長', + 'sixThousandMinutes': '6,000分鐘', + 'threeThousandMinutes': '3,000分鐘', + 'sixHundredMinutes': '600分鐘', + 'oneHundredTwentyMinutes': '120分鐘', + 'validityPeriod': '*有效期:', + 'validityNote': '購買後立即啟用,啟用後2年內有效。', + 'purchase': '購買', + + // Meeting模块 - 录音语言 + 'recordLanguage': '錄音語言', + 'cantonese': '粵語', + 'sichuan': '四川話', + 'shanghai': '上海話', + + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': '未知語言', + 'analysisFailed': '分析失敗,請稍後重試', + 'transcriptionFailed': '轉寫失敗,請稍後重試', + 'summaryFailed': '總結失敗,請稍後重試', + 'summaryFailedShort': '總結失敗', + 'transcriptionFailedShort': '轉寫失敗', + + // Meeting模块 - 播放器 + 'playerNotReady': '音頻播放器未準備好,請稍候', + 'playFailed': '播放失敗', + 'audioFileNotFound': '音頻文件不存在', + 'fetchingAudio': '正在從雲端獲取音訊...', + 'playerLoadFailed': '音頻播放器加載失敗', + + // 设置页 + "systemSettings": "系統設定", + "vipRecharge": "高級會員充值", + "aiRecharge": "AI充值", + "translationRecharge": "翻譯充值", + "meetingAssistantRecharge": "會議充值", + "cloudSync": "雲端同步", + "memberService": '會員服務', + "bindRewardTitle": '獎勵', + "bindRewardSimpleDesc": '首次綁定設備獎勵已下發,點擊確定關閉即可', + "joinDevice": "已連接設備:", + "accountId": "帳號ID:", + "systemSetting": "系統設定", + "languageSetting": "語言設定", + "darkMode": "深色模式", + "darkModeInfo": "切換應用的明暗主題", + "backups": "備份與還原", + "backupsInfo": "備份設定和AI互動歷史", + "lastBackup": "上次備份:", "privacySettings": "隱私設定", "privacySettingsInfo": "管理資料收集和權限", "permissionManagement": "權限管理", // 权限管理 @@ -748,25 +725,14 @@ const Map zhTW = { "bleHeadsetFirmwareUpgrade": "BLE耳機韌體版本升級", "deviceManagement": "設備管理", "manageConnectedDevices": "管理已綁定的藍牙設備", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': '當前已是最新版本 {version}', 'checkUpdateFailed': '檢查更新失敗', 'networkErrorRetry': '網路錯誤,請稍後重試', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "實時語音對話", "realtimeVoiceChatInfo": "體驗智能語音互動功能(功能預覽)", "loading": "載入中...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": '未知設備', "deviceTypeClassicBluetoothHeadset": '經典藍牙耳機', "deviceTypeBleBluetoothHeadset": 'BLE藍牙耳機', @@ -781,8 +747,7 @@ const Map zhTW = { "confirmUnbindMessage": '確定要解除綁定設備 "{deviceName}" 嗎?', "confirmUnbindAction": '確認解除綁定', -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "清空聊天記錄", "online": "在線", @@ -812,8 +777,9 @@ const Map zhTW = { "swipeUpForMore": "向上滑動查看更多", "callingTool": "正在幫您,請稍等!", // 正在帮您,请稍等! "voice_interrupt": "語音打斷", // 语音打断 + 'voice_interrupt_tip': '開啟後:AI播報時不會被語音打斷,只能進行單輪對話,需要打斷時請說喚醒詞開啟新一輪對話。', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": '來點音樂', // 来点音乐 "presetNavigation": '導航到', // 导航 "presetWeather": '今日天氣', // 今日天气 @@ -825,7 +791,7 @@ const Map zhTW = { "todayNews": '今天有哪些新聞?', // 今日新闻 "nearbyFood": '附近有哪些美食?', // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': '你好!我是**Lily**,我能幫你:\n\n' '• 回答問題和提供資訊\n\n' '• 實時語音翻譯\n\n' @@ -841,18 +807,17 @@ const Map zhTW = { 'startVoiceInput': '開始語音輸入', 'startPhoneCallMode': '開始打電話模式,開始語音輸入', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': '在這裡輸入你的訊息...', // 全屏编辑器输入提示 'characterCount': '{count} 字元', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': '複製', 'copySuccess': '複製成功', 'report': '舉報', 'submitSuccess': '提交成功', 'submitFailed': '提交失敗', 'reportSubmitted': '舉報已提交,我們會盡快處理', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': '有害/不安全', 'pornographicVulgar': '色情低俗', 'misleadingAttack': '誤導攻擊', @@ -861,17 +826,14 @@ const Map zhTW = { 'copyrightViolation': '侵犯我的著作權、名譽權等', 'other': '其他', 'reportDescriptionHint': '我們想知道你舉報的原因,你可以描述你遇到的問題。', - //'submit': '提交', - - //Message_bubble 'generatedByAi': '由AI生成', - //音乐卡片 music_card + // Agent模块 - 音乐卡片 'recommendedMusic': '以下是一些推薦的音樂:', 'playList': '播放清單', 'moreMusic': '更多音樂', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': '公里', // 公里单位 'meters': '米', // 米单位 'hours': '小時', // 小时单位 @@ -886,7 +848,7 @@ const Map zhTW = { "bicycling": "騎行", "tsransit": "公共交通", - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': '查詢天氣情況:', 'highest': '最高', 'lowest': '最低', @@ -907,18 +869,8 @@ const Map zhTW = { "friday": "週五", "saturday": "週六", "sunday": "週日", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": 'Welcome Reward', - "firstBindRewardDesc": 'You\'ve received binding rewards.', - "vipLevelLabel": 'VIP Level:', - "expiryLabel": '到期時間:', - "notActivated": '未啟用', - "aiChatCreditsLabel": 'AI Chat Credits:', - "translationCreditsLabel": 'Translation Credits:', - "meetingCreditsLabel": 'Meeting Credits:', - "ok": 'OK', - // 天气描述 + // Agent模块 - 天气描述 "sunny": "晴", "partlyCloudy": "少雲", "partlySunny": "晴間多雲", @@ -939,7 +891,119 @@ const Map zhTW = { "haze": "霾", "strongWind": "大風", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": '圖片翻譯', + "textTranslation": '文本翻譯', + + // 翻译模块 - 主页 + "translationHistory": "翻譯歷史", + "enableRecording": "是否開啟錄音", + "viewAudioFiles": "查看錄音檔案", + "headsetUser": "耳機使用者", + "phoneUser": "手機使用者", + "selectSourceLanguage": "選擇來源語言", + "selectTargetLanguage": "選擇目標語言", + "me": '我', + "counterPart": '對方', + "bluetoothCallStateError": '請確保藍牙耳機已連接到手機並處於通話狀態', + "autoDetect": '自動檢測', // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": '語言檢測失敗', + "translationFailed": '翻譯失敗', + "pleaseInputText": '請輸入文本', + "textTooLong": '文本過長,最多5000字符', + + // 翻译模块 - 历史记录 + "noTranslationHistory": "暫無歷史記錄", + "historyRecords": '歷史記錄', + "clearResults": '清空結果', + "clearHistory": "清除歷史記錄", + "clearHistoryConfirm": "確定要清除所有翻譯歷史記錄嗎?此操作無法撤銷。", + "unknownLanguage": "未知語言", + "deleteSessionRecord": "刪除對話記錄", + "deleteSessionConfirm": "確定要刪除該對話的所有翻譯記錄嗎?此操作無法撤銷。", + + // 翻译模块 - 图片翻译 + "selectImageSource": '選擇圖片來源', + "imagePreview": '圖片預覽', + "translationResult": '翻譯結果', + "recognitionResult": '識別結果', + "translatedImagePreview": '翻譯後的圖片預覽', + "translatedImageLoadFailed": '翻譯圖片載入失敗', + "pleaseSelectImage": '請選擇圖片', + "imageLoadFailed": '圖片載入失敗', + "imageQuality": '圖片品質', + "maxSize": '最大尺寸', + "close": '關閉', + "setImageQuality": '設定圖片品質', + "currentQuality": '當前品質: @value%', + "setMaxSize": '設定最大尺寸', + "currentMaxSize": '當前: @pxpx', + "waitingForAction": '等待操作', + "pleaseSelectImageToStart": '請選擇圖片開始翻譯', + "chooseImage": '選擇圖片', + "openingCamera": '正在打開相機...', + "openingPhotoAlbum": '正在打開相簿...', + "cancelled": '已取消', + "userCancelledSelection": '使用者取消了選擇', + "translatingImage": '翻譯圖片', + "callingImageTranslateService": '正在呼叫圖片翻譯服務...', + "savingRecord": '保存記錄', + "savingTranslationResult": '正在保存翻譯結果...', + "translationCompleted": '翻譯完成', + "allStepsCompleted": '所有步驟已完成', + "processingFailed": '處理失敗', + "imageProcessingOrTranslationFailed": '圖片處理或翻譯失敗,請重試。n錯誤資訊: {error}', + "imageTooLarge": '圖片大小超過4MB限制', + "imageTooLargeHint": '圖片大小超過4MB限制,請降低品質或尺寸後重試', + "emptyTranslationResult": '圖片翻譯介面返回空結果', + "imageTranslationFailedTryLater": '圖片翻譯失敗,可能的原因:網路異常或介面限流,請稍後重試', + "imageTranslationApiException": '圖片翻譯介面呼叫異常,請檢查網路後重試', + "permissionRequired": '權限需求', + "cameraPermissionRequired": '需要相機權限才能拍照', + "photoAlbumPermissionRequired": '需要相簿權限才能選擇圖片', + "translationDetails": '翻譯詳情', + "originalImage": '原圖片', + "sourceLanguage": '源語言', + "targetLanguage": '目標語言', + "translationTime": '翻譯時間', + "shareInDevelopment": '分享功能開發中', + + // 翻译模块 - 录音文件 + "translateAudioFiles": "翻譯錄音檔案", + "noAudioFiles": "暫無音訊檔案", + "calculating": "計算中...", + "playing": "播放中...", + "paused": "已暫停", + "clickToPlay": "點擊播放", + "rename": "重新命名", + "smartTranscription": "智能轉寫", + "renameAudioFile": "重新命名音訊檔案", + "enterNewFileName": "請輸入新的檔案名稱", + + // 翻译模块 - 翻译详情 + "originalRecord": "原始記錄", + "recordSummary": "記錄摘要", + "clickToGenerateSummary": "點擊下方按鈕生成對話摘要", + "summaryContent": "摘要內容", + "copied": "已複製", + "summaryCopiledToClipboard": "摘要已複製到剪貼簿", + "extractSummary": "提取摘要", + "summaryGenerated": "已生成摘要", + "generating": "生成中...", + "regenerate": "重新生成", + "summaryTimeoutMessage": "生成摘要請求逾時,可能是網路問題或伺服器繁忙。", + "deleteTranslationRecord": "刪除翻譯記錄", + "deleteTranslationConfirm": "確定要刪除這條翻譯記錄嗎?此操作無法撤銷。", + "originalText": "原文", + "translatedText": "譯文", + "sessionSummary": "對話摘要", + "cannotShare": "無法分享", + "generateSummaryFirst": "請先生成摘要", + "translationSessionRecord": "翻譯對話記錄", + + // 个人资料模块 "editProfile": "編輯個人資訊", "avatar": "頭像", "nickname": "暱稱", @@ -954,8 +1018,6 @@ const Map zhTW = { 'deleteAccountTips': '確定要永久刪除您的帳號嗎?此操作不可撤銷', 'clean': '清除快取', 'cleanTips': '確定要清除個人快取嗎?', - - // Profile 错误信息 'networkConnectionFailed': '網路連接失敗,請檢查網路設定後重試', 'serverTemporarilyUnavailable': '伺服器暫時無法回應,請稍後重試', 'loginExpiredPleaseRelogin': '登入已過期,請重新登入', @@ -967,10 +1029,6 @@ const Map zhTW = { 'serverError': '伺服器錯誤', 'networkConnectionFailedCheckSettings': '網路連接失敗,請檢查網路設定', 'serverInternalErrorRetryLater': '伺服器內部錯誤,請稍後重試', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': '圖片壓縮失敗', 'avatarUpdateFailed': '頭像更新失敗', 'usernameCannotBeEmpty': '使用者名稱不能為空', @@ -981,8 +1039,6 @@ const Map zhTW = { 'logoutFailedRetry': '登出失敗,請重試', 'accountPermanentlyDeleted': '帳號已被永久刪除', 'deleteAccountFailedRetry': '刪除帳號失敗,請重試', - - // 账号服务相关 'clearUserDataFailed': '清理使用者資料失敗', // 清理用户数据失败 'deleteUserDataFailed': '刪除使用者資料失敗', // 删除用户数据失败 'thirdPartyLogoutSuccess': '第三方登出成功', // 第三方登录退出成功 @@ -993,7 +1049,11 @@ const Map zhTW = { 'allUserDataClearSuccess': '所有使用者資料清理成功', // 所有用户数据清理成功 'accountServiceInitialized': 'AccountService 已初始化', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': '儲存', + 'meetingStoragePermissionExplanation': '我們需要存取儲存權限,以便您可以選擇並上傳音訊檔案。', + 'meetingStoragePermissionPermanentDenial': + '檢測到您已永久拒絕儲存權限。如需繼續使用此功能,請前往應用設定中手動開啟儲存權限。', 'getPermissionStatusFailed': '取得權限狀態失敗', 'communicationPermissions': '通訊權限', 'bluetoothPermissions': '藍牙權限', @@ -1006,7 +1066,6 @@ const Map zhTW = { 'phone': '電話', 'sms': '簡訊', 'contacts': '聯絡人', - //'bluetooth': '蓝牙', 'notification': '通知', 'alarm': '鬧鐘', 'calendarWrite': '日曆寫入', @@ -1045,8 +1104,6 @@ const Map zhTW = { 'appNeedsPermissionForFullFunction': '應用需要此權限以提供完整功能', 'permanentDenialText': '您已永久拒絕{permission}權限,請前往應用設定開啟', 'goToSettings': '去設定', - - // 权限申请 'bluetoothScan': '藍牙掃描', 'bluetoothConnect': '藍牙連接', 'bluetoothScanExplanation': '為了掃描附近的藍牙設備,應用需要取得藍牙掃描權限。', @@ -1061,7 +1118,6 @@ const Map zhTW = { 'locationPermissionExplanation': '需要定位權限來取得當前位置。', 'notificationPermissionPermanentDenial': '您已永久拒絕通知權限,請前往設定開啟權限。', 'locationPermissionPermanentDenial': '您已永久拒絕定位權限,請前往設定開啟權限。', -//'microphonePermission': '录音', 'storagePermission': '儲存', 'microphonePermissionExplanation': '我們需要存取麥克風權限,以便您錄製音訊內容。', 'storagePermissionExplanation': '我們需要存取儲存權限,以便您可以選擇並上傳音訊檔案。', @@ -1069,6 +1125,11 @@ const Map zhTW = { '檢測到您已永久拒絕錄音權限。如需繼續使用此功能,請前往應用設定中手動開啟麥克風權限。', 'storagePermissionPermanentDenial': '檢測到您已永久拒絕儲存權限。如需繼續使用此功能,請前往應用設定中手動開啟儲存權限。', + 'permissionUtilNeed': '需要', + 'permissionUtilPermission': '權限', + 'permissionUtilRestricted': '權限受限', + 'permissionUtilRestrictedMessage': '此功能在當前設備上不可用或受限,請檢查設備設定或系統限制', + 'permissionUtilConfirm': '確定', // 原生前台服务通知(Android) 'native.notification.appName': 'VOITRANS', @@ -1083,14 +1144,7 @@ const Map zhTW = { 'native.notification.music.pause': '暫停', 'native.notification.qqMusic.playing': '正在播放音樂', - //permission_util.dart - 'permissionUtilNeed': '需要', - 'permissionUtilPermission': '權限', - 'permissionUtilRestricted': '權限受限', - 'permissionUtilRestrictedMessage': '此功能在當前設備上不可用或受限,請檢查設備設定或系統限制', - 'permissionUtilConfirm': '確定', - - // 版本更新对话框 + // 版本更新 'newVersionFound': '發現新版本', // 版本更新对话框标题 'remindLater': '稍後提醒', // 稍后提醒按钮 'updateNow': '立即更新', // 立即更新按钮 @@ -1099,242 +1153,7 @@ const Map zhTW = { 'cannotOpenAppStore': '無法打開應用商店,請手動前往應用商店更新', // 无法打开应用商店提示 'updateErrorRetry': '更新過程中發生錯誤,請稍後重試', // 更新错误重试提示 - //国家列表 - "邮箱": "電子郵件", - "中国": "中國", - "美国": "美國", - "加拿大": "加拿大", - "俄罗斯": "俄羅斯", - "英国": "英國", - "德国": "德國", - "意大利": "義大利", - "法国": "法國", - "西班牙": "西班牙", - "南非": "南非", - "沙特阿拉伯": "沙特阿拉伯", - "土耳其": "土耳其", - "日本": "日本", - "韩国": "韓國", - "新加坡": "新加坡", - "马来西亚": "馬來西亞", - "泰国": "泰國", - "越南": "越南", - "印度": "印度", - "巴基斯坦": "巴基斯坦", - "菲律宾": "菲律賓", - "印度尼西亚": "印度尼西亞", - "阿联酋": "阿聯酋", - "墨西哥": "墨西哥", - "巴西": "巴西", - "阿根廷": "阿根廷", - "澳大利亚": "澳大利亞", - "新西兰": "新西蘭", - "中国香港": "中國香港", - "中国澳门": "中國澳門", - "中国台湾": "中國台灣", - "埃及": "埃及", - "希腊": "希臘", - "荷兰": "荷蘭", - "比利时": "比利時", - "匈牙利": "匈牙利", - "罗马尼亚": "羅馬尼亞", - "瑞士": "瑞士", - "奥地利": "奧地利", - "丹麦": "丹麥", - "瑞典": "瑞典", - "挪威": "挪威", - "波兰": "波蘭", - "秘鲁": "秘魯", - "智利": "智利", - "哥伦比亚": "哥倫比亞", - "委内瑞拉": "委內瑞拉", - "葡萄牙": "葡萄牙", - "卢森堡": "盧森堡", - "爱尔兰": "愛爾蘭", - "冰岛": "冰島", - "阿尔巴尼亚": "阿爾巴尼亞", - "马耳他": "馬耳他", - "塞浦路斯": "塞浦路斯", - "芬兰": "芬蘭", - "保加利亚": "保加利亞", - "立陶宛": "立陶宛", - "拉脱维亚": "拉脫維亞", - "爱沙尼亚": "愛沙尼亞", - "乌克兰": "烏克蘭", - "塞尔维亚": "塞爾維亞", - "克罗地亚": "克羅埃西亞", - "斯洛文尼亚": "斯洛文尼亞", - "捷克": "捷克", - "斯洛伐克": "斯洛伐克", - "危地马拉": "危地馬拉", - "萨尔瓦多": "薩爾瓦多", - "洪都拉斯": "洪都拉斯", - "尼加拉瓜": "尼加拉瓜", - "哥斯达黎加": "哥斯達黎加", - "巴拿马": "巴拿馬", - "海地": "海地", - "玻利维亚": "玻利維亞", - "厄瓜多尔": "厄瓜多爾", - "巴拉圭": "巴拉圭", - "乌拉圭": "烏拉圭", - "摩洛哥": "摩洛哥", - "阿尔及利亚": "阿爾及利亞", - "突尼斯": "突尼斯", - "尼日利亚": "尼日利亞", - "加纳": "加納", - "埃塞俄比亚": "埃塞俄比亞", - "肯尼亚": "肯尼亞", - "坦桑尼亚": "坦桑尼亞", - "乌干达": "烏干達", - "孟加拉国": "孟加拉國", - "以色列": "以色列", - "黎巴嫩": "黎巴嫩", - "约旦": "約旦", - "伊拉克": "伊拉克", - "科威特": "科威特", - "巴林": "巴林", - "卡塔尔": "卡塔爾", - "阿曼": "阿曼", - "阿富汗": "阿富汗", - "斯里兰卡": "斯里蘭卡", - "缅甸": "緬甸", - "尼泊尔": "尼泊爾", - "蒙古": "蒙古", - "柬埔寨": "柬埔寨", - "老挝": "老撾", - "文莱": "文萊", - "东帝汶": "東帝汶", - "斐济": "斐濟", - "所罗门群岛": "所羅門群島", - "刚果民主共和国": '剛果民主共和國', - "安哥拉": '安哥拉', - "苏丹": '蘇丹', - "马尔代夫": '馬爾代夫', - "不丹": '不丹', - "摩纳哥": '摩納哥', - "圣马力诺": '聖馬力諾', - "牙买加": '牙買加', - "巴哈马": '巴哈馬', - "巴布亚新几内亚": '巴布亞新幾內亞', - "萨摩亚": '薩摩亞', - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": '圖片翻譯', - "textTranslation": '文本翻譯', - - // 翻译主页 (translation_view.dart) - "translationHistory": "翻譯歷史", - "enableRecording": "是否開啟錄音", - "viewAudioFiles": "查看錄音檔案", - "headsetUser": "耳機使用者", - "phoneUser": "手機使用者", - "selectSourceLanguage": "選擇來源語言", - "selectTargetLanguage": "選擇目標語言", - "me": '我', - "counterPart": '對方', - "bluetoothCallStateError": '請確保藍牙耳機已連接到手機並處於通話狀態', - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": '自動檢測', // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": '語言檢測失敗', - "translationFailed": '翻譯失敗', - "pleaseInputText": '請輸入文本', - "textTooLong": '文本過長,最多5000字符', - - // 翻译历史页 - "noTranslationHistory": "暫無歷史記錄", - "historyRecords": '歷史記錄', - "clearResults": '清空結果', - "clearHistory": "清除歷史記錄", - "clearHistoryConfirm": "確定要清除所有翻譯歷史記錄嗎?此操作無法撤銷。", - "unknownLanguage": "未知語言", - "deleteSessionRecord": "刪除對話記錄", - "deleteSessionConfirm": "確定要刪除該對話的所有翻譯記錄嗎?此操作無法撤銷。", - - // 图片翻译模块(Picture Translation) - "selectImageSource": '選擇圖片來源', - "imagePreview": '圖片預覽', - "translationResult": '翻譯結果', - "recognitionResult": '識別結果', - "translatedImagePreview": '翻譯後的圖片預覽', - "translatedImageLoadFailed": '翻譯圖片載入失敗', - "pleaseSelectImage": '請選擇圖片', - "imageLoadFailed": '圖片載入失敗', - "imageQuality": '圖片品質', - "maxSize": '最大尺寸', - "close": '關閉', - "setImageQuality": '設定圖片品質', - "currentQuality": '當前品質: @value%', - "setMaxSize": '設定最大尺寸', - "currentMaxSize": '當前: @pxpx', - "waitingForAction": '等待操作', - "pleaseSelectImageToStart": '請選擇圖片開始翻譯', - "chooseImage": '選擇圖片', - "openingCamera": '正在打開相機...', - "openingPhotoAlbum": '正在打開相簿...', - "cancelled": '已取消', - "userCancelledSelection": '使用者取消了選擇', - "translatingImage": '翻譯圖片', - "callingImageTranslateService": '正在呼叫圖片翻譯服務...', - "savingRecord": '保存記錄', - "savingTranslationResult": '正在保存翻譯結果...', - "translationCompleted": '翻譯完成', - "allStepsCompleted": '所有步驟已完成', - "processingFailed": '處理失敗', - "imageProcessingOrTranslationFailed": '圖片處理或翻譯失敗,請重試。n錯誤資訊: {error}', - "imageTooLarge": '圖片大小超過4MB限制', - "imageTooLargeHint": '圖片大小超過4MB限制,請降低品質或尺寸後重試', - "emptyTranslationResult": '圖片翻譯介面返回空結果', - "imageTranslationFailedTryLater": '圖片翻譯失敗,可能的原因:網路異常或介面限流,請稍後重試', - "imageTranslationApiException": '圖片翻譯介面呼叫異常,請檢查網路後重試', - "permissionRequired": '權限需求', - "cameraPermissionRequired": '需要相機權限才能拍照', - "photoAlbumPermissionRequired": '需要相簿權限才能選擇圖片', - "translationDetails": '翻譯詳情', - "originalImage": '原圖片', - "sourceLanguage": '源語言', - "targetLanguage": '目標語言', - "translationTime": '翻譯時間', - "shareInDevelopment": '分享功能開發中', - - // 翻译录音文件列表页 - "translateAudioFiles": "翻譯錄音檔案", - "noAudioFiles": "暫無音訊檔案", - "calculating": "計算中...", - "playing": "播放中...", - "paused": "已暫停", - "clickToPlay": "點擊播放", - "rename": "重新命名", - "smartTranscription": "智能轉寫", - "renameAudioFile": "重新命名音訊檔案", - "enterNewFileName": "請輸入新的檔案名稱", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "原始記錄", - "recordSummary": "記錄摘要", - "clickToGenerateSummary": "點擊下方按鈕生成對話摘要", - "summaryContent": "摘要內容", - "copied": "已複製", - "summaryCopiledToClipboard": "摘要已複製到剪貼簿", - "extractSummary": "提取摘要", - "summaryGenerated": "已生成摘要", - "generating": "生成中...", - "regenerate": "重新生成", - "summaryTimeoutMessage": "生成摘要請求逾時,可能是網路問題或伺服器繁忙。", - "deleteTranslationRecord": "刪除翻譯記錄", - "deleteTranslationConfirm": "確定要刪除這條翻譯記錄嗎?此操作無法撤銷。", - "originalText": "原文", - "translatedText": "譯文", - "sessionSummary": "對話摘要", - "cannotShare": "無法分享", - "generateSummaryFirst": "請先生成摘要", - "translationSessionRecord": "翻譯對話記錄", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "設備配對", "connectYourDeepSoundHeadset": "連接您的 Voitrans 耳機", "bind": "綁定", @@ -1343,14 +1162,11 @@ const Map zhTW = { "autoInputCode": "自動輸入代碼", "skipBinding": "跳過綁定", "rescan": "重新掃描", - "verifyingDevice": "正在驗證設備...", "confirmBinding": "確認綁定", "associatingDevice": "正在關聯設備...", "goToBluetoothSettings": "前往藍牙設定", 'bluetooth': '藍牙', - - // 配对状态文本 "readyToPair": "準備開始配對", "preparingPairingEnvironment": "正在準備配對環境...", "connectDeepSoundViaSystemBluetooth": "請先透過系統藍牙連接Voitrans設備", @@ -1358,8 +1174,6 @@ const Map zhTW = { "establishingDeviceAssociation": "正在建立設備關聯...", "waitingCompletePairing": "請稍候,正在完成配對...", "pairingSuccessRedirecting": "配對成功!即將跳轉到首頁...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "請確保連接的是Voitrans設備", "deviceAlreadyBoundToOtherAccount": "該設備已被其他帳號綁定", "deviceAssociationFailed": "設備關聯失敗,請重試", @@ -1367,18 +1181,11 @@ const Map zhTW = { "networkError": "網路錯誤", "authorizationFailedCheckCode": "授權失敗,請檢查授權碼是否正確", "pairingFailedRetry": "配對失敗,請重試", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': '請開啟藍牙', 'deviceDisconnected': '設備已斷開', 'readyToStartPairing': '準備開始配對', 'checkingEnvironment': '正在檢查環境...', 'ensureHeadsetOnAndPairingMode': '請確保耳機已開啟並進入配對模式', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': '正在建立安全連接...', 'needManualBindingAuthCode': '需要手動綁定授權碼...', 'pairingSuccessful': '配對成功!', @@ -1397,8 +1204,6 @@ const Map zhTW = { 'blePairingStartupFailed': 'BLE配對啟動失敗', 'bleConnectionFailed': 'BLE連接失敗', 'deviceAuthorizationFailedCheckCode': '設備授權失敗,請檢查授權碼', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': '需要手動開啟藍牙', // 需要手动开启蓝牙 'bluetoothGuideSteps': '請按照以下步驟操作:', // 请按照以下步骤操作: 'bluetoothGuideStep1': '開啟藍牙:設定 → 藍牙 → 開啟', // 开启蓝牙:设置 → 蓝牙 → 开启 @@ -1407,7 +1212,18 @@ const Map zhTW = { 'bluetoothGuideTip': '提示:也可以從控制中心長按藍牙圖標快速進入藍牙設定', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': '我知道了', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": 'Welcome Reward', + "firstBindRewardDesc": 'You\'ve received binding rewards.', + "vipLevelLabel": 'VIP Level:', + "expiryLabel": '到期時間:', + "notActivated": '未啟用', + "aiChatCreditsLabel": 'AI Chat Credits:', + "translationCreditsLabel": 'Translation Credits:', + "meetingCreditsLabel": 'Meeting Credits:', + "ok": 'OK', + + // 用户反馈模块 "feedback": "使用者回饋", 'feedbackInfo': '提供反饋或建議', 'feedbackDescription': '請描述您遇到的問題或建議', @@ -1442,7 +1258,7 @@ const Map zhTW = { "updateContent": "更新內容", "removeEarbudsEnsureBattery": "取出雙耳機,並保證電量均為20%以上的狀態", - // 音乐列表页面 + // 音乐模块 "noMusic": "暫無音樂", // 暂无音乐 "noPlayingMusic": "暫無播放音樂", // 暂无播放音乐 "unknownSong": "未知歌曲", // 未知歌曲 @@ -1490,20 +1306,122 @@ const Map zhTW = { "波斯语": "波斯語", "斯瓦希里语": "斯瓦希里語", - // 时间相关 - "justNow": '剛剛', - "minutesAgo": '@minutes分鐘前', - "yesterday": '昨天', - // 时间扩展(图片翻译模块使用) - "daysAgo": '@days天前', - "hoursAgo": '@hours小時前', - - //补充 - "insufficientIntegral": '積分不足', - - //余额不足弹窗 - "insufficientBalanceDesc": "餘額不足,請前往對應充值界面進行充值", - "recharge": "去充值", - // 会员到期提示 - "aiMemberExpiredDesc": 'AI會員已到期,請前往會員充值續費', + // 国家列表 + "邮箱": "電子郵件", + "中国": "中國", + "美国": "美國", + "加拿大": "加拿大", + "俄罗斯": "俄羅斯", + "英国": "英國", + "德国": "德國", + "意大利": "義大利", + "法国": "法國", + "西班牙": "西班牙", + "南非": "南非", + "沙特阿拉伯": "沙特阿拉伯", + "土耳其": "土耳其", + "日本": "日本", + "韩国": "韓國", + "新加坡": "新加坡", + "马来西亚": "馬來西亞", + "泰国": "泰國", + "越南": "越南", + "印度": "印度", + "巴基斯坦": "巴基斯坦", + "菲律宾": "菲律賓", + "印度尼西亚": "印度尼西亞", + "阿联酋": "阿聯酋", + "墨西哥": "墨西哥", + "巴西": "巴西", + "阿根廷": "阿根廷", + "澳大利亚": "澳大利亞", + "新西兰": "新西蘭", + "中国香港": "中國香港", + "中国澳门": "中國澳門", + "中国台湾": "中國台灣", + "埃及": "埃及", + "希腊": "希臘", + "荷兰": "荷蘭", + "比利时": "比利時", + "匈牙利": "匈牙利", + "罗马尼亚": "羅馬尼亞", + "瑞士": "瑞士", + "奥地利": "奧地利", + "丹麦": "丹麥", + "瑞典": "瑞典", + "挪威": "挪威", + "波兰": "波蘭", + "秘鲁": "秘魯", + "智利": "智利", + "哥伦比亚": "哥倫比亞", + "委内瑞拉": "委內瑞拉", + "葡萄牙": "葡萄牙", + "卢森堡": "盧森堡", + "爱尔兰": "愛爾蘭", + "冰岛": "冰島", + "阿尔巴尼亚": "阿爾巴尼亞", + "马耳他": "馬耳他", + "塞浦路斯": "塞浦路斯", + "芬兰": "芬蘭", + "保加利亚": "保加利亞", + "立陶宛": "立陶宛", + "拉脱维亚": "拉脫維亞", + "爱沙尼亚": "愛沙尼亞", + "乌克兰": "烏克蘭", + "塞尔维亚": "塞爾維亞", + "克罗地亚": "克羅埃西亞", + "斯洛文尼亚": "斯洛文尼亞", + "捷克": "捷克", + "斯洛伐克": "斯洛伐克", + "危地马拉": "危地馬拉", + "萨尔瓦多": "薩爾瓦多", + "洪都拉斯": "洪都拉斯", + "尼加拉瓜": "尼加拉瓜", + "哥斯达黎加": "哥斯達黎加", + "巴拿马": "巴拿馬", + "海地": "海地", + "玻利维亚": "玻利維亞", + "厄瓜多尔": "厄瓜多爾", + "巴拉圭": "巴拉圭", + "乌拉圭": "烏拉圭", + "摩洛哥": "摩洛哥", + "阿尔及利亚": "阿爾及利亞", + "突尼斯": "突尼斯", + "尼日利亚": "尼日利亞", + "加纳": "加納", + "埃塞俄比亚": "埃塞俄比亞", + "肯尼亚": "肯尼亞", + "坦桑尼亚": "坦桑尼亞", + "乌干达": "烏干達", + "孟加拉国": "孟加拉國", + "以色列": "以色列", + "黎巴嫩": "黎巴嫩", + "约旦": "約旦", + "伊拉克": "伊拉克", + "科威特": "科威特", + "巴林": "巴林", + "卡塔尔": "卡塔爾", + "阿曼": "阿曼", + "阿富汗": "阿富汗", + "斯里兰卡": "斯里蘭卡", + "缅甸": "緬甸", + "尼泊尔": "尼泊爾", + "蒙古": "蒙古", + "柬埔寨": "柬埔寨", + "老挝": "老撾", + "文莱": "文萊", + "东帝汶": "東帝汶", + "斐济": "斐濟", + "所罗门群岛": "所羅門群島", + "刚果民主共和国": '剛果民主共和國', + "安哥拉": '安哥拉', + "苏丹": '蘇丹', + "马尔代夫": '馬爾代夫', + "不丹": '不丹', + "摩纳哥": '摩納哥', + "圣马力诺": '聖馬力諾', + "牙买加": '牙買加', + "巴哈马": '巴哈馬', + "巴布亚新几内亚": '巴布亞新幾內亞', + "萨摩亚": '薩摩亞', };