From f494d5b6b0c00c0c03ce3cb4b42b0e660b0da11f Mon Sep 17 00:00:00 2001 From: lxm <1274844347@qq.com> Date: Sat, 14 Mar 2026 18:14:36 +0800 Subject: [PATCH] =?UTF-8?q?feat(i18n):=20=E6=9B=B4=E6=96=B0=E5=A4=9A?= =?UTF-8?q?=E8=AF=AD=E8=A8=80=E7=BF=BB=E8=AF=91=E5=B9=B6=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=A4=B4=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 为所有语言文件添加区域-语言注释头 - 统一翻译"绑定奖励"相关术语为本地化表达 - 修复德语、西班牙语、法语等语言的翻译不一致问题 - 更新越南语、印尼语、马来语等语言的隐私政策文本 - 扩展i18n审计工具的英语术语识别列表 --- lib/core/translations/language/ar_sa.dart | 15 +- lib/core/translations/language/bg_bg.dart | 333 +++--- lib/core/translations/language/cs_cz.dart | 276 ++--- lib/core/translations/language/da_dk.dart | 312 +++--- lib/core/translations/language/de_de.dart | 5 +- lib/core/translations/language/el_gr.dart | 40 +- lib/core/translations/language/en_us.dart | 1 + lib/core/translations/language/es_es.dart | 43 +- lib/core/translations/language/et_ee.dart | 1133 ++++++++++---------- lib/core/translations/language/fa_ir.dart | 149 +-- lib/core/translations/language/fi_fi.dart | 827 ++++++++------- lib/core/translations/language/fr_fr.dart | 19 +- lib/core/translations/language/hi_in.dart | 1042 +++++++++--------- lib/core/translations/language/hr_hr.dart | 1089 +++++++++---------- lib/core/translations/language/hu_hu.dart | 1033 +++++++++--------- lib/core/translations/language/id_id.dart | 37 +- lib/core/translations/language/is_is.dart | 780 +++++++------- lib/core/translations/language/it_it.dart | 834 ++++++++------- lib/core/translations/language/ja_jp.dart | 972 ++++++++--------- lib/core/translations/language/ko_kr.dart | 160 +-- lib/core/translations/language/lt_lt.dart | 1034 +++++++++--------- lib/core/translations/language/lv_lv.dart | 525 ++++----- lib/core/translations/language/ms_my.dart | 88 +- lib/core/translations/language/nb_no.dart | 797 +++++++------- lib/core/translations/language/nl_nl.dart | 543 +++++----- lib/core/translations/language/pl_pl.dart | 1113 ++++++++++---------- lib/core/translations/language/pt_pt.dart | 679 ++++++------ lib/core/translations/language/ro_ro.dart | 685 ++++++------ lib/core/translations/language/ru_ru.dart | 652 ++++++------ lib/core/translations/language/sk_sk.dart | 517 ++++----- lib/core/translations/language/sl_si.dart | 513 ++++----- lib/core/translations/language/sr_rs.dart | 52 +- lib/core/translations/language/sv_se.dart | 1169 ++++++++++++--------- lib/core/translations/language/th_th.dart | 1130 ++++++++++---------- lib/core/translations/language/tl_ph.dart | 76 +- lib/core/translations/language/tr_tr.dart | 938 +++++++++-------- lib/core/translations/language/uk_ua.dart | 1012 +++++++++--------- lib/core/translations/language/vi_vn.dart | 5 +- lib/core/translations/language/zh_cn.dart | 15 +- lib/core/translations/language/zh_hk.dart | 13 +- lib/core/translations/language/zh_tw.dart | 13 +- tools/i18n_audit.py | 41 + 42 files changed, 10650 insertions(+), 10060 deletions(-) diff --git a/lib/core/translations/language/ar_sa.dart b/lib/core/translations/language/ar_sa.dart index 359530ff4..ea1cc52a2 100644 --- a/lib/core/translations/language/ar_sa.dart +++ b/lib/core/translations/language/ar_sa.dart @@ -1,3 +1,4 @@ +//阿拉伯-沙特阿拉伯语 const Map arSA = { // 通用 'continue': 'متابعة', @@ -1392,15 +1393,15 @@ const Map arSA = { 'iKnow': 'أنا أعرف', // 我知道了 // 配对模块 - 绑定奖励 - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", + "firstBindRewardTitle": "مكافأة الترحيب", + "firstBindRewardDesc": "لقد حصلت على مكافآت الربط.", + "vipLevelLabel": "مستوى VIP:", "expiryLabel": "تاريخ الانتهاء:", "notActivated": "غير مفعل", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", + "aiChatCreditsLabel": "رصيد محادثة الذكاء الاصطناعي:", + "translationCreditsLabel": "رصيد الترجمة:", + "meetingCreditsLabel": "رصيد الاجتماعات:", + "ok": "موافق", // 用户反馈模块 "feedback": "ملاحظات المستخدم", diff --git a/lib/core/translations/language/bg_bg.dart b/lib/core/translations/language/bg_bg.dart index 94b8b67db..a5e8dd6db 100644 --- a/lib/core/translations/language/bg_bg.dart +++ b/lib/core/translations/language/bg_bg.dart @@ -1,5 +1,5 @@ +//保加利亚-保加利亚语 const Map bgBG = { - // 通用 'continue': 'Продължи', 'confirm': 'Потвърди', @@ -169,12 +169,15 @@ const Map bgBG = { // 蓝牙扫描模块 'bleInitFailedWithError': 'Неуспешна инициализация на Bluetooth: @error', - 'needBluetoothAndLocationPermission': 'За сканиране на устройства са необходими разрешения за Bluetooth и местоположение', + 'needBluetoothAndLocationPermission': + 'За сканиране на устройства са необходими разрешения за Bluetooth и местоположение', 'permissionRequestFailedWithError': 'Неуспешна заявка за разрешение: @error', 'needPermission': 'Необходимо разрешение', - 'blePermissionDialogContent': 'Това приложение изисква разрешения за Bluetooth и местоположение за сканиране на устройства. Моля, включете ги в Настройки.', + 'blePermissionDialogContent': + 'Това приложение изисква разрешения за Bluetooth и местоположение за сканиране на устройства. Моля, включете ги в Настройки.', 'needEnableBluetooth': 'Включете Bluetooth', - 'enableBluetoothDialogContent': 'Моля, включете Bluetooth за сканиране и свързване на устройства.', + 'enableBluetoothDialogContent': + 'Моля, включете Bluetooth за сканиране и свързване на устройства.', 'bleScanFailedWithError': 'Неуспешно сканиране: @error', 'bleConnectionSuccess': 'Успешно свързване', 'bleConnectedToDevice': 'Свързан към @device', @@ -262,60 +265,65 @@ const Map bgBG = { 'totalQuota': 'Обща квота', 'remaining': 'Оставащо', 'featureDescription': 'Описание на функцията', - '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', + '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": 'Недостатъчен баланс, моля отидете на съответната страница за презареждане.', @@ -520,19 +528,28 @@ const Map bgBG = { 'callRecording': 'Запис на разговор', 'importAudio': 'Импорт на аудио', 'meetingRecordExitTitle': 'Изход от записа', // 退出录音 - 'meetingRecordExitMessage': 'Изберете какво да направите преди да излезете', // 请选择离开后的操作 + 'meetingRecordExitMessage': + 'Изберете какво да направите преди да излезете', // 请选择离开后的操作 'meetingRecordEndAndSave': 'Прекратяване и запазване', // 结束录音并保存 'meetingRecordEndWithoutSave': 'Прекратяване без запазване', // 结束录音不保存 - 'meetingRecordContinueInBackground': 'Продължи записването във фонов режим', // 后台继续录音 - 'meetingRecordStopTimeout': 'Времето за спиране на записа изтече. Опитайте отново.', // 结束录音超时,请重试 - 'meetingRecordStopFailed': 'Неуспешно спиране на записа. Опитайте отново.', // 结束录音失败,请重试 - 'meetingRecordSaveFailed': 'Неуспешно запазване на записа. Опитайте отново.', // 保存录音失败,请重试 + 'meetingRecordContinueInBackground': + 'Продължи записването във фонов режим', // 后台继续录音 + 'meetingRecordStopTimeout': + 'Времето за спиране на записа изтече. Опитайте отново.', // 结束录音超时,请重试 + 'meetingRecordStopFailed': + 'Неуспешно спиране на записа. Опитайте отново.', // 结束录音失败,请重试 + 'meetingRecordSaveFailed': + 'Неуспешно запазване на записа. Опитайте отново.', // 保存录音失败,请重试 'meetingRecordRecordingNotificationTitle': 'Записът е в ход', // 录音进行中 - 'meetingRecordRecordingNotificationBody': 'Запис във фонов режим. Докоснете, за да се върнете в приложението.', // 正在后台录音,点击返回应用 + 'meetingRecordRecordingNotificationBody': + 'Запис във фонов режим. Докоснете, за да се върнете в приложението.', // 正在后台录音,点击返回应用 'overlayPermissionTitle': 'Показване върху други приложения', // 悬浮窗权限 - 'overlayPermissionTranslationDesc': 'За да показваме резултатите от превода по време на обаждания или превод на аудио/видео, е нужно разрешение за показване върху други приложения. Така ще виждате превод в реално време, докато използвате други приложения.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 - 'overlayPermissionRecordingDesc': 'За да показваме плаващата лента за запис (таймер/пауза/продължи) по време на запис, е нужно разрешение за показване върху други приложения.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 - 'overlayPermissionOpenSettingsFailed': 'Не можем да отворим системните настройки автоматично. Моля, отворете Настройки и включете разрешението за показване върху други приложения ръчно.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 + 'overlayPermissionTranslationDesc': + 'За да показваме резултатите от превода по време на обаждания или превод на аудио/видео, е нужно разрешение за показване върху други приложения. Така ще виждате превод в реално време, докато използвате други приложения.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 + 'overlayPermissionRecordingDesc': + 'За да показваме плаващата лента за запис (таймер/пауза/продължи) по време на запис, е нужно разрешение за показване върху други приложения.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 + 'overlayPermissionOpenSettingsFailed': + 'Не можем да отворим системните настройки автоматично. Моля, отворете Настройки и включете разрешението за показване върху други приложения ръчно.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 'transcribing': 'Транскрибиране...', 'summarizing': 'Обобщаване...', 'analyzing': 'Анализиране...', @@ -557,21 +574,22 @@ const Map bgBG = { 'selectSummaryTemplate': 'Избери шаблон за резюме', 'useThisTemplate': 'Използвай този шаблон', 'lastUsed': 'Последно използвано', - 'create': 'Създай', - 'templateDetails': 'Детайли на шаблона', - 'tag': 'Етикет', - 'description': 'Описание', - 'template': 'Шаблон', - 'deleteTemplate': 'Изтрий шаблон', - 'deleteTemplateConfirm': 'Сигурни ли сте, че искате да изтриете този шаблон?', - 'editTemplate': 'Редактирай шаблон', - 'createTemplate': 'Създай шаблон', - 'name': 'Име', - 'templateContentHint': 'Моля, въведете съдържание на шаблона! Съвет: Натиснете бутона AI по-горе, за да генерирате бързо съдържание на шаблон въз основа на въведеното от вас име и описание', - 'inputNameHint': 'Моля, въведете име', - 'inputDescHint': 'Моля, въведете описание', - 'custom': 'Персонализиран', - 'pleaseEnter': 'Моля, въведете', + 'create': 'Създай', + 'templateDetails': 'Детайли на шаблона', + 'tag': 'Етикет', + 'description': 'Описание', + 'template': 'Шаблон', + 'deleteTemplate': 'Изтрий шаблон', + 'deleteTemplateConfirm': 'Сигурни ли сте, че искате да изтриете този шаблон?', + 'editTemplate': 'Редактирай шаблон', + 'createTemplate': 'Създай шаблон', + 'name': 'Име', + 'templateContentHint': + 'Моля, въведете съдържание на шаблона! Съвет: Натиснете бутона AI по-горе, за да генерирате бързо съдържание на шаблон въз основа на въведеното от вас име и описание', + 'inputNameHint': 'Моля, въведете име', + 'inputDescHint': 'Моля, въведете описание', + 'custom': 'Персонализиран', + 'pleaseEnter': 'Моля, въведете', 'viewAll': 'Виж всички', 'recordingLanguage': 'Език на записа', 'chineseSimplified': 'Китайски мандарин (Опростен)', @@ -591,10 +609,11 @@ const Map bgBG = { 'shareAudio': 'Share Meeting Audio', 'shareComplete': 'Share complete!', 'shareFailed': 'Неуспешно споделяне: {error}', - 'fileProcessingFailed': 'Неуспешна обработка на файл: {filePath}, грешка: {error}', + 'fileProcessingFailed': + 'Неуспешна обработка на файл: {filePath}, грешка: {error}', // Meeting模块 - 思维导图 - 'saveMindMap': 'Запази интелектуална карта', + 'saveMindMap': 'Запази интелектуална карта', 'shareMindMap': 'Share Mind Map', 'shareSuccess': 'Успешно споделяне', @@ -616,7 +635,7 @@ const Map bgBG = { 'exportSummary': 'Export Summary', 'exportAs': 'Export As', 'exportingPDF': 'Exporting PDF...', - 'export': 'Експортиране', + 'export': 'Експортиране', // Meeting模块 - 发言者 'applyToAllParagraphs': 'Приложи към всички абзаци на този говорител', @@ -728,18 +747,19 @@ const Map bgBG = { // Meeting模块 - 错误提示 'meetingUnknownLanguage': 'Unknown Language', - 'analysisFailed': 'Анализът не успя, моля опитайте отново по-късно', - 'transcriptionFailed': 'Транскрипцията не успя, моля опитайте отново по-късно', - 'summaryFailed': 'Обобщението не успя, моля опитайте отново по-късно', - 'summaryFailedShort': 'Неуспешно обобщение', - 'transcriptionFailedShort': 'Неуспешна транскрипция', + 'analysisFailed': 'Анализът не успя, моля опитайте отново по-късно', + 'transcriptionFailed': + 'Транскрипцията не успя, моля опитайте отново по-късно', + 'summaryFailed': 'Обобщението не успя, моля опитайте отново по-късно', + 'summaryFailedShort': 'Неуспешно обобщение', + 'transcriptionFailedShort': 'Неуспешна транскрипция', // Meeting模块 - 播放器 - 'playerNotReady': 'Аудио плейърът не е готов, моля изчакайте', - 'playFailed': 'Неуспешно възпроизвеждане', - 'audioFileNotFound': 'Аудио файлът не е намерен', - 'fetchingAudio': 'Извличане на аудио от облака...', - 'playerLoadFailed': 'Аудио плейърът не успя да се зареди', + 'playerNotReady': 'Аудио плейърът не е готов, моля изчакайте', + 'playFailed': 'Неуспешно възпроизвеждане', + 'audioFileNotFound': 'Аудио файлът не е намерен', + 'fetchingAudio': 'Извличане на аудио от облака...', + 'playerLoadFailed': 'Аудио плейърът не успя да се зареди', // 设置页 "systemSettings": "Системни настройки", @@ -748,8 +768,8 @@ const Map bgBG = { "translationRecharge": "Преплащане за превод", "meetingAssistantRecharge": "Преплащане за Сообщението", "cloudSync": "Преплащане за синхронизация в облака", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "memberService": "Членско обслужване", + "bindRewardTitle": "Награди", "bindRewardSimpleDesc": "Наградата за първо свързване на устройство е издадена. Натиснете ОК за затваряне.", "joinDevice": "Свързано устройство:", @@ -846,7 +866,8 @@ const Map bgBG = { "swipeUpForMore": "Плъзнете нагоре за повече", "callingTool": "Помагам ви, моля изчакайте!", // 正在帮您,请稍等! "voice_interrupt": "Прекъсване", // 语音打断 - 'voice_interrupt_tip': 'Когато е включено: AI няма да бъде прекъснат от гласа ви, докато говори, и може да обработва само един кръг от разговор наведнъж. За да започнете нов кръг, просто кажете думата за събуждане.', + 'voice_interrupt_tip': + 'Когато е включено: AI няма да бъде прекъснат от гласа ви, докато говори, и може да обработва само един кръг от разговор наведнъж. За да започнете нов кръг, просто кажете думата за събуждане.', // Agent模块 - 预设提示词 "presetMusic": "Пусни малко музика", // 来点音乐 @@ -943,11 +964,13 @@ const Map bgBG = { 'builtInNavigation': 'Built-in Navigation', 'useBuiltInNavigation': 'Navigate with built-in map', 'navigationStartFailed': 'Неуспешно стартиране на навигацията', - 'cannotPlayMusicListRetryLater': 'Не може да се възпроизведе музикалният списък, моля опитайте отново по-късно', + 'cannotPlayMusicListRetryLater': + 'Не може да се възпроизведе музикалният списък, моля опитайте отново по-късно', 'cannotPlaySong': 'Cannot play song', 'openMapError': 'Грешка при отваряне на картата', 'pleaseInstallAmapApp': 'Моля, първо инсталирайте приложението Amap', - 'pleaseInstallBaiduMapApp': 'Моля, първо инсталирайте приложението Baidu Maps', + 'pleaseInstallBaiduMapApp': + 'Моля, първо инсталирайте приложението Baidu Maps', 'appleMapStartFailed': 'Неуспешно стартиране на Apple Maps', 'appleMapUnavailable': 'Apple Maps unavailable', 'openAppleMapError': 'Грешка при отваряне на Apple Maps', @@ -1029,8 +1052,10 @@ const Map bgBG = { 'disableFloatingWindow': 'Изключи плаващ прозорец', 'enableFloatingWindow': 'Включи плаващ прозорец', 'permissionTip': 'Съвет за разрешение', - 'micPermissionRequiredForRecording': 'За записване е необходимо разрешение за микрофон', - 'deleteTranslationRecordError': 'Грешка при изтриване на запис за превод: @error', + 'micPermissionRequiredForRecording': + 'За записване е необходимо разрешение за микрофон', + 'deleteTranslationRecordError': + 'Грешка при изтриване на запис за превод: @error', "translationFailed": "Неуспешен превод", "translating": "Превеждане", "translate": "Преведи", @@ -1318,17 +1343,19 @@ 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': 'Възпроизвеждане на музика', + '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': 'Намерена е нова версия', // 版本更新对话框标题 @@ -1475,46 +1502,58 @@ const Map bgBG = { // OTA升级模块 - 弹窗与对话框 'otaNewVersionFoundWithVersion': 'New version @version found', - 'otaConfirmUpdateNow': 'Update now?', - 'otaUpdate': 'Update', + 'otaConfirmUpdateNow': 'Да се актуализира ли сега?', + 'otaUpdate': 'Актуализиране', 'otaUpgradeSuccess': 'Успешна актуализация', - 'otaUpgradeCompleteRepair': 'Актуализацията на фърмуера е завършена!\n\nУстройството трябва да бъде сдвоено отново, за да работи правилно. Да отидете на страницата за сдвояване сега?', - 'otaPairLater': 'Pair Later', - 'otaPairNow': 'Pair Now', + 'otaUpgradeCompleteRepair': + 'Актуализацията на фърмуера е завършена!\n\nУстройството трябва да бъде сдвоено отново, за да работи правилно. Да отидете на страницата за сдвояване сега?', + 'otaPairLater': 'Сдвояване по-късно', + 'otaPairNow': 'Сдвояване сега', 'okConfirm': 'OK', // OTA升级模块 - 设备检查 - 'otaBleCheckErrorWithError': 'Error checking BLE connection: @error', - 'otaBleNotConnected': 'BLE Device Not Connected', - 'otaBleNeedConnection': 'Firmware upgrade requires BLE device connection\nPlease ensure device is properly connected and try again', - 'otaDeviceInfoUnavailableTitle': 'Device Info Unavailable', - 'otaCannotGetDeviceInfo': 'Cannot get device info\nPlease reconnect device or try again later', - 'otaBleCheckFailed': 'BLE Connection Check Failed', - 'otaCannotGetDeviceInfoCheckConnection': 'Cannot get device info, please check device connection', - 'otaCannotGetProductInfoWithName': 'Cannot get product info, device name: @deviceName', - 'otaCannotGetBatteryInfo': 'Cannot get valid battery info', - 'otaLowBattery': 'Low Battery', - 'otaSingleBatteryLow': 'Device battery too low for firmware upgrade\nRequirement: battery must be above 20%\nCurrent: @ear @battery%\nPlease charge and try again', - 'otaDoubleBatteryLow': 'Device battery too low for firmware upgrade\nRequirement: both earbuds must be above 20%\nCurrent: Left @left%, Right @right%\nPlease charge and try again', - 'otaBatteryCheckFailed': 'Battery Check Failed', + 'otaBleCheckErrorWithError': 'Грешка при проверка на BLE връзката: @error', + 'otaBleNotConnected': 'BLE устройството не е свързано', + 'otaBleNeedConnection': + 'Актуализацията на фърмуера изисква BLE връзка\nУверете се, че устройството е свързано правилно, и опитайте отново', + 'otaDeviceInfoUnavailableTitle': 'Информацията за устройството не е налична', + 'otaCannotGetDeviceInfo': + 'Не може да се получи информация за устройството\nСвържете устройството отново или опитайте по-късно', + 'otaBleCheckFailed': 'Проверката на BLE връзката не успя', + 'otaCannotGetDeviceInfoCheckConnection': + 'Не може да се получи информация за устройството, проверете връзката', + 'otaCannotGetProductInfoWithName': + 'Не може да се получи информация за продукта, име на устройството: @deviceName', + 'otaCannotGetBatteryInfo': + 'Не може да се получи валидна информация за батерията', + 'otaLowBattery': 'Ниска батерия', + 'otaSingleBatteryLow': + 'Батерията на устройството е твърде ниска за актуализация на фърмуера\nИзискване: батерията трябва да е над 20%\nТекущо: @ear @battery%\nЗаредете и опитайте отново', + 'otaDoubleBatteryLow': + 'Батерията на устройството е твърде ниска за актуализация на фърмуера\nИзискване: и двете слушалки трябва да са над 20%\nТекущо: Лява @left%, Дясна @right%\nЗаредете и опитайте отново', + 'otaBatteryCheckFailed': 'Проверката на батерията не успя', // OTA升级模块 - 升级状态 - 'otaDefaultUpdateDesc': 'This update includes performance optimizations and bug fixes.', - 'otaGetLatestVersionFailed': 'Failed to get latest version info', - 'otaGetVersionInfoFailed': 'Failed to get version info', - 'otaCheckingDeviceStatus': 'Checking device status...', - 'otaDownloadFailedCheckNetwork': 'Download failed, please check network connection', - 'otaDownloadFailed': 'Download Failed', - 'otaPreparingConnection': 'Preparing device connection...', - 'otaConnectingDevice': 'Connecting to device...', - 'otaUpgradeStarted': 'OTA upgrade started...', - 'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%', - 'otaUpgradeSuccessComplete': 'Upgrade completed successfully', - 'otaUpgradeFailedWithCode': 'Upgrade failed, error code: @code', - 'otaUpgradeFailedTitle': 'Upgrade Failed', - 'otaUpgradeFailedDesc': 'Please check device connection or update package, error code: @code', - 'otaDeviceDisconnected': 'Device disconnected', - 'otaDeviceConnected': 'Device connected', + 'otaDefaultUpdateDesc': + 'Тази актуализация включва оптимизации на производителността и поправки на грешки.', + 'otaGetLatestVersionFailed': + 'Неуспешно получаване на информация за последната версия', + 'otaGetVersionInfoFailed': 'Неуспешно получаване на информация за версията', + 'otaCheckingDeviceStatus': 'Проверка на състоянието на устройството...', + 'otaDownloadFailedCheckNetwork': + 'Изтеглянето не успя, проверете мрежовата връзка', + 'otaDownloadFailed': 'Изтеглянето не успя', + 'otaPreparingConnection': 'Подготовка на връзката с устройството...', + 'otaConnectingDevice': 'Свързване с устройството...', + 'otaUpgradeStarted': 'Актуализацията (OTA) започна...', + 'otaUpgradeProgressWithPercent': 'Напредък на актуализацията: @percent%', + 'otaUpgradeSuccessComplete': 'Актуализацията завърши успешно', + 'otaUpgradeFailedWithCode': 'Актуализацията не успя, код на грешка: @code', + 'otaUpgradeFailedTitle': 'Актуализацията не успя', + 'otaUpgradeFailedDesc': + 'Проверете връзката на устройството или пакета за актуализация, код на грешка: @code', + 'otaDeviceDisconnected': 'Устройството е разкачено', + 'otaDeviceConnected': 'Устройството е свързано', // 音乐模块 "noMusic": "Няма музика", // 暂无音乐 diff --git a/lib/core/translations/language/cs_cz.dart b/lib/core/translations/language/cs_cz.dart index ec0bd85e5..6e3095df7 100644 --- a/lib/core/translations/language/cs_cz.dart +++ b/lib/core/translations/language/cs_cz.dart @@ -1,5 +1,5 @@ +//捷克-捷克语 const Map csCZ = { - // 通用 'continue': 'Pokračovat', 'confirm': 'Potvrdit', @@ -168,12 +168,15 @@ const Map csCZ = { // 蓝牙扫描模块 'bleInitFailedWithError': 'Inicializace Bluetooth selhala: @error', - 'needBluetoothAndLocationPermission': 'Pro vyhledávání zařízení jsou vyžadována oprávnění Bluetooth a polohy', + 'needBluetoothAndLocationPermission': + 'Pro vyhledávání zařízení jsou vyžadována oprávnění Bluetooth a polohy', 'permissionRequestFailedWithError': 'Žádost o oprávnění selhala: @error', 'needPermission': 'Vyžadováno oprávnění', - 'blePermissionDialogContent': 'Tato aplikace vyžaduje oprávnění Bluetooth a polohy pro vyhledávání zařízení. Povolte je prosím v Nastavení.', + 'blePermissionDialogContent': + 'Tato aplikace vyžaduje oprávnění Bluetooth a polohy pro vyhledávání zařízení. Povolte je prosím v Nastavení.', 'needEnableBluetooth': 'Zapnout Bluetooth', - 'enableBluetoothDialogContent': 'Zapněte prosím Bluetooth pro vyhledávání a připojení zařízení.', + 'enableBluetoothDialogContent': + 'Zapněte prosím Bluetooth pro vyhledávání a připojení zařízení.', 'bleScanFailedWithError': 'Vyhledávání selhalo: @error', 'bleConnectionSuccess': 'Připojení úspěšné', 'bleConnectedToDevice': 'Připojeno k @device', @@ -261,60 +264,65 @@ const Map csCZ = { 'totalQuota': 'Celková kvóta', 'remaining': 'Zbývá', 'featureDescription': 'Popis funkce', - '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', + '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í.', @@ -516,16 +524,24 @@ const Map csCZ = { 'meetingRecordExitMessage': 'Vyberte, co udělat před odchodem', // 请选择离开后的操作 'meetingRecordEndAndSave': 'Ukončit a uložit', // 结束录音并保存 'meetingRecordEndWithoutSave': 'Ukončit bez uložení', // 结束录音不保存 - 'meetingRecordContinueInBackground': 'Pokračovat v nahrávání na pozadí', // 后台继续录音 - 'meetingRecordStopTimeout': 'Časový limit pro zastavení nahrávání vypršel. Zkuste to znovu.', // 结束录音超时,请重试 - 'meetingRecordStopFailed': 'Nepodařilo se zastavit nahrávání. Zkuste to znovu.', // 结束录音失败,请重试 - 'meetingRecordSaveFailed': 'Nepodařilo se uložit nahrávku. Zkuste to znovu.', // 保存录音失败,请重试 + 'meetingRecordContinueInBackground': + 'Pokračovat v nahrávání na pozadí', // 后台继续录音 + 'meetingRecordStopTimeout': + 'Časový limit pro zastavení nahrávání vypršel. Zkuste to znovu.', // 结束录音超时,请重试 + 'meetingRecordStopFailed': + 'Nepodařilo se zastavit nahrávání. Zkuste to znovu.', // 结束录音失败,请重试 + 'meetingRecordSaveFailed': + 'Nepodařilo se uložit nahrávku. Zkuste to znovu.', // 保存录音失败,请重试 'meetingRecordRecordingNotificationTitle': 'Probíhá nahrávání', // 录音进行中 - 'meetingRecordRecordingNotificationBody': 'Nahrávání na pozadí. Klepnutím se vraťte do aplikace.', // 正在后台录音,点击返回应用 + 'meetingRecordRecordingNotificationBody': + 'Nahrávání na pozadí. Klepnutím se vraťte do aplikace.', // 正在后台录音,点击返回应用 'overlayPermissionTitle': 'Zobrazovat nad ostatními aplikacemi', // 悬浮窗权限 - 'overlayPermissionTranslationDesc': 'Abychom mohli zobrazovat výsledky překladu během hovorů nebo překladu zvuku/videa, potřebujeme oprávnění zobrazovat nad ostatními aplikacemi. Díky tomu uvidíte překlady v reálném čase i při používání jiných aplikací.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 - 'overlayPermissionRecordingDesc': 'Abychom mohli během nahrávání zobrazit plovoucí lištu (časovač/pauza/pokračovat), potřebujeme oprávnění zobrazovat nad ostatními aplikacjami.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 - 'overlayPermissionOpenSettingsFailed': 'Nepodařilo se automaticky otevřít systémová nastavení. Otevřete prosím Nastavení a povolte oprávnění zobrazovat nad ostatními aplikacemi ručně.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 + 'overlayPermissionTranslationDesc': + 'Abychom mohli zobrazovat výsledky překladu během hovorů nebo překladu zvuku/videa, potřebujeme oprávnění zobrazovat nad ostatními aplikacemi. Díky tomu uvidíte překlady v reálném čase i při používání jiných aplikací.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 + 'overlayPermissionRecordingDesc': + 'Abychom mohli během nahrávání zobrazit plovoucí lištu (časovač/pauza/pokračovat), potřebujeme oprávnění zobrazovat nad ostatními aplikacjami.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 + 'overlayPermissionOpenSettingsFailed': + 'Nepodařilo se automaticky otevřít systémová nastavení. Otevřete prosím Nastavení a povolte oprávnění zobrazovat nad ostatními aplikacemi ručně.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 'transcribing': 'Přepisování...', 'summarizing': 'Shrnování...', 'analyzing': 'Analyzování...', @@ -550,21 +566,22 @@ const Map csCZ = { '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', + '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': 'Jazyk nahrávání', 'chineseSimplified': 'Chinese Mandarin (Simplified)', @@ -584,10 +601,11 @@ const Map csCZ = { 'shareAudio': 'Share Meeting Audio', 'shareComplete': 'Share complete!', 'shareFailed': 'Sdílení selhalo: {error}', - 'fileProcessingFailed': 'Zpracování souboru selhalo: {filePath}, chyba: {error}', + 'fileProcessingFailed': + 'Zpracování souboru selhalo: {filePath}, chyba: {error}', // Meeting模块 - 思维导图 - 'saveMindMap': 'Uložit myšlenkovou mapu', + 'saveMindMap': 'Uložit myšlenkovou mapu', 'shareMindMap': 'Share Mind Map', 'shareSuccess': 'Sdílení úspěšné', @@ -609,7 +627,7 @@ const Map csCZ = { 'exportSummary': 'Export Summary', 'exportAs': 'Export As', 'exportingPDF': 'Exporting PDF...', - 'export': 'Exportovat', + 'export': 'Exportovat', // Meeting模块 - 发言者 'applyToAllParagraphs': 'Použít na všechny odstavce tohoto mluvčího', @@ -720,18 +738,18 @@ const Map csCZ = { // 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', + '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č', + '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í", @@ -740,8 +758,8 @@ const Map csCZ = { "translationRecharge": "Přepayka překladu", "meetingAssistantRecharge": "Přepayka asistenta schůzky", "cloudSync": "Přepayka synchronizace v cloudu", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "memberService": "Členský servis", + "bindRewardTitle": "Odměny", "bindRewardSimpleDesc": "Odměna za první propojení zařízení byla vydána. Klepněte na OK pro zavření.", "joinDevice": "Připojené zařízení:", @@ -836,7 +854,8 @@ 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.', + '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", // 来点音乐 @@ -932,7 +951,8 @@ const Map csCZ = { 'builtInNavigation': 'Built-in Navigation', 'useBuiltInNavigation': 'Navigate with built-in map', 'navigationStartFailed': 'Spuštění navigace selhalo', - 'cannotPlayMusicListRetryLater': 'Nelze přehrát seznam hudby, zkuste to prosím později', + 'cannotPlayMusicListRetryLater': + 'Nelze přehrát seznam hudby, zkuste to prosím později', 'cannotPlaySong': 'Cannot play song', 'openMapError': 'Chyba při otevírání mapy', 'pleaseInstallAmapApp': 'Nejprve prosím nainstalujte aplikaci Amap', @@ -1018,7 +1038,8 @@ const Map csCZ = { 'disableFloatingWindow': 'Zakázat plovoucí okno', 'enableFloatingWindow': 'Povolit plovoucí okno', 'permissionTip': 'Upozornění na oprávnění', - 'micPermissionRequiredForRecording': 'Pro nahrávání je vyžadováno oprávnění k mikrofonu', + 'micPermissionRequiredForRecording': + 'Pro nahrávání je vyžadováno oprávnění k mikrofonu', 'deleteTranslationRecordError': 'Chyba při mazání záznamu překladu: @error', "translationFailed": "Překlad selhal", "translating": "Translating", @@ -1297,17 +1318,19 @@ const Map csCZ = { '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', + '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', // 版本更新对话框标题 @@ -1454,7 +1477,8 @@ const Map csCZ = { 'otaConfirmUpdateNow': 'Update now?', 'otaUpdate': 'Update', 'otaUpgradeSuccess': 'Aktualizace úspěšná', - 'otaUpgradeCompleteRepair': 'Aktualizace firmwaru dokončena!\n\nPro správné fungování je třeba zařízení znovu spárovat. Přejít na stránku párování?', + 'otaUpgradeCompleteRepair': + 'Aktualizace firmwaru dokončena!\n\nPro správné fungování je třeba zařízení znovu spárovat. Přejít na stránku párování?', 'otaPairLater': 'Pair Later', 'otaPairNow': 'Pair Now', 'okConfirm': 'OK', @@ -1462,24 +1486,33 @@ const Map csCZ = { // OTA升级模块 - 设备检查 'otaBleCheckErrorWithError': 'Chyba při kontrole BLE připojení: @error', 'otaBleNotConnected': 'BLE zařízení nepřipojeno', - 'otaBleNeedConnection': 'Aktualizace firmwaru vyžaduje připojení BLE zařízení\nUjistěte se prosím, že je zařízení správně připojeno, a zkuste to znovu', + 'otaBleNeedConnection': + 'Aktualizace firmwaru vyžaduje připojení BLE zařízení\nUjistěte se prosím, že je zařízení správně připojeno, a zkuste to znovu', 'otaDeviceInfoUnavailableTitle': 'Informace o zařízení nedostupné', - 'otaCannotGetDeviceInfo': 'Nelze získat informace o zařízení\nZnovu připojte zařízení nebo to zkuste později', + 'otaCannotGetDeviceInfo': + 'Nelze získat informace o zařízení\nZnovu připojte zařízení nebo to zkuste později', 'otaBleCheckFailed': 'Kontrola BLE připojení selhala', - 'otaCannotGetDeviceInfoCheckConnection': 'Nelze získat informace o zařízení, zkontrolujte prosím připojení zařízení', - 'otaCannotGetProductInfoWithName': 'Nelze získat informace o produktu, název zařízení: @deviceName', + 'otaCannotGetDeviceInfoCheckConnection': + 'Nelze získat informace o zařízení, zkontrolujte prosím připojení zařízení', + 'otaCannotGetProductInfoWithName': + 'Nelze získat informace o produktu, název zařízení: @deviceName', 'otaCannotGetBatteryInfo': 'Cannot get valid battery info', 'otaLowBattery': 'Low Battery', - 'otaSingleBatteryLow': 'Baterie zařízení je příliš slabá pro aktualizaci firmwaru\nPožadavek: baterie musí být nad 20 %\nAktuálně: @ear @battery %\nNabijte prosím zařízení a zkuste to znovu', - 'otaDoubleBatteryLow': 'Baterie zařízení je příliš slabá pro aktualizaci firmwaru\nPožadavek: obě sluchátka musí mít baterii nad 20 %\nAktuálně: Levé @left %, Pravé @right %\nNabijte prosím zařízení a zkuste to znovu', + 'otaSingleBatteryLow': + 'Baterie zařízení je příliš slabá pro aktualizaci firmwaru\nPožadavek: baterie musí být nad 20 %\nAktuálně: @ear @battery %\nNabijte prosím zařízení a zkuste to znovu', + 'otaDoubleBatteryLow': + 'Baterie zařízení je příliš slabá pro aktualizaci firmwaru\nPožadavek: obě sluchátka musí mít baterii nad 20 %\nAktuálně: Levé @left %, Pravé @right %\nNabijte prosím zařízení a zkuste to znovu', 'otaBatteryCheckFailed': 'Kontrola baterie selhala', // OTA升级模块 - 升级状态 - 'otaDefaultUpdateDesc': 'This update includes performance optimizations and bug fixes.', - 'otaGetLatestVersionFailed': 'Nepodařilo se získat informace o nejnovější verzi', + 'otaDefaultUpdateDesc': + 'This update includes performance optimizations and bug fixes.', + 'otaGetLatestVersionFailed': + 'Nepodařilo se získat informace o nejnovější verzi', 'otaGetVersionInfoFailed': 'Nepodařilo se získat informace o verzi', 'otaCheckingDeviceStatus': 'Kontrola stavu zařízení...', - 'otaDownloadFailedCheckNetwork': 'Stahování selhalo, zkontrolujte prosím připojení k síti', + 'otaDownloadFailedCheckNetwork': + 'Stahování selhalo, zkontrolujte prosím připojení k síti', 'otaDownloadFailed': 'Stahování selhalo', 'otaPreparingConnection': 'Příprava připojení zařízení...', 'otaConnectingDevice': 'Připojování k zařízení...', @@ -1488,7 +1521,8 @@ const Map csCZ = { 'otaUpgradeSuccessComplete': 'Aktualizace byla úspěšně dokončena', 'otaUpgradeFailedWithCode': 'Aktualizace selhala, kód chyby: @code', 'otaUpgradeFailedTitle': 'Aktualizace selhala', - 'otaUpgradeFailedDesc': 'Zkontrolujte prosím připojení zařízení nebo aktualizační balíček, kód chyby: @code', + 'otaUpgradeFailedDesc': + 'Zkontrolujte prosím připojení zařízení nebo aktualizační balíček, kód chyby: @code', 'otaDeviceDisconnected': 'Zařízení odpojeno', 'otaDeviceConnected': 'Zařízení připojeno', diff --git a/lib/core/translations/language/da_dk.dart b/lib/core/translations/language/da_dk.dart index 92a11940f..4379d9836 100644 --- a/lib/core/translations/language/da_dk.dart +++ b/lib/core/translations/language/da_dk.dart @@ -1,5 +1,5 @@ +//丹麦-丹麦语 const Map daDK = { - // 通用 'continue': 'Fortsæt', 'confirm': 'Bekræft', @@ -168,12 +168,16 @@ const Map daDK = { // 蓝牙扫描模块 'bleInitFailedWithError': 'Bluetooth-initialisering mislykkedes: @error', - 'needBluetoothAndLocationPermission': 'Bluetooth- og placeringstilladelser kræves for at scanne enheder', - 'permissionRequestFailedWithError': 'Tilladelsesanmodning mislykkedes: @error', + 'needBluetoothAndLocationPermission': + 'Bluetooth- og placeringstilladelser kræves for at scanne enheder', + 'permissionRequestFailedWithError': + 'Tilladelsesanmodning mislykkedes: @error', 'needPermission': 'Tilladelse påkrævet', - 'blePermissionDialogContent': 'Appen kræver Bluetooth- og placeringstilladelser for at scanne enheder. Aktivér dem i Indstillinger.', + 'blePermissionDialogContent': + 'Appen kræver Bluetooth- og placeringstilladelser for at scanne enheder. Aktivér dem i Indstillinger.', 'needEnableBluetooth': 'Aktivér Bluetooth', - 'enableBluetoothDialogContent': 'Aktivér Bluetooth for at scanne og forbinde enheder.', + 'enableBluetoothDialogContent': + 'Aktivér Bluetooth for at scanne og forbinde enheder.', 'bleScanFailedWithError': 'Scanning mislykkedes: @error', 'bleConnectionSuccess': 'Forbindelse oprettet', 'bleConnectedToDevice': 'Forbundet til @device', @@ -261,60 +265,63 @@ const Map daDK = { 'totalQuota': 'Total kvote', 'remaining': 'Resterende', 'featureDescription': 'Funktionsbeskrivelse', - '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', + '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.', @@ -515,19 +522,28 @@ const Map daDK = { 'callRecording': 'Opkaldsoptagelse', 'importAudio': 'Importer lyd', 'meetingRecordExitTitle': 'Afslut optagelse', // 退出录音 - 'meetingRecordExitMessage': 'Vælg, hvad du vil gøre, før du forlader', // 请选择离开后的操作 + 'meetingRecordExitMessage': + 'Vælg, hvad du vil gøre, før du forlader', // 请选择离开后的操作 'meetingRecordEndAndSave': 'Afslut og gem', // 结束录音并保存 'meetingRecordEndWithoutSave': 'Afslut uden at gemme', // 结束录音不保存 - 'meetingRecordContinueInBackground': 'Fortsæt optagelsen i baggrunden', // 后台继续录音 - 'meetingRecordStopTimeout': 'Tidsgrænsen for at stoppe optagelsen udløb. Prøv igen.', // 结束录音超时,请重试 - 'meetingRecordStopFailed': 'Kunne ikke stoppe optagelsen. Prøv igen.', // 结束录音失败,请重试 - 'meetingRecordSaveFailed': 'Kunne ikke gemme optagelsen. Prøv igen.', // 保存录音失败,请重试 + 'meetingRecordContinueInBackground': + 'Fortsæt optagelsen i baggrunden', // 后台继续录音 + 'meetingRecordStopTimeout': + 'Tidsgrænsen for at stoppe optagelsen udløb. Prøv igen.', // 结束录音超时,请重试 + 'meetingRecordStopFailed': + 'Kunne ikke stoppe optagelsen. Prøv igen.', // 结束录音失败,请重试 + 'meetingRecordSaveFailed': + 'Kunne ikke gemme optagelsen. Prøv igen.', // 保存录音失败,请重试 'meetingRecordRecordingNotificationTitle': 'Optagelse i gang', // 录音进行中 - 'meetingRecordRecordingNotificationBody': 'Optager i baggrunden. Tryk for at vende tilbage til appen.', // 正在后台录音,点击返回应用 + 'meetingRecordRecordingNotificationBody': + 'Optager i baggrunden. Tryk for at vende tilbage til appen.', // 正在后台录音,点击返回应用 'overlayPermissionTitle': 'Tegn over andre apps', // 悬浮窗权限 - 'overlayPermissionTranslationDesc': 'For at vise oversættelsesresultater under opkald eller lyd-/videooversættelse har vi brug for tilladelsen til at tegne over andre apps. Det lader dig se oversættelser i realtid, mens du bruger andre apps.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 - 'overlayPermissionRecordingDesc': 'For at vise den flydende optagelseslinje (timer/pause/genoptag) under optagelse har vi brug for tilladelsen til at tegne over andre apps.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 - 'overlayPermissionOpenSettingsFailed': 'Kan ikke åbne systemindstillinger automatisk. Åbn venligst Indstillinger, og aktivér tilladelsen til at tegne over andre apps manuelt.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 + 'overlayPermissionTranslationDesc': + 'For at vise oversættelsesresultater under opkald eller lyd-/videooversættelse har vi brug for tilladelsen til at tegne over andre apps. Det lader dig se oversættelser i realtid, mens du bruger andre apps.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 + 'overlayPermissionRecordingDesc': + 'For at vise den flydende optagelseslinje (timer/pause/genoptag) under optagelse har vi brug for tilladelsen til at tegne over andre apps.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 + 'overlayPermissionOpenSettingsFailed': + 'Kan ikke åbne systemindstillinger automatisk. Åbn venligst Indstillinger, og aktivér tilladelsen til at tegne over andre apps manuelt.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 'transcribing': 'Transskriberer...', 'summarizing': 'Sammenfatter...', 'analyzing': 'Analyserer...', @@ -552,21 +568,22 @@ const Map daDK = { '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', + '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)', @@ -590,7 +607,7 @@ const Map daDK = { 'Filbehandling mislykkedes: {filePath}, fejl: {error}', // Meeting模块 - 思维导图 - 'saveMindMap': 'Gem tankekort', + 'saveMindMap': 'Gem tankekort', 'shareMindMap': 'Del mindmap', 'shareSuccess': 'Deling succes', @@ -612,7 +629,7 @@ const Map daDK = { 'exportSummary': 'Eksportér sammendrag', 'exportAs': 'Eksportér som', 'exportingPDF': 'Eksporterer PDF...', - 'export': 'Eksportér', + 'export': 'Eksportér', // Meeting模块 - 发言者 'applyToAllParagraphs': 'Anvend på alle afsnit for denne taler', @@ -723,18 +740,18 @@ const Map daDK = { // 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', + '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', + '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", @@ -743,8 +760,8 @@ const Map daDK = { "translationRecharge": "Opladning af oversetning", "meetingAssistantRecharge": "Opladning af mødeassistent", "cloudSync": "Opladning af cloud-synkronisering", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "memberService": "Medlemsservice", + "bindRewardTitle": "Belønninger", "bindRewardSimpleDesc": "Belønning for første enhedsbinding er udstedt. Tryk OK for at lukke.", "joinDevice": "Tilsluttet enhed:", @@ -840,20 +857,21 @@ const Map daDK = { "loadFailedClickRetry": "Indlæsning mislykkedes, klik for at prøve igen", "swipeUpForMore": "Stryg op for mere", "callingTool": "Jeg hjælper dig, vent venligst!", // 正在帮您,请稍等! - "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.', + "voice_interrupt": "Afbryd", // 语音打断 + '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", // 今日天气 - "presetNews": "Today's news", // 今日新闻 - "presetFood": "Nearby food", // 美食 - "playSomeMusic": "Play some popular music", // 播放一些流行音乐 + "presetMusic": "Spil musik", // 来点音乐 + "presetNavigation": "Naviger til", // 导航 + "presetWeather": "Vejret i dag", // 今日天气 + "presetNews": "Nyheder i dag", // 今日新闻 + "presetFood": "Mad i nærheden", // 美食 + "playSomeMusic": "Spil noget populær musik", // 播放一些流行音乐 "navigationTo": "Hjælp mig venligst med at navigere til", // 导航到 - "todayWeather": "How's the weather today?", // 今日天气 - "todayNews": "What's the news today?", // 今日新闻 - "nearbyFood": "What delicious food is nearby?", // 美食 + "todayWeather": "Hvordan er vejret i dag?", // 今日天气 + "todayNews": "Hvad er nyhederne i dag?", // 今日新闻 + "nearbyFood": "Hvilken lækker mad er der i nærheden?", // 美食 // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Hej! Jeg er **Lily**, jeg kan hjælpe dig med:\n\n' @@ -937,7 +955,8 @@ const Map daDK = { 'builtInNavigation': 'Indbygget navigation', 'useBuiltInNavigation': 'Navigér med indbygget kort', 'navigationStartFailed': 'Kunne ikke starte navigation', - 'cannotPlayMusicListRetryLater': 'Kan ikke afspille musiklisten, prøv igen senere', + 'cannotPlayMusicListRetryLater': + 'Kan ikke afspille musiklisten, prøv igen senere', 'cannotPlaySong': 'Kan ikke afspille sangen', 'openMapError': 'Fejl ved åbning af kort', 'pleaseInstallAmapApp': 'Installér Amap-appen først', @@ -1023,8 +1042,10 @@ const Map daDK = { 'disableFloatingWindow': 'Deaktivér flydende vindue', 'enableFloatingWindow': 'Aktivér flydende vindue', 'permissionTip': 'Tilladelsestip', - 'micPermissionRequiredForRecording': 'Mikrofontilladelse kræves til optagelse', - 'deleteTranslationRecordError': 'Fejl ved sletning af oversættelsespost: @error', + 'micPermissionRequiredForRecording': + 'Mikrofontilladelse kræves til optagelse', + 'deleteTranslationRecordError': + 'Fejl ved sletning af oversættelsespost: @error', "translationFailed": "Oversættelse mislykkedes", "translating": "Oversætter", "translate": "Oversæt", @@ -1300,17 +1321,18 @@ const Map daDK = { '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', + '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', // 版本更新对话框标题 @@ -1398,14 +1420,14 @@ const Map daDK = { '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:", + "firstBindRewardTitle": "Velkomstbelønning", + "firstBindRewardDesc": "Du har modtaget din belønning for binding.", + "vipLevelLabel": "VIP-niveau:", + "expiryLabel": "Udløbsdato:", + "notActivated": "Ikke aktiveret", + "aiChatCreditsLabel": "Kreditter til AI-chat:", + "translationCreditsLabel": "Oversættelseskreditter:", + "meetingCreditsLabel": "Mødekreditter:", "ok": "OK", // 用户反馈模块 @@ -1455,7 +1477,8 @@ const Map daDK = { 'otaConfirmUpdateNow': 'Opdatér nu?', 'otaUpdate': 'Opdatér', 'otaUpgradeSuccess': 'Opgradering gennemført', - 'otaUpgradeCompleteRepair': 'Firmware-opgradering fuldført!\n\nEnheden skal parres igen. Gå til parringssiden?', + 'otaUpgradeCompleteRepair': + 'Firmware-opgradering fuldført!\n\nEnheden skal parres igen. Gå til parringssiden?', 'otaPairLater': 'Par senere', 'otaPairNow': 'Par nu', 'okConfirm': 'OK', @@ -1463,24 +1486,32 @@ const Map daDK = { // OTA升级模块 - 设备检查 'otaBleCheckErrorWithError': 'Fejl ved BLE-kontrol: @error', 'otaBleNotConnected': 'BLE-enhed ikke forbundet', - 'otaBleNeedConnection': 'Firmware-opgradering kræver BLE-forbindelse\nSørg for at enheden er forbundet og prøv igen', + 'otaBleNeedConnection': + 'Firmware-opgradering kræver BLE-forbindelse\nSørg for at enheden er forbundet og prøv igen', 'otaDeviceInfoUnavailableTitle': 'Enhedsinfo utilgængelig', - 'otaCannotGetDeviceInfo': 'Kan ikke hente enhedsinfo\nTilslut enheden igen eller prøv senere', + 'otaCannotGetDeviceInfo': + 'Kan ikke hente enhedsinfo\nTilslut enheden igen eller prøv senere', 'otaBleCheckFailed': 'BLE-kontrol mislykkedes', - 'otaCannotGetDeviceInfoCheckConnection': 'Kan ikke hente enhedsinfo, kontrollér forbindelsen', - 'otaCannotGetProductInfoWithName': 'Kan ikke hente produktinfo, enhedsnavn: @deviceName', + 'otaCannotGetDeviceInfoCheckConnection': + 'Kan ikke hente enhedsinfo, kontrollér forbindelsen', + 'otaCannotGetProductInfoWithName': + 'Kan ikke hente produktinfo, enhedsnavn: @deviceName', 'otaCannotGetBatteryInfo': 'Kan ikke hente batteriinfo', 'otaLowBattery': 'Lavt batteri', - 'otaSingleBatteryLow': 'Batteriniveau for lavt til opgradering\nKrav: batteri over 20%\nNuværende: @ear @battery%\nOplad og prøv igen', - 'otaDoubleBatteryLow': 'Batteriniveau for lavt til opgradering\nKrav: begge ørepropper over 20%\nNuværende: Venstre @left%, Højre @right%\nOplad og prøv igen', + 'otaSingleBatteryLow': + 'Batteriniveau for lavt til opgradering\nKrav: batteri over 20%\nNuværende: @ear @battery%\nOplad og prøv igen', + 'otaDoubleBatteryLow': + 'Batteriniveau for lavt til opgradering\nKrav: begge ørepropper over 20%\nNuværende: Venstre @left%, Højre @right%\nOplad og prøv igen', 'otaBatteryCheckFailed': 'Batterikontrol mislykkedes', // OTA升级模块 - 升级状态 - 'otaDefaultUpdateDesc': 'Opdateringen indeholder ydelsesforbedringer og fejlrettelser.', + 'otaDefaultUpdateDesc': + 'Opdateringen indeholder ydelsesforbedringer og fejlrettelser.', 'otaGetLatestVersionFailed': 'Kunne ikke hente seneste version', 'otaGetVersionInfoFailed': 'Kunne ikke hente versionsinfo', 'otaCheckingDeviceStatus': 'Kontrollerer enhedsstatus...', - 'otaDownloadFailedCheckNetwork': 'Download mislykkedes, kontrollér netværksforbindelsen', + 'otaDownloadFailedCheckNetwork': + 'Download mislykkedes, kontrollér netværksforbindelsen', 'otaDownloadFailed': 'Download mislykkedes', 'otaPreparingConnection': 'Forbereder enhedsforbindelse...', 'otaConnectingDevice': 'Forbinder til enhed...', @@ -1489,7 +1520,8 @@ const Map daDK = { 'otaUpgradeSuccessComplete': 'Opgradering gennemført', 'otaUpgradeFailedWithCode': 'Opgradering mislykkedes, fejlkode: @code', 'otaUpgradeFailedTitle': 'Opgradering mislykkedes', - 'otaUpgradeFailedDesc': 'Kontrollér forbindelse eller opdateringspakke, fejlkode: @code', + 'otaUpgradeFailedDesc': + 'Kontrollér forbindelse eller opdateringspakke, fejlkode: @code', 'otaDeviceDisconnected': 'Enhed frakoblet', 'otaDeviceConnected': 'Enhed forbundet', diff --git a/lib/core/translations/language/de_de.dart b/lib/core/translations/language/de_de.dart index 36c2c84bf..5863aa246 100644 --- a/lib/core/translations/language/de_de.dart +++ b/lib/core/translations/language/de_de.dart @@ -1,3 +1,4 @@ +//德语-德语 const Map deDE = { // 通用 'continue': 'Fortfahren', @@ -775,8 +776,8 @@ const Map deDE = { "translationRecharge": "Übersetzungs-Recharge", "meetingAssistantRecharge": "Meeting-Assistent-Recharge", "cloudSync": "Cloud-Synchronisierung-Recharge", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "memberService": "Mitgliederservice", + "bindRewardTitle": "Belohnungen", "bindRewardSimpleDesc": "Die Prämie für die erste Gerätebindung wurde ausgegeben. Tippen Sie auf OK, um zu schließen.", "joinDevice": "Verbundenes Gerät:", diff --git a/lib/core/translations/language/el_gr.dart b/lib/core/translations/language/el_gr.dart index 6df5ac37f..094616c9c 100644 --- a/lib/core/translations/language/el_gr.dart +++ b/lib/core/translations/language/el_gr.dart @@ -1,3 +1,4 @@ +//希腊-希腊语 const Map elGR = { // 通用 'continue': 'Συνέχεια', @@ -937,9 +938,11 @@ const Map elGR = { // Agent模块 - 工具调用 'toolCall': 'Κλήση εργαλείου', 'noResult': 'Κανένα αποτέλεσμα', - 'noToolCallContentToCopy': 'Δεν υπάρχει περιεχόμενο κλήσης εργαλείου για αντιγραφή', + 'noToolCallContentToCopy': + 'Δεν υπάρχει περιεχόμενο κλήσης εργαλείου για αντιγραφή', 'toolCallDetails': 'Λεπτομέρειες κλήσης εργαλείου:', - 'toolCallContentCopied': 'Το περιεχόμενο κλήσης εργαλείου αντιγράφηκε στο πρόχειρο', + 'toolCallContentCopied': + 'Το περιεχόμενο κλήσης εργαλείου αντιγράφηκε στο πρόχειρο', // Agent模块 - 音乐卡片 'recommendedMusic': 'Ορίστε μερικές προτεινόμενες μουσικές:', @@ -1063,7 +1066,8 @@ const Map elGR = { 'permissionTip': 'Υπόδειξη δικαιώματος', 'micPermissionRequiredForRecording': 'Απαιτείται δικαίωμα μικροφώνου για εγγραφή', - 'deleteTranslationRecordError': 'Σφάλμα κατά τη διαγραφή εγγραφής μετάφρασης: @error', + 'deleteTranslationRecordError': + 'Σφάλμα κατά τη διαγραφή εγγραφής μετάφρασης: @error', "translationFailed": "Αποτυχία μετάφρασης", "translating": "Μετάφραση σε εξέλιξη", "translate": "Μετάφραση", @@ -1118,13 +1122,15 @@ const Map elGR = { "imageTooLarge": "Το μέγεθος εικόνας υπερβαίνει το όριο των 4MB", "imageTooLargeHint": "Το μέγεθος εικόνας υπερβαίνει τα 4MB. Μειώστε την ποιότητα ή τις διαστάσεις και δοκιμάστε ξανά", - "emptyTranslationResult": "Το API μετάφρασης εικόνας επέστρεψε κενό αποτέλεσμα", + "emptyTranslationResult": + "Το API μετάφρασης εικόνας επέστρεψε κενό αποτέλεσμα", "imageTranslationFailedTryLater": "Αποτυχία μετάφρασης εικόνας. Πρόβλημα δικτύου ή όριο αιτημάτων. Δοκιμάστε αργότερα", "imageTranslationApiException": "Εξαίρεση API μετάφρασης εικόνας. Ελέγξτε το δίκτυο και δοκιμάστε ξανά", "permissionRequired": "Απαιτείται δικαίωμα", - "cameraPermissionRequired": "Απαιτείται δικαίωμα κάμερας για λήψη φωτογραφιών", + "cameraPermissionRequired": + "Απαιτείται δικαίωμα κάμερας για λήψη φωτογραφιών", "photoAlbumPermissionRequired": "Απαιτείται δικαίωμα άλμπουμ φωτογραφιών για επιλογή εικόνων", "translationDetails": "Λεπτομέρειες μετάφρασης", @@ -1186,7 +1192,8 @@ const Map elGR = { 'deleteAccountTips': 'Είστε βέβαιοι ότι θέλετε να διαγράψετε μόνιμα τον λογαριασμό σας; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί', 'clean': 'Εκκαθάριση προσωρινής μνήμης', - 'cleanTips': 'Είστε βέβαιοι ότι θέλετε να εκκαθαρίσετε την προσωπική προσωρινή μνήμη;', + 'cleanTips': + 'Είστε βέβαιοι ότι θέλετε να εκκαθαρίσετε την προσωπική προσωρινή μνήμη;', 'networkConnectionFailed': 'Αποτυχία σύνδεσης δικτύου, ελέγξτε τις ρυθμίσεις δικτύου και δοκιμάστε ξανά', 'serverTemporarilyUnavailable': @@ -1281,20 +1288,24 @@ const Map elGR = { 'Η διαχείριση γεγονότων ημερολογίου χρειάζεται πλήρες δικαίωμα ημερολογίου', 'locationPermissionDetailDesc': 'Η λήψη πληροφοριών τοποθεσίας χρειάζεται δικαίωμα τοποθεσίας', - 'contactsPermissionDesc': 'Χρησιμοποιείται για πρόσβαση σε πληροφορίες επαφών', + 'contactsPermissionDesc': + 'Χρησιμοποιείται για πρόσβαση σε πληροφορίες επαφών', 'contactsPermissionDetailDesc': 'Η λειτουργία τηλεφωνικών κλήσεων και SMS χρειάζεται δικαίωμα επαφών για επιλογή επαφών', 'bluetoothPermissionDesc': 'Χρησιμοποιείται για σύνδεση και διαχείριση συσκευών Bluetooth', 'bluetoothPermissionDetailDesc': 'Η σύνδεση με ακουστικά Bluetooth και άλλες συσκευές απαιτεί δικαίωμα Bluetooth', - 'bluetoothScanPermissionDesc': 'Χρησιμοποιείται για σάρωση κοντινών συσκευών Bluetooth', + 'bluetoothScanPermissionDesc': + 'Χρησιμοποιείται για σάρωση κοντινών συσκευών Bluetooth', 'bluetoothScanPermissionDetailDesc': 'Η σάρωση κοντινών συσκευών Bluetooth απαιτεί δικαίωμα σάρωσης Bluetooth', - 'bluetoothConnectPermissionDesc': 'Χρησιμοποιείται για σύνδεση σε συσκευές Bluetooth', + 'bluetoothConnectPermissionDesc': + 'Χρησιμοποιείται για σύνδεση σε συσκευές Bluetooth', 'bluetoothConnectPermissionDetailDesc': 'Η σύνδεση σε συσκευές Bluetooth απαιτεί δικαίωμα σύνδεσης Bluetooth', - 'notificationPermissionDesc': 'Χρησιμοποιείται για αποστολή μηνυμάτων ειδοποίησης', + 'notificationPermissionDesc': + 'Χρησιμοποιείται για αποστολή μηνυμάτων ειδοποίησης', 'notificationPermissionDetailDesc': 'Η εφαρμογή χρειάζεται δικαίωμα ειδοποιήσεων για να σας στέλνει σημαντικές ειδοποιήσεις και μηνύματα', 'appNeedsPermissionForFullFunction': @@ -1429,7 +1440,8 @@ const Map elGR = { 'bleConnectionFailed': 'Αποτυχία σύνδεσης BLE', 'deviceAuthorizationFailedCheckCode': 'Αποτυχία εξουσιοδότησης συσκευής, ελέγξτε τον κωδικό εξουσιοδότησης', - 'bluetoothGuideTitle': 'Απαιτείται χειροκίνητη ενεργοποίηση Bluetooth', // 需要手动开启蓝牙 + 'bluetoothGuideTitle': + 'Απαιτείται χειροκίνητη ενεργοποίηση Bluetooth', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Ακολουθήστε τα παρακάτω βήματα:', // 请按照以下步骤操作: 'bluetoothGuideStep1': 'Ενεργοποίηση Bluetooth: Ρυθμίσεις → Bluetooth → Ενεργοποίηση', // 开启蓝牙:设置 → 蓝牙 → 开启 @@ -1478,7 +1490,8 @@ const Map elGR = { "connectionFailed": "Αποτυχία σύνδεσης", "retryConnection": "Επανάληψη σύνδεσης", "ota_updateNow": "Ενημέρωση τώρα", - "otaVersionInfoFailed": "Αποτυχία λήψης πληροφοριών έκδοσης. Δοκιμάστε ξανά αργότερα.", + "otaVersionInfoFailed": + "Αποτυχία λήψης πληροφοριών έκδοσης. Δοκιμάστε ξανά αργότερα.", "otaDeviceInfoUnavailable": "Αδυναμία λήψης πληροφοριών συσκευής. Ελέγξτε τη σύνδεση και δοκιμάστε ξανά.", "otaProductInfoUnavailable": @@ -1531,8 +1544,7 @@ const Map elGR = { 'otaGetLatestVersionFailed': 'Αποτυχία λήψης πληροφοριών τελευταίας έκδοσης', 'otaGetVersionInfoFailed': 'Αποτυχία λήψης πληροφοριών έκδοσης', 'otaCheckingDeviceStatus': 'Έλεγχος κατάστασης συσκευής...', - 'otaDownloadFailedCheckNetwork': - 'Αποτυχία λήψης, ελέγξτε τη σύνδεση δικτύου', + 'otaDownloadFailedCheckNetwork': 'Αποτυχία λήψης, ελέγξτε τη σύνδεση δικτύου', 'otaDownloadFailed': 'Αποτυχία λήψης', 'otaPreparingConnection': 'Προετοιμασία σύνδεσης συσκευής...', 'otaConnectingDevice': 'Σύνδεση στη συσκευή...', diff --git a/lib/core/translations/language/en_us.dart b/lib/core/translations/language/en_us.dart index 0f8570890..a2cdeed7f 100644 --- a/lib/core/translations/language/en_us.dart +++ b/lib/core/translations/language/en_us.dart @@ -1,3 +1,4 @@ +//美国-英语 const Map enUS = { // 通用 'continue': 'Continue', diff --git a/lib/core/translations/language/es_es.dart b/lib/core/translations/language/es_es.dart index cdaad4f45..ea8369768 100644 --- a/lib/core/translations/language/es_es.dart +++ b/lib/core/translations/language/es_es.dart @@ -1,10 +1,11 @@ +//西班牙-西班牙语 const Map esES = { // 通用 'continue': 'Continuar', 'confirm': 'Confirmar', 'cancel': 'Cancelar', 'retry': 'Reintentar', - 'error': 'Error', + 'error': 'Fallo', 'success': 'Éxito', 'connected': 'Conectado', 'connecting': 'Conectando...', @@ -245,7 +246,7 @@ const Map esES = { "costStats": "Cost Stats", "estimatedCost": "Estimated Cost", "dailyCostThreshold": "Daily Cost Threshold", - "monthlyCostThreshold": "Monthly Cost Threshold", + "monthlyCostThreshold": "Umbral de costo mensual", "usageBehaviorStats": "Usage Behavior Stats", "mostUsedLanguagePair": "Most-used language pair", "mostUsedMode": "Most-used mode", @@ -308,7 +309,7 @@ const Map esES = { 'wechatPayWithAmount': 'WeChat Pay ¥@amount', 'alipayPayWithAmount': 'Alipay ¥@amount', 'paymentStatusTitle': 'Estado del pago', - 'errorInfoWithMessage': 'Error: @message', + 'errorInfoWithMessage': 'Fallo: @message', 'retest': 'Volver a probar', 'paymentTestInstructionsTitle': 'Instrucciones', 'paymentTestInstructionsContent': @@ -357,7 +358,7 @@ const Map esES = { 'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points', 'helpCallAndSMS': 'Help with calls and SMS', 'templatedMessagesAndScheduleReminders': - 'Template messages and schedule reminders', + 'Mensajes de plantilla y recordatorios programados', 'aiDisclaimer': 'Las funciones dependen de los permisos del dispositivo, la disponibilidad del servicio y las condiciones de la red.', @@ -705,9 +706,9 @@ const Map esES = { 'Importa fácilmente archivos de audio desde aplicaciones locales o de terceros, como notas de voz, Google Drive, etc.', 'multipleExportFormatsDesc': 'Exporta tus grabaciones de audio, textos de transcripción y resúmenes en varios formatos (TXT, PDF, JPEG) según tus necesidades.', - 'upgradeMembership': 'Upgrade Your Membership', - 'yearlySubscription': 'Yearly Subscription', - 'monthlySubscription': 'Monthly Subscription', + 'upgradeMembership': 'Actualiza tu membresía', + 'yearlySubscription': 'Suscripción anual', + 'monthlySubscription': 'Suscripción mensual', 'proMonthly': 'Pro ¥60/month', 'proMonthlyDesc': '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', @@ -718,20 +719,20 @@ const Map esES = { 'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.', 'proPrice': 'Pro ¥120', 'proMonthlyPrice': '¥120/month', - 'subscribe': 'Subscribe', + 'subscribe': 'Suscribirse', 'unlimitedPrice': 'Unlimited ¥198', 'unlimitedMonthlyPrice': '¥198/month', 'upgradeNote': - '*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account', - 'buyMoreTranscriptionTime': 'Buy More Transcription Time', + '*Tras actualizar la suscripción, los días restantes de la suscripción original se calcularán automáticamente y se reembolsarán a tu cuenta de pago', + 'buyMoreTranscriptionTime': 'Comprar más tiempo de transcripción', 'sixThousandMinutes': '6,000 minutes', 'threeThousandMinutes': '3,000 minutes', 'sixHundredMinutes': '600 minutes', 'oneHundredTwentyMinutes': '120 minutes', 'validityPeriod': '*Validity Period: ', 'validityNote': - 'Activated immediately after purchase, valid for 2 years after activation.', - 'purchase': 'Purchase', + 'Se activa inmediatamente tras la compra, válido durante 2 años después de la activación.', + 'purchase': 'Comprar', // Meeting模块 - 录音语言 'recordLanguage': 'Idioma de grabación', @@ -859,7 +860,7 @@ const Map esES = { "loadFailedClickRetry": "Carga fallida, haz clic para reintentar", "swipeUpForMore": "Desliza hacia arriba para más", "callingTool": "Estoy ayudándote, por favor espera.", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 + "voice_interrupt": "Interrumpir", // 语音打断 '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.', @@ -1438,14 +1439,14 @@ const Map esES = { 'iKnow': 'Entendido', // 我知道了 // 配对模块 - 绑定奖励 - "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:", + "firstBindRewardTitle": "Recompensa de bienvenida", + "firstBindRewardDesc": "Has recibido recompensas por vinculación.", + "vipLevelLabel": "Nivel VIP:", + "expiryLabel": "Caducidad:", + "notActivated": "No activado", + "aiChatCreditsLabel": "Créditos de chat de IA:", + "translationCreditsLabel": "Créditos de traducción:", + "meetingCreditsLabel": "Créditos de reuniones:", "ok": "OK", // 用户反馈模块 diff --git a/lib/core/translations/language/et_ee.dart b/lib/core/translations/language/et_ee.dart index a8417cc3e..d24efa4d7 100644 --- a/lib/core/translations/language/et_ee.dart +++ b/lib/core/translations/language/et_ee.dart @@ -1,3 +1,4 @@ +//爱沙尼亚-爱沙尼亚语 const Map etEE = { // 通用 'continue': 'Jätka', @@ -18,11 +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", + "justNow": "Just praegu", + "minutesAgo": "@minutes min tagasi", + "yesterday": "Eile", + "daysAgo": "@days päeva tagasi", + "hoursAgo": "@hours h tagasi", // 启动页 "slogan": "Maailma ühendamine, heli tagant", @@ -164,27 +165,27 @@ const Map etEE = { 'checkConnectionStatusFailed': 'Ühenduse oleku kontrollimine ebaõnnestus', // 蓝牙扫描模块 - 'bleInitFailedWithError': 'Bluetooth initialization failed: @error', + 'bleInitFailedWithError': 'Bluetoothi lähtestamine ebaõnnestus: @error', 'needBluetoothAndLocationPermission': - 'Bluetooth and location permissions are required to scan devices', - 'permissionRequestFailedWithError': 'Permission request failed: @error', - 'needPermission': 'Permission Required', + 'Seadmete otsimiseks on vaja Bluetoothi ja asukoha luba', + 'permissionRequestFailedWithError': 'Loa taotlemine ebaõnnestus: @error', + 'needPermission': 'Luba on vajalik', 'blePermissionDialogContent': - 'This app requires Bluetooth and location permissions to scan devices. Please enable them in Settings.', - 'needEnableBluetooth': 'Enable Bluetooth', + 'See rakendus vajab seadmete otsimiseks Bluetoothi ja asukoha luba. Lubage need seadetes.', + 'needEnableBluetooth': 'Lülita Bluetooth sisse', 'enableBluetoothDialogContent': - 'Please enable Bluetooth to scan and connect devices.', - 'bleScanFailedWithError': 'Scan failed: @error', - 'bleConnectionSuccess': 'Connection Successful', - 'bleConnectedToDevice': 'Connected to @device', - 'bleConnectionFailedWithError': 'Connection failed: @error', - 'bleDisconnected': 'Disconnected', - 'bleDeviceDisconnected': 'Device disconnected', - 'bleDisconnectFailedWithError': 'Disconnect failed: @error', - 'signalStrong': 'Strong', - 'signalMedium': 'Medium', - 'signalWeak': 'Weak', - 'signalVeryWeak': 'Very Weak', + 'Seadmete otsimiseks ja ühendamiseks lülitage Bluetooth sisse.', + 'bleScanFailedWithError': 'Otsing ebaõnnestus: @error', + 'bleConnectionSuccess': 'Ühendus õnnestus', + 'bleConnectedToDevice': 'Ühendatud seadmega @device', + 'bleConnectionFailedWithError': 'Ühendus ebaõnnestus: @error', + 'bleDisconnected': 'Ühendus katkestatud', + 'bleDeviceDisconnected': 'Seade ühendus katkestati', + 'bleDisconnectFailedWithError': 'Lahutamine ebaõnnestus: @error', + 'signalStrong': 'Tugev', + 'signalMedium': 'Keskmine', + 'signalWeak': 'Nõrk', + 'signalVeryWeak': 'Väga nõrk', // 发现页 "searchAi": "Otsi AI funktsioone...", @@ -212,55 +213,55 @@ const Map etEE = { "scene": "Stsenaariumid", // 用量统计模块 - "aiChat": "AI Chat", - "translationStats": "Translation Statistics", - "meetingStats": "Meeting Statistics", - "today": "Today", - "thisWeek": "This Week", - "thisMonth": "This Month", - "history": "History", - "currentSessionStats": "Current Session Stats", - "translationCount": "Translation Count", - "sessionDuration": "Session Duration", - "characters": "Characters", - "recordingDuration": "Recording Duration", - "totalApiCalls": "Total API Calls", - "sessionCount": "Session Count", - "totalCharacters": "Total Characters", - "apiCallStats": "API Call Stats", - "translationApi": "Translation API", + "aiChat": "AI vestlus", + "translationStats": "Tõlke statistika", + "meetingStats": "Koosolekute statistika", + "today": "Täna", + "thisWeek": "Sel nädalal", + "thisMonth": "Sel kuul", + "history": "Ajalugu", + "currentSessionStats": "Praeguse seansi statistika", + "translationCount": "Tõlgete arv", + "sessionDuration": "Seansi kestus", + "characters": "Märgid", + "recordingDuration": "Salvestuse kestus", + "totalApiCalls": "API kutseid kokku", + "sessionCount": "Seansside arv", + "totalCharacters": "Märke kokku", + "apiCallStats": "API kutsete statistika", + "translationApi": "Tõlke API", "asr": "ASR", "tts": "TTS", - "dataVolumeStats": "Data Volume Stats", - "sourceTextCharacters": "Source Text Characters", - "ttsTextCharacters": "TTS Text Characters", - "effectiveAudioDuration": "Effective Audio Duration", - "totalSessionDuration": "Total Session Duration", - "costStats": "Cost Stats", - "estimatedCost": "Estimated Cost", - "dailyCostThreshold": "Daily Cost Threshold", - "monthlyCostThreshold": "Monthly Cost Threshold", - "usageBehaviorStats": "Usage Behavior Stats", - "mostUsedLanguagePair": "Most-used language pair", - "mostUsedMode": "Most-used mode", - "asrApiCalls": "ASR Calls", - "totalAudioDuration": "Total Audio Duration", - "audioFileSize": "Audio File Size", - "transcriptBytes": "Transcript Bytes", - "loadFailed": "Load Failed", + "dataVolumeStats": "Andmemahu statistika", + "sourceTextCharacters": "Lähte teksti märgid", + "ttsTextCharacters": "TTS teksti märgid", + "effectiveAudioDuration": "Efektiivne helikestus", + "totalSessionDuration": "Seansside kogukestus", + "costStats": "Kulu statistika", + "estimatedCost": "Hinnanguline kulu", + "dailyCostThreshold": "Päevane kulu piirmäär", + "monthlyCostThreshold": "Kuine kulu piirmäär", + "usageBehaviorStats": "Kasutuskäitumise statistika", + "mostUsedLanguagePair": "Enim kasutatud keelepaar", + "mostUsedMode": "Enim kasutatud režiim", + "asrApiCalls": "ASR kutsed", + "totalAudioDuration": "Heli kogukestus", + "audioFileSize": "Helifaili suurus", + "transcriptBytes": "Transkripti baitid", + "loadFailed": "Laadimine ebaõnnestus", "statsLoadFailedTryLater": - "Statistics failed to load. Please try again later.", - "cleanupComplete": "Cleanup Complete", - "cleanedOldData": "Cleaned data older than 90 days", - "exportFeature": "Export Feature", - "exportInDevelopment": "Data export is under development", + "Statistikat ei õnnestunud laadida. Proovige hiljem uuesti.", + "cleanupComplete": "Puhastamine lõpetatud", + "cleanedOldData": "Puhastatud üle 90 päeva vanused andmed", + "exportFeature": "Eksport", + "exportInDevelopment": "Andmete eksport on arenduses", // 商品模块 - 通用 - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', + 'availablePackages': 'Saadaval olevad pakid', + 'remainingQuota': 'Jäänud kvoot', + 'totalQuota': 'Kokku kvoot', + 'remaining': 'Jäänud', + 'featureDescription': 'Tõlke funktsiooni kirjeldus', 'paymentSuccess': 'Makse edukas', 'paymentFailed': 'Makse ebaõnnestus', 'gotIt': 'Selge', @@ -319,115 +320,121 @@ const Map etEE = { 'alipayPaymentLaunchFailed': 'Alipay käivitamine ebaõnnestus', 'cannotLaunchAlipayPayment': 'Alipay käivitamine ei õnnestu', 'alipayPaymentException': 'Alipay erand', - "insufficientIntegral": "Insufficient integral", + "insufficientIntegral": "Punkte ei jätku", "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', + 'Kontojääk on ebapiisav, minge vastavale laadimislehele raha lisamiseks.', + "recharge": 'Mine laadimisele', "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + 'AI liikmelisus on aegunud, minge liikmelisuse pikendamise lehele.', // 商品模块 - AI商品页 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', + 'musicAndRecommendation': 'Muusika ja soovitused', + 'navigationAndRoutes': 'Navigatsioon ja marsruudid', + 'nearbySearch': 'Lähedal asuv otsing', + 'newsInformation': 'Uudised', + 'communicationAssistant': 'Suhtlusassistent', 'aiHeaderDesc1': - 'Longer conversation quota, more tool calls, extended context length.', + 'Pikem vestluskvoot, rohkem tööriistakutseid, pikem kontekst.', 'aiHeaderDesc2': - 'Suitable for agent Q&A, summarization, analysis, and task execution.', - 'musicSearchPlaybackControl': 'Music library search and playback control', + 'Sobib agendi küsimusteks-vastusteks, kokkuvõtteks, analüüsiks ja ülesannete täitmiseks.', + 'musicSearchPlaybackControl': 'Muusikakogu otsing ja taasesituse juhtimine', 'smartPlaylistAndSimilarRecommendations': - 'Smart playlist and similar song recommendations', + 'Nutikas esitusloend ja sarnaste lugude soovitused', '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', + 'Marsruudi planeerimine ja ummikute vältimine', + 'voiceBroadcastAndWaypoints': 'Hääljuhised ja vahepunktide seaded', + 'realTimeWeatherForecast': 'Reaalajas ilm ja prognoos', + 'clothingAdviceAndTravelReminders': + 'Riietussoovitused ja reisimeeldetuletused', + 'poiSearchFoodGasParking': 'POI otsing: toit / kütus / parkimine', + 'ratingsHoursAndDirectRoutes': + 'Hinnangud, lahtiolekuajad ja otsene navigeerimine', + 'hotNewsAndTopicOverview': 'Populaarsed uudised ja teemade ülevaade', + 'longArticleSummariesAndKeyPoints': + 'Pikkade artiklite kokkuvõtted ja põhipunktid', + 'helpCallAndSMS': 'Abi kõnede ja SMS-iga', 'templatedMessagesAndScheduleReminders': - 'Template messages and schedule reminders', + 'Sõnumimallid ja ajastatud meeldetuletused', 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', + 'Funktsioonid sõltuvad seadme lubadest, teenuse saadavusest ja võrguoludest.', // 商品模块 - 翻译商品页 - 'realtimeTranscription': 'Real-time Transcription', - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', + 'realtimeTranscription': 'Reaalajas transkriptsioon', + 'sceneLexicon': 'Stsenaariumide sõnastik', + 'subtitleDisplay': 'Subtiitrid', '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', + 'Reaalajas sünkroontõlge ja tekstitõlge madala latentsusega häälega.', + 'transHeaderDesc2': 'Sobib reisiks, äriks, kõnedeks ja õpetamiseks.', + 'translateZhEn': 'Hiina–inglise tõlge', + 'lowLatencyVoiceBroadcast': 'Madala latentsusega hääleside', + 'multiLangTextTranslation': 'Mitmekeelne tekstitõlge', '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', + 'Terminoloogia optimeerimine ja konteksti säilitamine', + 'lexiconTourBusinessLife': 'Reisi/äri/elu sõnastikud', + 'personalVocabularyMemory': 'Isiklik sõnavara mälu', + 'conversationSubtitleLargeText': 'Vestluse subtiitrid / suurteksti režiim', + 'colorHighContrast': 'Kõrge värvikontrast', 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', + 'Tõlke kvaliteet sõltub mikrofonist, võrgu latentsusest ja taustamürast.', // 商品模块 - 会议商品页 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', + 'meetingRecording': 'Koosoleku salvestus', + 'transcriptionAndSummary': 'Transkriptsioon ja kokkuvõte', + 'keywordSearch': 'Märksõnaotsing', + 'collaborationSharing': 'Kollaboratsioon ja jagamine', 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'Heli salvestamine, transkriptsioon, märksõnaotsing ja automaatne kokkuvõte koosoleku tõhususe suurendamiseks.', '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', + 'Sobib ärikoosolekuteks, loengumärkmeteks ja intervjuude protokollideks.', + 'meetingAutoRecording': 'Automaatne salvestus ja segmentimine', + 'meetingSpeakerTagging': 'Kõneleja märgendamine', + 'meetingLongAudioTranscription': 'Pika heli transkriptsioon', + 'meetingKeyPointSummary': 'Võtmekohtade väljavõte', + 'meetingTopicNameSearch': 'Otsi teema/nime järgi', + 'meetingTimelineJump': 'Ajajoonel hüppamine', + 'meetingExportSummary': 'Ekspordi protokoll', + 'meetingMultiPlatformShare': 'Jaga erinevatel platvormidel', 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', + 'Kasutage vaikses keskkonnas; jõudlus sõltub mikrofonist ja võrgust.', // 商品模块 - VIP会员页 - 'benefitsOverview': 'Benefits overview', - 'higherQuota': 'Higher usage quota', - 'lowerUnitPrice': 'Lower unit price', - 'priorityService': 'Priority service', - 'exclusiveSupportChannel': 'Dedicated support channel', - 'fastResponse': 'Fast issue response', - 'eventsAndDiscounts': 'Events and discounts', - 'memberExclusiveEvents': 'Member-exclusive events', - 'longTermDiscountPlan': 'Long-term discount plan', - 'generalPrivileges': 'General privileges', - 'earlyAccessNewFeatures': 'Early access to new features', - 'crossDeviceSync': 'Cross-device sync', + 'benefitsOverview': 'Hüvede ülevaade', + 'higherQuota': 'Suurem kasutuskvoot', + 'lowerUnitPrice': 'Madalam ühikuhind', + 'priorityService': 'Prioriteetne teenindus', + 'exclusiveSupportChannel': 'Pühendatud tugikanal', + 'fastResponse': 'Kiire reageerimine probleemidele', + 'eventsAndDiscounts': 'Üritused ja allahindlused', + 'memberExclusiveEvents': 'Ainult liikmetele mõeldud üritused', + 'longTermDiscountPlan': 'Pikaajaline soodusplaan', + 'generalPrivileges': 'Üldised hüved', + 'earlyAccessNewFeatures': 'Varajane ligipääs uutele funktsioonidele', + 'crossDeviceSync': 'Seadmeteülene sünkroonimine', 'vipDisclaimer': - 'Actual benefits depend on the package details and may change with versions.', + 'Tegelikud hüved sõltuvad paketi üksikasjadest ja võivad versioonide kaupa muutuda.', // 商品模块 - 商品名称与描述 - '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).', + 'ai_001_name': 'AI Põhi 100', + 'ai_002_name': 'AI Põhi 500', + 'ai_003_name': 'AI Põhi 1000', + 'meet_001_name': 'Koosolek Põhi 100', + 'meet_002_name': 'Koosolek Põhi 500', + 'meet_003_name': 'Koosolek Põhi 1000', + 'trans_001_name': 'Tõlge Põhi 100', + 'trans_002_name': 'Tõlge Põhi 500', + 'trans_003_name': 'Tõlge Põhi 1000', + 'ai_001_desc': + 'Sisaldab 100 kasutuskorda. Juurdepääs AI põhifunktsioonidele.', + 'ai_002_desc': + 'Sisaldab 500 kasutuskorda. Juurdepääs AI põhifunktsioonidele.', + 'ai_003_desc': + 'Sisaldab 1000 kasutuskorda. Juurdepääs AI põhifunktsioonidele.', + 'meet_001_desc': 'Sisaldab 100 koosoleku salvestust/transkriptsiooni.', + 'meet_002_desc': 'Sisaldab 500 koosoleku salvestust/transkriptsiooni.', + 'meet_003_desc': 'Sisaldab 1000 koosoleku salvestust/transkriptsiooni.', + 'trans_001_desc': 'Sisaldab 100 tõlget (hääl/tekst).', + 'trans_002_desc': 'Sisaldab 500 tõlget (hääl/tekst).', + 'trans_003_desc': 'Sisaldab 1000 tõlget (hääl/tekst).', // 商品模块 - 页脚 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', @@ -436,40 +443,42 @@ const Map etEE = { // 新手引导 'skip': "Jäta vahele", - 'next': 'Next', - 'sayLilyHint': 'Say "Lily Lily" to the mic', - 'imHere': 'I’m here~', - 'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.', - 'aiReplyCompleted': 'Lily has finished the reply!', - 'aiThinking': 'Lily is thinking…', - 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', - 'confirmInput': 'Confirm Input', - 'guideClickSendPrefix': 'Tap send, ', - 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', - 'guideWeatherInput': 'What’s the weather today?', - 'guideWeatherSend': 'Lily will report the weather in real time', - 'guideWeatherEnd': 'Lily can report weather live—try other commands', - 'guideMusicStart': 'Tell Lily: “Play some rock music”', - 'guideMusicInput': 'Play some rock music', - 'guideMusicSend': 'Lily will find music for you', - 'guideMusicEnd': 'Lily found music—try other commands', - 'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”', - 'guideNavInput': 'Navigate to Shenzhen Airport', - 'guideNavSend': 'Lily will plan the route', - 'guideNavEnd': 'Navigation set—try other commands', + 'next': 'Järgmine', + 'sayLilyHint': 'Ütle mikrofoni "Lily Lily"', + 'imHere': 'Olen siin~', + 'guideWelcomeWakeAI': + 'Tere tulemast Voitrans\'i! Kõigepealt ärata oma AI “Lily”.', + 'aiReplyCompleted': 'Lily on vastuse lõpetanud!', + 'aiThinking': 'Lily mõtleb…', + 'guideAwakenSuccess': 'Suurepärane! Lily on ärkvel — küsi temalt abi.', + 'confirmInput': 'Kinnita sisestus', + 'guideClickSendPrefix': 'Puuduta saatmist, ', + 'guideWeatherStart': 'Ütle Lilyle: “Milline on täna ilm?”', + 'guideWeatherInput': 'Milline on täna ilm?', + 'guideWeatherSend': 'Lily annab ilmateate reaalajas', + 'guideWeatherEnd': + 'Lily saab ilmateadet reaalajas edastada — proovi muid käske', + 'guideMusicStart': 'Ütle Lilyle: “Mängi rokkmuusikat”', + 'guideMusicInput': 'Mängi rokkmuusikat', + 'guideMusicSend': 'Lily leiab sulle muusika', + 'guideMusicEnd': 'Lily leidis muusika — proovi muid käske', + 'guideNavStart': 'Ütle Lilyle: “Navigeeri Shenzheni lennujaama”', + 'guideNavInput': 'Navigeeri Shenzheni lennujaama', + 'guideNavSend': 'Lily planeerib marsruudi', + 'guideNavEnd': 'Navigatsioon on määratud — proovi muid käske', 'guideMeetingStart': - 'Tell Lily: “Create a meeting reminder for 3pm tomorrow”', - 'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow', - 'guideMeetingSend': 'Lily will create a meeting reminder', - 'guideMeetingEnd': 'Reminder created—try other commands', - 'guidePhoneStart': 'Tell Lily: “Call Mom”', - 'guidePhoneInput': 'Call Mom', - 'guidePhoneSend': 'Lily will make the call', - 'guidePhoneEnd': 'Call placed—try other commands', - 'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”', - 'guideSmsInput': 'Text Dad: I’ll be home for dinner', - 'guideSmsSend': 'Lily will send the message', - 'guideSmsEnd': 'Message sent—voice control is convenient', + 'Ütle Lilyle: “Loo koosoleku meeldetuletus homme kell 15”', + 'guideMeetingInput': 'Loo koosoleku meeldetuletus homme kell 15', + 'guideMeetingSend': 'Lily loob meeldetuletuse', + 'guideMeetingEnd': 'Meeldetuletus loodud — proovi muid käske', + 'guidePhoneStart': 'Ütle Lilyle: “Helista emale”', + 'guidePhoneInput': 'Helista emale', + 'guidePhoneSend': 'Lily teeb kõne', + 'guidePhoneEnd': 'Kõne tehtud — proovi muid käske', + 'guideSmsStart': 'Ütle Lilyle: “Saada isale SMS: Olen õhtusöögiks kodus”', + 'guideSmsInput': 'SMS isale: Olen õhtusöögiks kodus', + 'guideSmsSend': 'Lily saadab sõnumi', + 'guideSmsEnd': 'Sõnum saadetud — hääljuhtimine on mugav', // Meeting模块 - 首页与导航 "startMeeting": "Alusta koosolekut", @@ -483,38 +492,40 @@ const Map etEE = { 'recordingDetails': 'Salvestuse üksikasjad', 'aiSummary': 'AI kokkuvõte', 'meetingTranscript': 'Koosoleku transkriptsioon', - 'files': 'Files', - 'mine': 'Mine', - 'connect': 'Connect', - 'allFiles': 'All Files', - 'searchInAllFiles': 'Search in all files', - 'from': 'From', - 'sortBy': 'Sort by', - 'creationTime': 'Creation Time', - 'bluetoothConnection': 'Bluetooth Connection', - 'meetingReconnect': 'Reconnect', - 'searching': 'Searching...', - 'searchFailed': 'Search failed, please check if Bluetooth is enabled', - 'aiPenNotFound': 'AI PEN device not found', - 'connectedToAiPen': 'Connected to AI PEN device', - 'checkingNewFiles': 'Checking for new files to import', - 'startingWifi': 'Starting Wi-Fi...', - 'newFilesDetected': 'New files detected, preparing to import', - 'noNewFiles': 'No new files to import', - 'connectingWifi': 'Connecting to Wi-Fi...', - 'wifiConnected': 'Wi-Fi connected successfully', - 'downloadingFiles': 'Downloading files...', - 'downloadingFileProgress': 'Total {total} files, downloading file {current}', - 'downloadComplete': 'Download complete', + 'files': 'Failid', + 'mine': 'Minu', + 'connect': 'Ühenda', + 'allFiles': 'Kõik failid', + 'searchInAllFiles': 'Otsi kõigist failidest', + 'from': 'Alates', + 'sortBy': 'Sorteeri', + 'creationTime': 'Loomise aeg', + 'bluetoothConnection': 'Bluetoothi ühendus', + 'meetingReconnect': 'Ühenda uuesti', + 'searching': 'Otsimine...', + 'searchFailed': + 'Otsing ebaõnnestus, kontrolli kas Bluetooth on sisse lülitatud', + 'aiPenNotFound': 'AI PEN seadet ei leitud', + 'connectedToAiPen': 'Ühendatud AI PEN seadmega', + 'checkingNewFiles': 'Uute failide kontrollimine importimiseks', + 'startingWifi': 'Wi‑Fi käivitamine...', + 'newFilesDetected': 'Leiti uued failid, valmistun importimiseks', + 'noNewFiles': 'Uusi faile importimiseks ei ole', + 'connectingWifi': 'Ühendamine Wi‑Fi-ga...', + 'wifiConnected': 'Wi‑Fi ühendus õnnestus', + 'downloadingFiles': 'Failide allalaadimine...', + 'downloadingFileProgress': + 'Kokku {total} faili, allalaadimisel fail {current}', + 'downloadComplete': 'Allalaadimine lõpetatud', 'downloadCompleteInfo': - 'Download complete, {count} files in total, returning automatically in 2 seconds', + 'Allalaadimine lõpetatud, kokku {count} faili, naasen automaatselt 2 sekundi pärast', // Meeting模块 - 录音功能 - 'startRecording': 'Start Recording', - 'liveRecording': 'Live Recording', - 'audioVideoRecording': 'Audio/Video Recording', - 'callRecording': 'Call Recording', - 'importAudio': 'Import Audio', + 'startRecording': 'Alusta salvestamist', + 'liveRecording': 'Otse salvestus', + 'audioVideoRecording': 'Heli/video salvestus', + 'callRecording': 'Kõne salvestus', + 'importAudio': 'Impordi heli', 'meetingRecordExitTitle': 'Välju salvestusest', // 退出录音 'meetingRecordExitMessage': 'Vali, mida teha enne lahkumist', // 请选择离开后的操作 'meetingRecordEndAndSave': 'Lõpeta ja salvesta', // 结束录音并保存 @@ -536,30 +547,30 @@ const Map etEE = { 'Salvestamise ajal salvestuse ujuvriba (taimer/paus/jätka) kuvamiseks vajame ülekatte luba.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'overlayPermissionOpenSettingsFailed': 'Süsteemiseadeid ei saa automaatselt avada. Palun ava Seaded ja luba ülekatte luba käsitsi.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'transcribing': 'Transkribeerimine...', + 'summarizing': 'Kokkuvõtte tegemine...', + 'analyzing': 'Analüüsimine...', + 'summaryComplete': 'Kokkuvõte valmis', + 'generate': 'Genereeri', + 'overview': 'Ülevaade', + 'transcription': 'Transkriptsioon', + 'summary': 'Kokkuvõte', + 'mindMap': 'Mõttekaart', + 'editSpeaker': 'Muuda', + 'nameSpeaker': 'Nimeta kõneleja', // Meeting模块 - 转写与总结 - 'reSummarize': 'Re-summarize', - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'reSummarize': 'Genereeri kokkuvõte uuesti', + 'dateAndTime': 'Kuupäev ja kellaaeg', + 'location': 'Asukoht', + 'attendees': 'Osalejad', + 'inputLocation': 'Sisesta asukoht', + 'inputAttendees': 'Sisesta osalejad', // Meeting模块 - 模版与生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', + 'selectSummaryTemplate': 'Vali kokkuvõtte mall', + 'useThisTemplate': 'Kasuta seda malli', + 'lastUsed': 'Viimati kasutatud', 'create': 'Loo', 'templateDetails': 'Malli üksikasjad', 'tag': 'Silt', @@ -576,160 +587,163 @@ const Map etEE = { '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.', + 'viewAll': 'Vaata kõiki', + 'recordingLanguage': 'Salvestuse keel', + 'chineseSimplified': 'Hiina mandariini (lihtsustatud)', + 'meetingGenerateNow': 'Genereeri nüüd', + 'keyEventsAnalyzed': 'Analüüsitud {count} olulist sündmust.', 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + 'AI analüüs tuvastab salvestustes olulised sündmused, võimaldades valida tähtsad sündmused AI genereerimiseks.', // 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}', + 'importing': 'Importimine...', + 'batchImporting': 'Partii importimine...', + 'importingLocalRecordings': 'Kohalike salvestuste importimine...', + 'importFailed': 'Faili import ebaõnnestus: {filePath}, viga: {error}', + 'importSuccess': 'Kohalikke salvestusi imporditud: {count}', + 'importError': 'Import ebaõnnestus: {error}', + 'pleaseSelectAudioFile': 'Palun vali helifail', + 'shareAudio': 'Jaga koosoleku heli', + 'shareComplete': 'Jagamine lõpetatud!', + 'shareFailed': 'Jagamine ebaõnnestus: {error}', + 'fileProcessingFailed': + 'Faili töötlemine ebaõnnestus: {filePath}, viga: {error}', // Meeting模块 - 思维导图 'saveMindMap': 'Salvesta mõttekaart', - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', + 'shareMindMap': 'Jaga mõttekaarti', + 'shareSuccess': 'Jagamine õnnestus', // 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', + 'askAI': 'Küsi AI-lt...', + 'askAIPrompt': 'Kuidas saan sind täna aidata?', + 'continueAsk': 'Jätka küsimist', + 'todoList': 'Ülesannete loend', + 'extractConclusion': 'Eralda järeldus', + 'generateKeyIndicators': 'Genereeri võtmenäitajad', // 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...', + 'shareLink': 'Jaga linki', + 'copyTranscript': 'Kopeeri transkriptsioon', + 'copySummary': 'Kopeeri kokkuvõte', + 'exportAudio': 'Ekspordi heli', + 'exportTranscript': 'Ekspordi transkriptsioon', + 'shareMeetingAudio': 'Jaga koosoleku heli', + 'exportSummary': 'Ekspordi kokkuvõte', + 'exportAs': 'Ekspordi kui', + 'exportingPDF': 'PDF-i eksportimine...', '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', + 'nameCurrentSpeaker': 'Nimeta praegune kõneleja', + 'recentlyUsedNames': 'Hiljuti kasutatud nimed', + 'applyToCurrentParagraph': 'Rakenda praegusele lõigule', + 'totalTime': 'Koguaeg', 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', + 'Kokkuvõtte kõnelejad uuendatakse automaatselt', // Meeting模块 - 云端同步 - 'syncToCloud': 'Sync to Cloud', + 'syncToCloud': 'Sünkrooni pilve', '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', + 'Sünkrooni oma salvestused automaatselt pilve; saad salvestusi esitada, hallata ja jagada mis tahes VOITRANS rakenduse või VOITRANS Webi (web.voitrans.com) kaudu.', + 'syncToVoitransApp': 'Sünkrooni VOITRANS rakendus', + 'transcriptionRecord': 'Transkriptsiooni kirje', // Meeting模块 - 我的页面 - 'transcriptionRecords': 'Transcription Records', - 'templateCommunity': 'Template Community', - 'comingSoon': 'Coming Soon', - 'integration': 'Integration', + 'transcriptionRecords': 'Transkriptsiooni kirjed', + 'templateCommunity': 'Mallikogukond', + 'comingSoon': 'Varsti saadaval', + 'integration': 'Integratsioon', 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', - 'enabled': 'Enabled', - 'disabled': 'Disabled', - 'myVoitransDevice': 'My VOITRANS Device', - 'helpAndFeedback': 'Help & Feedback', - 'aboutVoitrans': 'About VOITRANS', - 'meetingDays': 'Days', - 'meetingHours': 'Hours', - 'voitransAiMember': 'Voitrans AI Member', - 'unlockStarterMember': 'Unlock Starter Member', - 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', - 'unlockNow': 'Unlock Now', + 'enabled': 'Lubatud', + 'disabled': 'Keelatud', + 'myVoitransDevice': 'Minu VOITRANS seade', + 'helpAndFeedback': 'Abi ja tagasiside', + 'aboutVoitrans': 'Teave VOITRANS-i kohta', + 'meetingDays': 'Päevad', + 'meetingHours': 'Tunnid', + 'voitransAiMember': 'Voitrans AI liige', + 'unlockStarterMember': 'Ava Starter liikmelisus', + 'bindDeviceToActivate': + 'Seo Voitrans seade Starter liikmelisuse aktiveerimiseks', + 'unlockNow': 'Ava kohe', // Meeting模块 - 会员与升级 - 'comparison': 'Comparison', - 'detailedInfo': 'Detailed Information', - 'monthlyTranscriptionTime': 'Monthly Transcription Time', - 'unlimited': 'Unlimited', - 'professionalTemplates': 'Professional Templates', - 'limited': 'Limited', - 'fullTemplates': 'Full Templates', - 'professionalTerms': 'Professional Terms', - 'customTemplates': 'Custom Templates', - 'visualMindMap': 'Visual Mind Map', - 'speakerIdentification': 'Speaker Identification', - 'aiVoiceEnhancement': 'AI Voice Enhancement', - 'audioImport': 'Audio Import', - 'multipleExportFormats': 'Multiple Export Formats', - 'professionalSummaryTemplates': 'Professional Summary Templates', + 'comparison': 'Võrdlus', + 'detailedInfo': 'Üksikasjalik teave', + 'monthlyTranscriptionTime': 'Kuu transkriptsiooniaeg', + 'unlimited': 'Piiramatu', + 'professionalTemplates': 'Professionaalsed mallid', + 'limited': 'Piiratud', + 'fullTemplates': 'Täielikud mallid', + 'professionalTerms': 'Professionaalsed terminid', + 'customTemplates': 'Kohandatud mallid', + 'visualMindMap': 'Visuaalne mõttekaart', + 'speakerIdentification': 'Kõneleja tuvastus', + 'aiVoiceEnhancement': 'AI hääle parandamine', + 'audioImport': 'Heli import', + 'multipleExportFormats': 'Mitmed ekspordivormingud', + 'professionalSummaryTemplates': 'Professionaalsed kokkuvõtte mallid', 'professionalTemplateDesc': - 'Professional template design to improve your work efficiency. Customized according to industry needs.', + 'Professionaalne mallidisain töö tõhususe suurendamiseks. Kohandatud vastavalt valdkonna vajadustele.', 'customTemplateDesc': - 'You can customize summary prompts according to your needs and use them to generate the required summaries.', + 'Saad kohandada kokkuvõtte prompt\'e vastavalt oma vajadustele ja kasutada neid soovitud kokkuvõtete loomiseks.', 'askAiDesc': - 'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.', + 'Tuvasta salvestustest sügavam teave ning loo ühe klõpsuga andmetabelid, arutelu põhilised järeldused, ülesannete loendid, aruande e-kirjad ja muu vormindatud sisu.', 'visualMindMapDesc': - 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', + 'Lisaks kokkuvõtetele — korralda ja visualiseeri võtmekohad mõttekaartidega, et kogu tekstist paremini aru saada.', 'templateCommunityDesc': - 'Discover, share, and get inspiration from the template library created by users.', + 'Avasta, jaga ja saa inspiratsiooni kasutajate loodud mallikogust.', 'speakerIdentificationDesc': - 'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.', + 'Heli transkriptsioon toetab kõneleja tuvastust ja taastab intuitiivsemalt koosoleku või telefonikõne sisu. Samuti on kokkuvõte täpsem.', 'privateCloudSyncDesc': - 'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.', + 'Sinu salvestused ja transkriptsioonid talletatakse turvaliselt spetsiaalsetes pilveserverites ning üles- ja allalaadimisel kasutatakse täielikku krüptimist, et tagada privaatsus ja turvalisus.', 'aiVoiceEnhancementDesc': - 'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.', + 'AI hääle parandamine toetab mitut mürasummutuse seadet, eemaldab nutikalt taustamüra, parandab hääle selgust ja helitaasesituse kvaliteeti.', 'audioImportDesc': - 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', + 'Impordi helifaile lihtsalt seadmest või kolmandate osapoolte rakendustest, näiteks helimärkmed, Google Drive jne.', 'multipleExportFormatsDesc': - 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - 'upgradeMembership': 'Upgrade Your Membership', - 'yearlySubscription': 'Yearly Subscription', - 'monthlySubscription': 'Monthly Subscription', - 'proMonthly': 'Pro ¥60/month', + 'Ekspordi oma helisalvestused, transkriptsioonitekstid ja kokkuvõtted erinevates vormingutes (TXT, PDF, JPEG) vastavalt vajadusele.', + 'upgradeMembership': 'Uuenda liikmelisust', + 'yearlySubscription': 'Aastatellimus', + 'monthlySubscription': 'Kuutellimus', + 'proMonthly': 'Pro ¥60/kuu', 'proMonthlyDesc': - '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', - 'sevenDayTrial': '7-day Free Trial', - 'unlimitedMonthly': 'Unlimited ¥120/month', + '7-päevane tasuta prooviperiood, seejärel ¥800/aastas. Tühista enne prooviperioodi lõppu.', + 'sevenDayTrial': '7-päevane tasuta prooviperiood', + 'unlimitedMonthly': 'Piiramatu ¥120/kuu', 'unlimitedMonthlyDesc': - '7-day free trial, then ¥1600/year. Cancel anytime before trial ends.', - 'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.', + '7-päevane tasuta prooviperiood, seejärel ¥1600/aastas. Tühista enne prooviperioodi lõppu.', + 'trialNote': + '*Tasuta prooviperiood 7 päeva, seejärel aastatasu; tühistada saab igal ajal.', 'proPrice': 'Pro ¥120', - 'proMonthlyPrice': '¥120/month', - 'subscribe': 'Subscribe', - 'unlimitedPrice': 'Unlimited ¥198', - 'unlimitedMonthlyPrice': '¥198/month', + 'proMonthlyPrice': '¥120/kuu', + 'subscribe': 'Telli', + 'unlimitedPrice': 'Piiramatu ¥198', + 'unlimitedMonthlyPrice': '¥198/kuu', 'upgradeNote': - '*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account', - 'buyMoreTranscriptionTime': 'Buy More Transcription Time', - 'sixThousandMinutes': '6,000 minutes', - 'threeThousandMinutes': '3,000 minutes', - 'sixHundredMinutes': '600 minutes', - 'oneHundredTwentyMinutes': '120 minutes', - 'validityPeriod': '*Validity Period: ', + '*Pärast tellimuse uuendamist arvutatakse algse tellimuse järelejäänud päevad automaatselt ja tagastatakse sinu maksekontole', + 'buyMoreTranscriptionTime': 'Osta rohkem transkriptsiooniaega', + 'sixThousandMinutes': '6 000 minutit', + 'threeThousandMinutes': '3 000 minutit', + 'sixHundredMinutes': '600 minutit', + 'oneHundredTwentyMinutes': '120 minutit', + 'validityPeriod': '*Kehtivusaeg: ', 'validityNote': - 'Activated immediately after purchase, valid for 2 years after activation.', - 'purchase': 'Purchase', + 'Aktiveeritakse kohe pärast ostu, kehtib 2 aastat pärast aktiveerimist.', + 'purchase': 'Osta', // Meeting模块 - 录音语言 - 'recordLanguage': 'Recording Language', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', + 'recordLanguage': 'Salvestuse keel', + 'cantonese': 'Kantoni', + 'sichuan': 'Sichuani murre', + 'shanghai': 'Shanghai murre', // Meeting模块 - 错误提示 - 'meetingUnknownLanguage': 'Unknown Language', + 'meetingUnknownLanguage': 'Tundmatu keel', 'analysisFailed': 'Analüüs ebaõnnestus, proovi hiljem uuesti', 'transcriptionFailed': 'Transkriptsioon ebaõnnestus, proovi hiljem uuesti', 'summaryFailed': 'Kokkuvõte ebaõnnestus, proovi hiljem uuesti', @@ -750,10 +764,10 @@ const Map etEE = { "translationRecharge": "Tõlke varundus", "meetingAssistantRecharge": "Koosoleku assistendi varundus", "cloudSync": "Pääsyvaraus cloud-synkronointiin", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "memberService": "Liikmeteenus", + "bindRewardTitle": "Preemiad", "bindRewardSimpleDesc": - "First bind device reward has been issued. Tap OK to close.", + "Esimese seadme sidumise preemia on väljastatud. Sulgemiseks puuduta OK.", "joinDevice": "Ühendatud seade:", "accountId": "Konto ID:", "systemSetting": "Süsteemi seaded", @@ -802,20 +816,20 @@ const Map etEE = { "loading": "Laadimine...", // 设备管理模块 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", - "deviceTypeSmartEye": "Smart Glasses", + "deviceTypeUnknown": "Tundmatu seade", + "deviceTypeClassicBluetoothHeadset": "Klassikaline Bluetooth peakomplekt", + "deviceTypeBleBluetoothHeadset": "BLE Bluetooth peakomplekt", + "deviceTypeSmartVoiceRecorder": "Nutikas helisalvesti", + "deviceTypeSmartEye": "Nutiprillid", "unbind": "Eemalda seos", - "noDevicesBound": "No devices bound yet", - "pleaseBindDeviceFirst": "Please bind a device first to manage", - "noMacAddress": "No MAC Address", - "licenseCode": "License Code", - "confirmUnbind": "Confirm Unbind", + "noDevicesBound": "Ühtegi seadet pole veel seotud", + "pleaseBindDeviceFirst": "Halduseks seo esmalt seade", + "noMacAddress": "MAC-aadress puudub", + "licenseCode": "Litsentsikood", + "confirmUnbind": "Kinnita seose eemaldamine", "confirmUnbindMessage": - "Are you sure you want to unbind device \"{deviceName}\"?", - "confirmUnbindAction": "Confirm Unbind", + "Kas oled kindel, et soovid seose eemaldada seadmelt \"{deviceName}\"?", + "confirmUnbindAction": "Kinnita", // Agent模块 - 主界面 "Lily": "Lily", @@ -845,22 +859,22 @@ const Map etEE = { "loadMoreMessages": "Laadi rohkem sõnumeid...", "loadFailedClickRetry": "Laadimine ebaõnnestus, klõpsa uuesti proovimiseks", "swipeUpForMore": "Libista üles rohkema jaoks", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 + "callingTool": "Aitan sind, palun oota!", // 正在帮您,请稍等! + "voice_interrupt": "Katkesta", // 语音打断 '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", // 今日天气 - "presetNews": "Today's news", // 今日新闻 - "presetFood": "Nearby food", // 美食 - "playSomeMusic": "Play some popular music", // 播放一些流行音乐 - "navigationTo": "Please help me navigate to", // 导航到 - "todayWeather": "How's the weather today?", // 今日天气 - "todayNews": "What's the news today?", // 今日新闻 - "nearbyFood": "What delicious food is nearby?", // 美食 + "presetMusic": "Mängi muusikat", // 来点音乐 + "presetNavigation": "Navigeeri sihtkohta", // 导航 + "presetWeather": "Tänane ilm", // 今日天气 + "presetNews": "Tänased uudised", // 今日新闻 + "presetFood": "Toit lähedal", // 美食 + "playSomeMusic": "Mängi populaarset muusikat", // 播放一些流行音乐 + "navigationTo": "Palun aita mul navigeerida sihtkohta", // 导航到 + "todayWeather": "Milline on täna ilm?", // 今日天气 + "todayNews": "Mis on tänased uudised?", // 今日新闻 + "nearbyFood": "Milline maitsev toit on lähedal?", // 美食 // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Tere! Olen **Lily**, saan sind aidata:\n\n' @@ -905,11 +919,11 @@ const Map etEE = { 'generatedByAi': 'AI poolt genereeritud', // Agent模块 - 工具调用 - 'toolCall': 'Tool Call', - 'noResult': 'No Result', - 'noToolCallContentToCopy': 'No tool call content to copy', - 'toolCallDetails': 'Tool Call Details:', - 'toolCallContentCopied': 'Tool call content copied to clipboard', + 'toolCall': 'Tööriista kutse', + 'noResult': 'Tulemus puudub', + 'noToolCallContentToCopy': 'Tööriista kutse sisu kopeerimiseks puudub', + 'toolCallDetails': 'Tööriista kutse üksikasjad:', + 'toolCallContentCopied': 'Tööriista kutse sisu kopeeriti lõikelauale', // Agent模块 - 音乐卡片 'recommendedMusic': 'Siin on mõned soovitatud muusikad:', @@ -932,27 +946,27 @@ const Map etEE = { "tsransit": "Ühistransport", // Agent模块 - 导航选择 - 'selectNavigationApp': 'Select Navigation App', + 'selectNavigationApp': 'Vali navigeerimisrakendus', 'amapMap': 'Amap', - 'useAmapNavigation': 'Navigate with Amap', + 'useAmapNavigation': 'Navigeeri Amapiga', 'baiduMap': 'Baidu Maps', - 'useBaiduNavigation': 'Navigate with Baidu Maps', + 'useBaiduNavigation': 'Navigeeri Baidu Mapsiga', 'googleMap': 'Google Maps', - 'useGoogleNavigation': 'Navigate with Google Maps', + 'useGoogleNavigation': 'Navigeeri Google Mapsiga', 'appleMap': 'Apple Maps', - 'useAppleNavigation': 'Navigate with Apple Maps', - 'builtInNavigation': 'Built-in Navigation', - 'useBuiltInNavigation': 'Navigate with built-in map', - 'navigationStartFailed': 'Failed to start navigation', + 'useAppleNavigation': 'Navigeeri Apple Mapsiga', + 'builtInNavigation': 'Sisseehitatud navigatsioon', + 'useBuiltInNavigation': 'Navigeeri sisseehitatud kaardiga', + 'navigationStartFailed': 'Navigatsiooni käivitamine ebaõnnestus', 'cannotPlayMusicListRetryLater': - 'Cannot play music list, please try again later', - 'cannotPlaySong': 'Cannot play song', - 'openMapError': 'Error opening map', - 'pleaseInstallAmapApp': 'Please install the Amap app first', - 'pleaseInstallBaiduMapApp': 'Please install the Baidu Maps app first', - 'appleMapStartFailed': 'Apple Maps failed to start', - 'appleMapUnavailable': 'Apple Maps unavailable', - 'openAppleMapError': 'Error opening Apple Maps', + 'Esitusloendit ei saa esitada, proovi hiljem uuesti', + 'cannotPlaySong': 'Lugu ei saa esitada', + 'openMapError': 'Viga kaardi avamisel', + 'pleaseInstallAmapApp': 'Paigalda esmalt Amapi rakendus', + 'pleaseInstallBaiduMapApp': 'Paigalda esmalt Baidu Mapsi rakendus', + 'appleMapStartFailed': 'Apple Mapsi käivitamine ebaõnnestus', + 'appleMapUnavailable': 'Apple Maps pole saadaval', + 'openAppleMapError': 'Viga Apple Mapsi avamisel', // Agent模块 - 天气卡片 'weatherQuery': 'Ilma päring:', @@ -1005,8 +1019,8 @@ const Map etEE = { "strongWind": "Tugev tuul", // 翻译模块 - 中间层 - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", + "pictureTranslation": "Pilditõlge", + "textTranslation": "Tekstitõlge", // 翻译模块 - 主页 "translationHistory": "Tõlke ajalugu", @@ -1016,33 +1030,33 @@ const Map etEE = { "phoneUser": "Telefoni kasutaja", "selectSourceLanguage": "Vali lähtekeel", "selectTargetLanguage": "Vali sihtkeel", - "me": "Me", - "counterPart": "Counterpart", + "me": "Mina", + "counterPart": "Vestluspartner", "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - "autoDetect": "Auto Detect", // 自动检测 + "Veendu, et Bluetooth-peakomplekt on telefoniga ühendatud ja kõne on käimas", + "autoDetect": "Automaatne tuvastus", // 自动检测 // 翻译模块 - 文本翻译 - "languageDetectionFailed": "Language detection failed", + "languageDetectionFailed": "Keele tuvastamine ebaõnnestus", // 翻译模块 - 悬浮窗与权限 - 'disableFloatingWindow': 'Disable Floating Window', - 'enableFloatingWindow': 'Enable Floating Window', - 'permissionTip': 'Permission Tip', + 'disableFloatingWindow': 'Keela ujuvaken', + 'enableFloatingWindow': 'Luba ujuvaken', + 'permissionTip': 'Lubade teade', 'micPermissionRequiredForRecording': - 'Microphone permission is required for recording', - 'deleteTranslationRecordError': 'Error deleting translation record: @error', - "translationFailed": "Translation failed", - "translating": "Translating", - "translate": "Translate", - "pleaseInputText": "Please input text", + 'Salvestamiseks on vajalik mikrofoni luba', + 'deleteTranslationRecordError': 'Viga tõlkekirje kustutamisel: @error', + "translationFailed": "Tõlge ebaõnnestus", + "translating": "Tõlkimine", + "translate": "Tõlgi", + "pleaseInputText": "Palun sisesta tekst", "inputTextToTranslate": "Palun sisestage tõlgitav tekst", - "textTooLong": "Text too long, max 5000 characters", + "textTooLong": "Tekst on liiga pikk, maksimaalselt 5000 märki", // 翻译模块 - 历史记录 "noTranslationHistory": "Tõlke ajalugu puudub", - "historyRecords": "History Records", - "clearResults": "Clear Results", + "historyRecords": "Ajaloo kirjed", + "clearResults": "Puhasta tulemused", "clearHistory": "Tühjenda ajalugu", "clearHistoryConfirm": "Kas oled kindel, et tahad kogu tõlke ajaloo tühjendada? Seda toimingut ei saa tagasi võtta.", @@ -1052,55 +1066,55 @@ const Map etEE = { "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", + "selectImageSource": "Vali pildi allikas", + "imagePreview": "Pildi eelvaade", + "translationResult": "Tõlke tulemus", + "recognitionResult": "Tuvastamise tulemus", + "translatedImagePreview": "Tõlgitud pildi eelvaade", + "translatedImageLoadFailed": "Tõlgitud pildi laadimine ebaõnnestus", + "pleaseSelectImage": "Palun vali pilt", + "imageLoadFailed": "Pildi laadimine ebaõnnestus", + "imageQuality": "Pildi kvaliteet", + "maxSize": "Maks. suurus", + "close": "Sule", + "setImageQuality": "Määra pildi kvaliteet", + "currentQuality": "Praegune kvaliteet: @value%", + "setMaxSize": "Määra maks. suurus", + "currentMaxSize": "Praegu: @pxpx", + "waitingForAction": "Ootan toimingut", + "pleaseSelectImageToStart": "Alustamiseks vali pilt", + "chooseImage": "Vali pilt", + "openingCamera": "Kaamera avamine...", + "openingPhotoAlbum": "Fotoalbumi avamine...", + "cancelled": "Tühistatud", + "userCancelledSelection": "Kasutaja tühistas valiku", + "translatingImage": "Pildi tõlkimine", + "callingImageTranslateService": "Pilditõlke teenuse kutsumine...", + "savingRecord": "Kirje salvestamine", + "savingTranslationResult": "Tõlketulemuse salvestamine...", + "translationCompleted": "Tõlge valmis", + "allStepsCompleted": "Kõik sammud lõpetatud", + "processingFailed": "Töötlemine ebaõnnestus", "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", + "Pildi töötlemine või tõlkimine ebaõnnestus. Proovi uuesti.\nViga: {error}", + "imageTooLarge": "Pildi suurus ületab 4 MB piiri", "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", + "Pildi suurus ületab 4 MB. Vähenda kvaliteeti või mõõtmeid ja proovi uuesti", + "emptyTranslationResult": "Pilditõlke API tagastas tühja tulemuse", "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", + "Pildi tõlkimine ebaõnnestus. Võrgu probleem või päringulimiit. Proovi hiljem", "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", + "Pilditõlke API erand. Kontrolli võrku ja proovi uuesti", + "permissionRequired": "Luba on vajalik", + "cameraPermissionRequired": "Pildistamiseks on vajalik kaamera luba", "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", + "Piltide valimiseks on vajalik fotoalbumi luba", + "translationDetails": "Tõlke üksikasjad", + "originalImage": "Algne pilt", + "sourceLanguage": "Lähte keel", + "targetLanguage": "Sihtkeel", + "translationTime": "Tõlke aeg", + "shareInDevelopment": "Jagamise funktsioon on arenduses", // 翻译模块 - 录音文件 "translateAudioFiles": "Tõlgi helifailid", @@ -1152,8 +1166,8 @@ const Map etEE = { 'deleteAccount': 'Kustuta konto', 'deleteAccountTips': '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?', + 'clean': 'Tühjenda vahemälu', + 'cleanTips': 'Kas oled kindel, et soovid isikliku vahemälu tühjendada?', 'networkConnectionFailed': 'Võrguühendus ebaõnnestus, kontrolli võrgu seadeid ja proovi uuesti', 'serverTemporarilyUnavailable': @@ -1195,32 +1209,32 @@ const Map etEE = { 'AccountService lähtestatud', // AccountService 已初始化 // 权限模块 - 'meetingStoragePermission': 'Storage', + 'meetingStoragePermission': 'Salvestusruum', 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', + 'Vajame salvestusruumi luba, et saaksid valida ja üles laadida helifaile.', 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', + 'Tuvastasime, et oled salvestusruumi loa püsivalt keelanud. Funktsiooni jätkamiseks ava rakenduse seaded ja luba salvestusruumi luba käsitsi.', 'getPermissionStatusFailed': 'Lubade oleku hankimine ebaõnnestus', 'communicationPermissions': 'Suhtluse load', - 'bluetoothPermissions': 'Bluetooth Permissions', - 'notificationPermissions': 'Notification Permissions', - 'storagePermissions': 'Storage Permissions', - 'microphonePermissions': 'Microphone Permissions', - 'alarmPermissions': 'Alarm Permissions', + 'bluetoothPermissions': 'Bluetoothi load', + 'notificationPermissions': 'Teavituste load', + 'storagePermissions': 'Salvestusruumi load', + 'microphonePermissions': 'Mikrofoni load', + 'alarmPermissions': 'Äratuse load', 'calendarPermissions': 'Kalendri load', 'locationPermissions': 'Asukoha load', 'phone': 'Telefon', 'sms': 'SMS', - 'contacts': 'Contacts', - 'notification': 'Notification', - 'alarm': 'Alarm', + 'contacts': 'Kontaktid', + 'notification': 'Teavitused', + 'alarm': 'Äratus', 'calendarWrite': 'Kalendri kirjutamine', 'calendarFullAccess': 'Kalendri täielik ligipääs', 'locationInfo': 'Asukoha info', 'phonePermissionDesc': 'Kasutatakse telefonikõnede funktsiooni jaoks', 'smsPermissionDesc': 'Kasutatakse SMS saatmise funktsiooni jaoks', 'alarmPermissionDesc': - 'Used to set exact alarms to ensure reminders trigger on time', + 'Kasutatakse täpsete äratuste seadistamiseks, et meeldetuletused käivituksid õigel ajal', 'calendarWritePermissionDesc': 'Kasutatakse kalendri sündmuste ja meeldetuletuste loomiseks', 'calendarFullAccessPermissionDesc': @@ -1237,71 +1251,73 @@ const Map etEE = { 'phonePermissionDetailDesc': 'Telefonikõnede funktsioon vajab telefoni luba', 'smsPermissionDetailDesc': 'SMS saatmise funktsioon vajab SMS luba', 'alarmPermissionDetailDesc': - 'This permission is required to set exact alarms and ensure reminders trigger on time', + 'See luba on vajalik täpsete äratuste seadistamiseks ja meeldetuletuste õigeaegseks käivitumiseks', 'calendarWritePermissionDetailDesc': 'Kalendri sündmuste loomine vajab kalendri kirjutamise luba', 'calendarFullAccessPermissionDetailDesc': 'Kalendri sündmuste haldamine vajab kalendri täielikku luba', 'locationPermissionDetailDesc': 'Asukoha info hankimine vajab asukoha luba', - 'contactsPermissionDesc': 'Used for accessing contact information', + 'contactsPermissionDesc': 'Kontaktteabe kasutamiseks', 'contactsPermissionDetailDesc': - 'Phone call and SMS functionality requires contacts permission to select contacts', + 'Kõne ja SMS funktsioon vajab kontaktide luba kontaktide valimiseks', 'bluetoothPermissionDesc': - 'Used for connecting and managing Bluetooth devices', + 'Kasutatakse Bluetoothi seadmete ühendamiseks ja haldamiseks', 'bluetoothPermissionDetailDesc': - 'Connecting to Bluetooth headphones and other devices requires Bluetooth permission', - 'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices', + 'Bluetooth kõrvaklappide ja teiste seadmete ühendamiseks on vajalik Bluetoothi luba', + 'bluetoothScanPermissionDesc': + 'Kasutatakse lähedal olevate Bluetoothi seadmete otsimiseks', 'bluetoothScanPermissionDetailDesc': - 'Scanning for nearby Bluetooth devices requires Bluetooth scan permission', - 'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices', + 'Lähedal olevate Bluetoothi seadmete otsimiseks on vajalik Bluetoothi skaneerimise luba', + 'bluetoothConnectPermissionDesc': + 'Kasutatakse Bluetoothi seadmetega ühenduse loomiseks', 'bluetoothConnectPermissionDetailDesc': - 'Connecting to Bluetooth devices requires Bluetooth connect permission', - 'notificationPermissionDesc': 'Used for sending notification messages', + 'Bluetoothi seadmetega ühenduse loomiseks on vajalik Bluetoothi ühendamise luba', + 'notificationPermissionDesc': 'Kasutatakse teavituste saatmiseks', 'notificationPermissionDetailDesc': - 'App needs notification permission to send you important alerts and messages', + 'Rakendus vajab teavituste luba, et saata olulisi hoiatusi ja sõnumeid', 'appNeedsPermissionForFullFunction': 'Rakendus vajab seda luba täieliku funktsionaalsuse pakkumiseks', 'permanentDenialText': 'Oled püsivalt keeldunud {permission} loast, mine rakenduse seadetesse selle lubamiseks', 'goToSettings': 'Mine seadetesse', - 'bluetoothScan': 'Bluetooth Scan', - 'bluetoothConnect': 'Bluetooth Connect', + 'bluetoothScan': 'Bluetoothi skaneerimine', + 'bluetoothConnect': 'Bluetoothi ühendamine', 'bluetoothScanExplanation': - 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', + 'Rakendus vajab Bluetoothi skaneerimise luba, et otsida lähedal asuvaid Bluetoothi seadmeid.', 'bluetoothConnectExplanation': - 'The app needs Bluetooth connect permission to connect to Bluetooth devices.', + 'Rakendus vajab Bluetoothi ühendamise luba, et ühenduda Bluetoothi seadmetega.', 'locationForBluetoothExplanation': - 'The app needs location permission to scan Bluetooth devices.', + 'Rakendus vajab asukoha luba Bluetoothi seadmete otsimiseks.', 'bluetoothScanPermanentDenial': - 'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.', + 'Bluetoothi skaneerimise luba on püsivalt keelatud, ava seaded ja luba see käsitsi.', 'bluetoothConnectPermanentDenial': - 'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.', + 'Bluetoothi ühendamise luba on püsivalt keelatud, ava seaded ja luba see käsitsi.', 'locationPermanentDenial': - 'Location permission has been permanently denied, please go to settings to enable it manually.', - 'notificationPermission': 'Notification', - 'locationPermission': 'Location', + 'Asukoha luba on püsivalt keelatud, ava seaded ja luba see käsitsi.', + 'notificationPermission': 'Teavitused', + 'locationPermission': 'Asukoht', 'notificationPermissionExplanation': - 'Notification permission is required to display music playback status.', + 'Teavituste luba on vajalik muusika taasesituse oleku kuvamiseks.', 'locationPermissionExplanation': - 'Location permission is required to get current location.', + 'Asukoha luba on vajalik praeguse asukoha saamiseks.', 'notificationPermissionPermanentDenial': - 'You have permanently denied notification permission, please go to settings to enable it.', + 'Oled teavituste loa püsivalt keelanud, ava seaded ja luba see.', 'locationPermissionPermanentDenial': - 'You have permanently denied location permission, please go to settings to enable it.', - 'storagePermission': 'Storage', + 'Oled asukoha loa püsivalt keelanud, ava seaded ja luba see.', + 'storagePermission': 'Salvestusruum', 'microphonePermissionExplanation': - 'We need microphone permission to record audio content.', + 'Vajame mikrofoni luba heli salvestamiseks.', 'storagePermissionExplanation': - 'We need storage permission so you can select and upload audio files.', + 'Vajame salvestusruumi luba, et saaksid valida ja üles laadida helifaile.', 'microphonePermissionPermanentDenial': - 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', + 'Mikrofoni luba on püsivalt keelatud. Funktsiooni jätkamiseks ava rakenduse seaded ja luba mikrofoni luba käsitsi.', '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', + 'Salvestusruumi luba on püsivalt keelatud. Funktsiooni jätkamiseks ava rakenduse seaded ja luba salvestusruumi luba käsitsi.', + 'permissionUtilNeed': 'Vajalik ', + 'permissionUtilPermission': ' luba', + 'permissionUtilRestricted': ' luba on piiratud', 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'See funktsioon pole saadaval või on sellel seadmel piiratud; kontrolli seadme seadeid või süsteemi piiranguid', 'permissionUtilConfirm': 'OK', // 原生前台服务通知(Android) @@ -1387,27 +1403,27 @@ const Map etEE = { 'bleConnectionFailed': 'BLE ühendus ebaõnnestus', 'deviceAuthorizationFailedCheckCode': 'Seadme autoriseerimine ebaõnnestus, kontrolli autoriseerimiskoodi', - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + 'bluetoothGuideTitle': + 'Bluetoothi käsitsi sisselülitamine on vajalik', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'Palun järgi neid samme:', // 请按照以下步骤操作: 'bluetoothGuideStep1': - 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'Lülita Bluetooth sisse: Seaded → Bluetooth → Sees', // 开启蓝牙:设置 → 蓝牙 → 开启 'bluetoothGuideStep2': - 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 - 'bluetoothGuideStep3': - 'Return to app to continue pairing process', // 返回应用继续配对流程 + 'Ühenda seade: leia oma seade jaotisest „Minu seadmed” ning puuduta ühendamiseks', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'bluetoothGuideStep3': 'Naase rakendusse, et jätkata sidumist', // 返回应用继续配对流程 'bluetoothGuideTip': - 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': 'I Know', // 我知道了 + 'Nõuanne: saad juhtimiskeskuses Bluetooth ikooni pikalt vajutades kiiresti Bluetoothi seadetesse', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + 'iKnow': 'Sain aru', // 我知道了 // 配对模块 - 绑定奖励 - "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:", + "firstBindRewardTitle": "Tervituspreemia", + "firstBindRewardDesc": "Oled saanud sidumise preemiad.", + "vipLevelLabel": "VIP tase:", + "expiryLabel": "Kehtiv kuni:", + "notActivated": "Pole aktiveeritud", + "aiChatCreditsLabel": "AI vestluse krediidid:", + "translationCreditsLabel": "Tõlke krediidid:", + "meetingCreditsLabel": "Koosoleku krediidid:", "ok": "OK", // 用户反馈模块 @@ -1437,13 +1453,14 @@ const Map etEE = { "connectionFailed": "Ühendus ebaõnnestus", "retryConnection": "Proovi ühendust uuesti", "ota_updateNow": "Uuenda kohe", - "otaVersionInfoFailed": "Failed to get version info. Please try again later.", + "otaVersionInfoFailed": + "Versiooni info hankimine ebaõnnestus. Proovi hiljem uuesti.", "otaDeviceInfoUnavailable": - "Unable to get device info. Please check the connection and retry.", + "Seadme infot ei õnnestu hankida. Kontrolli ühendust ja proovi uuesti.", "otaProductInfoUnavailable": - "Unable to identify the device. Please reconnect and retry.", + "Seadet ei õnnestu tuvastada. Ühenda uuesti ja proovi uuesti.", "otaFirmwareVersionInvalid": - "Firmware version is abnormal. Please reconnect and retry.", + "Püsivara versioon on vigane. Ühenda uuesti ja proovi uuesti.", "keepConnectedDontClose": "Hoia seade ühendatuna, ära sulge rakendust", "doNotDisconnect": "Ära ühenda lahti", "charging": "Laadimine", @@ -1452,57 +1469,57 @@ const Map etEE = { "Võta mõlemad kõrvaklapid välja ja veendu, et mõlema aku on üle 20%", // OTA升级模块 - 弹窗与对话框 - 'otaNewVersionFoundWithVersion': 'New version @version found', - 'otaConfirmUpdateNow': 'Update now?', - 'otaUpdate': 'Update', - 'otaUpgradeSuccess': 'Upgrade Successful', + 'otaNewVersionFoundWithVersion': 'Leiti uus versioon @version', + 'otaConfirmUpdateNow': 'Uuendada nüüd?', + 'otaUpdate': 'Uuenda', + 'otaUpgradeSuccess': 'Uuendus õnnestus', 'otaUpgradeCompleteRepair': - 'Firmware upgrade complete!\n\nDevice needs to be re-paired to work properly. Go to pairing page now?', - 'otaPairLater': 'Pair Later', - 'otaPairNow': 'Pair Now', + 'Püsivara uuendus on lõpetatud!\n\nSeade tuleb korralikuks toimimiseks uuesti siduda. Kas minna nüüd sidumise lehele?', + 'otaPairLater': 'Sidu hiljem', + 'otaPairNow': 'Sidu nüüd', 'okConfirm': 'OK', // OTA升级模块 - 设备检查 - 'otaBleCheckErrorWithError': 'Error checking BLE connection: @error', - 'otaBleNotConnected': 'BLE Device Not Connected', + 'otaBleCheckErrorWithError': 'Viga BLE ühenduse kontrollimisel: @error', + 'otaBleNotConnected': 'BLE seade pole ühendatud', 'otaBleNeedConnection': - 'Firmware upgrade requires BLE device connection\nPlease ensure device is properly connected and try again', - 'otaDeviceInfoUnavailableTitle': 'Device Info Unavailable', + 'Püsivara uuendus vajab BLE ühendust\nVeendu, et seade on õigesti ühendatud, ja proovi uuesti', + 'otaDeviceInfoUnavailableTitle': 'Seadme info pole saadaval', 'otaCannotGetDeviceInfo': - 'Cannot get device info\nPlease reconnect device or try again later', - 'otaBleCheckFailed': 'BLE Connection Check Failed', + 'Seadme infot ei saa hankida\nÜhenda seade uuesti või proovi hiljem', + 'otaBleCheckFailed': 'BLE ühenduse kontroll ebaõnnestus', 'otaCannotGetDeviceInfoCheckConnection': - 'Cannot get device info, please check device connection', + 'Seadme infot ei saa hankida, kontrolli ühendust', 'otaCannotGetProductInfoWithName': - 'Cannot get product info, device name: @deviceName', - 'otaCannotGetBatteryInfo': 'Cannot get valid battery info', - 'otaLowBattery': 'Low Battery', + 'Toote infot ei saa hankida, seadme nimi: @deviceName', + 'otaCannotGetBatteryInfo': 'Kehtivat aku infot ei saa hankida', + 'otaLowBattery': 'Madal aku', 'otaSingleBatteryLow': - 'Device battery too low for firmware upgrade\nRequirement: battery must be above 20%\nCurrent: @ear @battery%\nPlease charge and try again', + 'Seadme aku on püsivara uuenduseks liiga madal\nNõue: aku peab olema üle 20%\nPraegu: @ear @battery%\nLae ja proovi uuesti', 'otaDoubleBatteryLow': - 'Device battery too low for firmware upgrade\nRequirement: both earbuds must be above 20%\nCurrent: Left @left%, Right @right%\nPlease charge and try again', - 'otaBatteryCheckFailed': 'Battery Check Failed', + 'Seadme aku on püsivara uuenduseks liiga madal\nNõue: mõlemad kõrvaklapid peavad olema üle 20%\nPraegu: Vasak @left%, Parem @right%\nLae ja proovi uuesti', + 'otaBatteryCheckFailed': 'Aku kontroll ebaõnnestus', // OTA升级模块 - 升级状态 'otaDefaultUpdateDesc': - 'This update includes performance optimizations and bug fixes.', - 'otaGetLatestVersionFailed': 'Failed to get latest version info', - 'otaGetVersionInfoFailed': 'Failed to get version info', - 'otaCheckingDeviceStatus': 'Checking device status...', + 'See uuendus sisaldab jõudluse optimeerimisi ja veaparandusi.', + 'otaGetLatestVersionFailed': 'Viimase versiooni info hankimine ebaõnnestus', + 'otaGetVersionInfoFailed': 'Versiooni info hankimine ebaõnnestus', + 'otaCheckingDeviceStatus': 'Seadme oleku kontrollimine...', 'otaDownloadFailedCheckNetwork': - 'Download failed, please check network connection', - 'otaDownloadFailed': 'Download Failed', - 'otaPreparingConnection': 'Preparing device connection...', - 'otaConnectingDevice': 'Connecting to device...', - 'otaUpgradeStarted': 'OTA upgrade started...', - 'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%', - 'otaUpgradeSuccessComplete': 'Upgrade completed successfully', - 'otaUpgradeFailedWithCode': 'Upgrade failed, error code: @code', - 'otaUpgradeFailedTitle': 'Upgrade Failed', + 'Allalaadimine ebaõnnestus, kontrolli võrguühendust', + 'otaDownloadFailed': 'Allalaadimine ebaõnnestus', + 'otaPreparingConnection': 'Seadme ühenduse ettevalmistamine...', + 'otaConnectingDevice': 'Seadmega ühendamine...', + 'otaUpgradeStarted': 'OTA uuendus alustatud...', + 'otaUpgradeProgressWithPercent': 'Uuenduse edenemine: @percent%', + 'otaUpgradeSuccessComplete': 'Uuendus lõpetati edukalt', + 'otaUpgradeFailedWithCode': 'Uuendus ebaõnnestus, veakood: @code', + 'otaUpgradeFailedTitle': 'Uuendus ebaõnnestus', 'otaUpgradeFailedDesc': - 'Please check device connection or update package, error code: @code', - 'otaDeviceDisconnected': 'Device disconnected', - 'otaDeviceConnected': 'Device connected', + 'Kontrolli seadme ühendust või uuenduspaketti, veakood: @code', + 'otaDeviceDisconnected': 'Seade ühendus katkestati', + 'otaDeviceConnected': 'Seade on ühendatud', // 音乐模块 "noMusic": "Muusikat pole", // 暂无音乐 diff --git a/lib/core/translations/language/fa_ir.dart b/lib/core/translations/language/fa_ir.dart index 3ab580e1f..395f28faf 100644 --- a/lib/core/translations/language/fa_ir.dart +++ b/lib/core/translations/language/fa_ir.dart @@ -1,3 +1,4 @@ +//伊朗-波斯语 const Map faIR = { // 通用 'continue': 'ادامه', @@ -21,8 +22,8 @@ const Map faIR = { "justNow": "همین الان", "minutesAgo": "@minutes دقیقه پیش", "yesterday": "دیروز", - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", + "daysAgo": "@days روز پیش", + "hoursAgo": "@hours ساعت پیش", // 启动页 "slogan": "دنیا را متصل کن، فراتر از صدا", @@ -1073,33 +1074,32 @@ const Map faIR = { "openingPhotoAlbum": "در حال باز کردن آلبوم عکس...", "cancelled": "لغو شد", "userCancelledSelection": "کاربر انتخاب را لغو کرد", - "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", + "translatingImage": "در حال ترجمه تصویر", + "callingImageTranslateService": "در حال فراخوانی سرویس ترجمه تصویر...", + "savingRecord": "در حال ذخیره رکورد", + "savingTranslationResult": "در حال ذخیره نتیجه ترجمه...", + "translationCompleted": "ترجمه تکمیل شد", + "allStepsCompleted": "تمام مراحل تکمیل شد", + "processingFailed": "پردازش ناموفق بود", "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", + "پردازش تصویر یا ترجمه ناموفق بود. لطفاً دوباره تلاش کنید.\nخطا: {error}", + "imageTooLarge": "حجم تصویر از محدودیت ۴ مگابایت بیشتر است", "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", + "حجم تصویر از ۴ مگابایت بیشتر است. کیفیت یا ابعاد را کاهش دهید و دوباره تلاش کنید", + "emptyTranslationResult": "API ترجمه تصویر نتیجه‌ای خالی برگرداند", "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", + "استثنای API ترجمه تصویر. شبکه را بررسی کنید و دوباره تلاش کنید", + "permissionRequired": "نیاز به مجوز", + "cameraPermissionRequired": "برای گرفتن عکس، مجوز دوربین لازم است", + "photoAlbumPermissionRequired": "برای انتخاب تصویر، مجوز آلبوم عکس لازم است", + "translationDetails": "جزئیات ترجمه", + "originalImage": "تصویر اصلی", + "sourceLanguage": "زبان مبدأ", + "targetLanguage": "زبان مقصد", + "translationTime": "زمان ترجمه", + "shareInDevelopment": "قابلیت اشتراک‌گذاری در حال توسعه است", // 翻译模块 - 录音文件 "translateAudioFiles": "ترجمه فایل‌های صوتی", @@ -1279,7 +1279,7 @@ const Map faIR = { 'bluetoothConnectPermanentDenial': 'مجوز اتصال بلوتوث برای همیشه رد شده است، لطفاً برای فعال کردن آن به صورت دستی به تنظیمات بروید.', 'locationPermanentDenial': - 'Location permission has been permanently denied, please go to settings to enable it manually.', + 'مجوز موقعیت مکانی برای همیشه رد شده است، لطفاً برای فعال کردن آن به صورت دستی به تنظیمات بروید.', 'notificationPermission': 'اعلان', 'locationPermission': 'موقعیت مکانی', 'notificationPermissionExplanation': @@ -1406,14 +1406,14 @@ 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:", + "firstBindRewardTitle": "مباحث ویژه", + "firstBindRewardDesc": "شما به جای награدهای معمولی دریافت خواهید کرد.", + "vipLevelLabel": "VIP سطح:", + "expiryLabel": "تTL:", + "notActivated": "نامفعال", + "aiChatCreditsLabel": "اعتبار چت AI:", + "translationCreditsLabel": "اعتبار ترجمه:", + "meetingCreditsLabel": "مباحث:", "ok": "OK", // 用户反馈模块 @@ -1443,13 +1443,14 @@ const Map faIR = { "connectionFailed": "اتصال ناموفق", "retryConnection": "تلاش مجدد برای اتصال", "ota_updateNow": "اکنون به‌روزرسانی کن", - "otaVersionInfoFailed": "Failed to get version info. Please try again later.", + "otaVersionInfoFailed": + "دریافت اطلاعات نسخه ناموفق بود. لطفاً بعداً دوباره تلاش کنید.", "otaDeviceInfoUnavailable": - "Unable to get device info. Please check the connection and retry.", + "امکان دریافت اطلاعات دستگاه نیست. لطفاً اتصال را بررسی کرده و دوباره تلاش کنید.", "otaProductInfoUnavailable": - "Unable to identify the device. Please reconnect and retry.", + "شناسایی دستگاه ممکن نیست. لطفاً دوباره وصل کنید و تلاش کنید.", "otaFirmwareVersionInvalid": - "Firmware version is abnormal. Please reconnect and retry.", + "نسخه سفت‌افزار غیرعادی است. لطفاً دوباره وصل کنید و تلاش کنید.", "keepConnectedDontClose": "لطفاً دستگاه را متصل نگه دارید، برنامه را نبندید", "doNotDisconnect": "اتصال را قطع نکنید", "charging": "در حال شارژ", @@ -1458,57 +1459,57 @@ const Map faIR = { "هر دو ایرباد را بردارید و اطمینان حاصل کنید که سطح باتری بالای ۲۰٪ است", // OTA升级模块 - 弹窗与对话框 - 'otaNewVersionFoundWithVersion': 'New version @version found', - 'otaConfirmUpdateNow': 'Update now?', - 'otaUpdate': 'Update', - 'otaUpgradeSuccess': 'Upgrade Successful', + 'otaNewVersionFoundWithVersion': 'نسخه جدید @version پیدا شد', + 'otaConfirmUpdateNow': 'اکنون به‌روزرسانی شود؟', + 'otaUpdate': 'به‌روزرسانی', + 'otaUpgradeSuccess': 'ارتقا با موفقیت انجام شد', 'otaUpgradeCompleteRepair': - 'Firmware upgrade complete!\n\nDevice needs to be re-paired to work properly. Go to pairing page now?', - 'otaPairLater': 'Pair Later', - 'otaPairNow': 'Pair Now', + 'ارتقای سفت‌افزار کامل شد!\n\nبرای عملکرد صحیح، دستگاه باید دوباره جفت شود. اکنون به صفحه جفت‌سازی بروید؟', + 'otaPairLater': 'بعداً جفت شود', + 'otaPairNow': 'اکنون جفت شود', 'okConfirm': 'OK', // OTA升级模块 - 设备检查 - 'otaBleCheckErrorWithError': 'Error checking BLE connection: @error', - 'otaBleNotConnected': 'BLE Device Not Connected', + 'otaBleCheckErrorWithError': 'خطا در بررسی اتصال BLE: @error', + 'otaBleNotConnected': 'دستگاه BLE متصل نیست', 'otaBleNeedConnection': - 'Firmware upgrade requires BLE device connection\nPlease ensure device is properly connected and try again', - 'otaDeviceInfoUnavailableTitle': 'Device Info Unavailable', + 'ارتقای سفت‌افزار به اتصال دستگاه BLE نیاز دارد\nلطفاً مطمئن شوید دستگاه به درستی متصل است و دوباره تلاش کنید', + 'otaDeviceInfoUnavailableTitle': 'اطلاعات دستگاه در دسترس نیست', 'otaCannotGetDeviceInfo': - 'Cannot get device info\nPlease reconnect device or try again later', - 'otaBleCheckFailed': 'BLE Connection Check Failed', + 'امکان دریافت اطلاعات دستگاه نیست\nلطفاً دستگاه را دوباره متصل کنید یا بعداً تلاش کنید', + 'otaBleCheckFailed': 'بررسی اتصال BLE ناموفق بود', 'otaCannotGetDeviceInfoCheckConnection': - 'Cannot get device info, please check device connection', + 'امکان دریافت اطلاعات دستگاه نیست، لطفاً اتصال دستگاه را بررسی کنید', 'otaCannotGetProductInfoWithName': - 'Cannot get product info, device name: @deviceName', - 'otaCannotGetBatteryInfo': 'Cannot get valid battery info', - 'otaLowBattery': 'Low Battery', + 'امکان دریافت اطلاعات محصول نیست، نام دستگاه: @deviceName', + 'otaCannotGetBatteryInfo': 'امکان دریافت اطلاعات معتبر باتری نیست', + 'otaLowBattery': 'باتری کم', 'otaSingleBatteryLow': - 'Device battery too low for firmware upgrade\nRequirement: battery must be above 20%\nCurrent: @ear @battery%\nPlease charge and try again', + 'باتری دستگاه برای ارتقای سفت‌افزار خیلی کم است\nشرط: باتری باید بالای ۲۰٪ باشد\nفعلی: @ear @battery%\nلطفاً شارژ کنید و دوباره تلاش کنید', 'otaDoubleBatteryLow': - 'Device battery too low for firmware upgrade\nRequirement: both earbuds must be above 20%\nCurrent: Left @left%, Right @right%\nPlease charge and try again', - 'otaBatteryCheckFailed': 'Battery Check Failed', + 'باتری دستگاه برای ارتقای سفت‌افزار خیلی کم است\nشرط: هر دو ایرباد باید بالای ۲۰٪ باشند\nفعلی: چپ @left٪، راست @right٪\nلطفاً شارژ کنید و دوباره تلاش کنید', + 'otaBatteryCheckFailed': 'بررسی باتری ناموفق بود', // OTA升级模块 - 升级状态 'otaDefaultUpdateDesc': - 'This update includes performance optimizations and bug fixes.', - 'otaGetLatestVersionFailed': 'Failed to get latest version info', - 'otaGetVersionInfoFailed': 'Failed to get version info', - 'otaCheckingDeviceStatus': 'Checking device status...', + 'این به‌روزرسانی شامل بهینه‌سازی عملکرد و رفع باگ‌هاست.', + 'otaGetLatestVersionFailed': 'دریافت اطلاعات آخرین نسخه ناموفق بود', + 'otaGetVersionInfoFailed': 'دریافت اطلاعات نسخه ناموفق بود', + 'otaCheckingDeviceStatus': 'در حال بررسی وضعیت دستگاه...', 'otaDownloadFailedCheckNetwork': - 'Download failed, please check network connection', - 'otaDownloadFailed': 'Download Failed', - 'otaPreparingConnection': 'Preparing device connection...', - 'otaConnectingDevice': 'Connecting to device...', - 'otaUpgradeStarted': 'OTA upgrade started...', - 'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%', - 'otaUpgradeSuccessComplete': 'Upgrade completed successfully', - 'otaUpgradeFailedWithCode': 'Upgrade failed, error code: @code', - 'otaUpgradeFailedTitle': 'Upgrade Failed', + 'دانلود ناموفق بود، لطفاً اتصال شبکه را بررسی کنید', + 'otaDownloadFailed': 'دانلود ناموفق بود', + 'otaPreparingConnection': 'در حال آماده‌سازی اتصال دستگاه...', + 'otaConnectingDevice': 'در حال اتصال به دستگاه...', + 'otaUpgradeStarted': 'ارتقای OTA آغاز شد...', + 'otaUpgradeProgressWithPercent': 'پیشرفت ارتقا: @percent٪', + 'otaUpgradeSuccessComplete': 'ارتقا با موفقیت تکمیل شد', + 'otaUpgradeFailedWithCode': 'ارتقا ناموفق بود، کد خطا: @code', + 'otaUpgradeFailedTitle': 'ارتقا ناموفق بود', 'otaUpgradeFailedDesc': - 'Please check device connection or update package, error code: @code', - 'otaDeviceDisconnected': 'Device disconnected', - 'otaDeviceConnected': 'Device connected', + 'لطفاً اتصال دستگاه یا بسته به‌روزرسانی را بررسی کنید، کد خطا: @code', + 'otaDeviceDisconnected': 'دستگاه قطع شد', + 'otaDeviceConnected': 'دستگاه متصل شد', // 音乐模块 "noMusic": "بدون موسیقی", // 暂无音乐 diff --git a/lib/core/translations/language/fi_fi.dart b/lib/core/translations/language/fi_fi.dart index ac9ba0ca2..faa2e3d87 100644 --- a/lib/core/translations/language/fi_fi.dart +++ b/lib/core/translations/language/fi_fi.dart @@ -1,5 +1,5 @@ +//芬兰-芬兰语 const Map fiFI = { - // 通用 'continue': 'Jatka', 'confirm': 'Vahvista', @@ -171,12 +171,15 @@ const Map fiFI = { // 蓝牙扫描模块 'bleInitFailedWithError': 'Bluetooth-alustus epäonnistui: @error', - 'needBluetoothAndLocationPermission': 'Bluetooth- ja sijaintiluvat tarvitaan laitteiden etsimiseen', + 'needBluetoothAndLocationPermission': + 'Bluetooth- ja sijaintiluvat tarvitaan laitteiden etsimiseen', 'permissionRequestFailedWithError': 'Lupapyyntö epäonnistui: @error', 'needPermission': 'Lupa vaaditaan', - 'blePermissionDialogContent': 'Sovellus tarvitsee Bluetooth- ja sijaintiluvat laitteiden etsimiseen. Ota ne käyttöön Asetuksissa.', + 'blePermissionDialogContent': + 'Sovellus tarvitsee Bluetooth- ja sijaintiluvat laitteiden etsimiseen. Ota ne käyttöön Asetuksissa.', 'needEnableBluetooth': 'Ota Bluetooth käyttöön', - 'enableBluetoothDialogContent': 'Ota Bluetooth käyttöön laitteiden etsimistä ja yhdistämistä varten.', + 'enableBluetoothDialogContent': + 'Ota Bluetooth käyttöön laitteiden etsimistä ja yhdistämistä varten.', 'bleScanFailedWithError': 'Etsintä epäonnistui: @error', 'bleConnectionSuccess': 'Yhdistäminen onnistui', 'bleConnectedToDevice': 'Yhdistetty laitteeseen @device', @@ -215,115 +218,118 @@ const Map fiFI = { "scene": "Skenaario", // 用量统计模块 - "aiChat": "AI Chat", - "translationStats": "Translation Statistics", - "meetingStats": "Meeting Statistics", - "today": "Today", - "thisWeek": "This Week", - "thisMonth": "This Month", - "history": "History", - "currentSessionStats": "Current Session Stats", - "translationCount": "Translation Count", - "sessionDuration": "Session Duration", - "characters": "Characters", - "recordingDuration": "Recording Duration", - "totalApiCalls": "Total API Calls", - "sessionCount": "Session Count", - "totalCharacters": "Total Characters", - "apiCallStats": "API Call Stats", - "translationApi": "Translation API", + "aiChat": "AI-chat", + "translationStats": "Käännöstilastot", + "meetingStats": "Kokoustilastot", + "today": "Tänään", + "thisWeek": "Tällä viikolla", + "thisMonth": "Tässä kuussa", + "history": "Historia", + "currentSessionStats": "Nykyisen istunnon tilastot", + "translationCount": "Käännösten määrä", + "sessionDuration": "Istunnon kesto", + "characters": "Merkit", + "recordingDuration": "Tallennuksen kesto", + "totalApiCalls": "API-kutsujen kokonaismäärä", + "sessionCount": "Istuntojen määrä", + "totalCharacters": "Merkkien kokonaismäärä", + "apiCallStats": "API-kutsutilastot", + "translationApi": "Käännös-API", "asr": "ASR", "tts": "TTS", - "dataVolumeStats": "Data Volume Stats", - "sourceTextCharacters": "Source Text Characters", - "ttsTextCharacters": "TTS Text Characters", - "effectiveAudioDuration": "Effective Audio Duration", - "totalSessionDuration": "Total Session Duration", - "costStats": "Cost Stats", - "estimatedCost": "Estimated Cost", - "dailyCostThreshold": "Daily Cost Threshold", - "monthlyCostThreshold": "Monthly Cost Threshold", - "usageBehaviorStats": "Usage Behavior Stats", - "mostUsedLanguagePair": "Most-used language pair", - "mostUsedMode": "Most-used mode", - "asrApiCalls": "ASR Calls", - "totalAudioDuration": "Total Audio Duration", - "audioFileSize": "Audio File Size", - "transcriptBytes": "Transcript Bytes", - "loadFailed": "Load Failed", + "dataVolumeStats": "Datamäärätilastot", + "sourceTextCharacters": "Lähdetekstin merkit", + "ttsTextCharacters": "TTS-tekstin merkit", + "effectiveAudioDuration": "Tehokas äänikesto", + "totalSessionDuration": "Istuntojen kokonaiskesto", + "costStats": "Kustannustilastot", + "estimatedCost": "Arvioitu kustannus", + "dailyCostThreshold": "Päivittäinen kustannusraja", + "monthlyCostThreshold": "Kuukausittainen kustannusraja", + "usageBehaviorStats": "Käyttötoiminnan tilastot", + "mostUsedLanguagePair": "Useimmin käytetty kielipari", + "mostUsedMode": "Useimmin käytetty tila", + "asrApiCalls": "ASR-kutsut", + "totalAudioDuration": "Äänikesto yhteensä", + "audioFileSize": "Äänitiedoston koko", + "transcriptBytes": "Transkription tavut", + "loadFailed": "Lataus epäonnistui", "statsLoadFailedTryLater": - "Statistics failed to load. Please try again later.", + "Tilastojen lataus epäonnistui. Yritä myöhemmin uudelleen.", "cleanupComplete": "Cleanup Complete", "cleanedOldData": "Cleaned data older than 90 days", "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", // 商品模块 - 通用 - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - '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", + 'availablePackages': 'Saatavilla olevat paketit', + 'remainingQuota': 'Jäljellä oleva kiintiö', + 'totalQuota': 'Kokonaiskiintiö', + 'remaining': 'Jäljellä', + 'featureDescription': 'Ominaisuuden kuvaus', + '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": "Pisteitä ei ole riittävästi", "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', + 'Saldo ei riitä. Siirry vastaavalle lataussivulle ja lataa lisää.', + "recharge": 'Siirry lataukseen', "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + 'AI-jäsenyys on vanhentunut. Siirry jäsenyyden lataussivulle ja uusi.', // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', @@ -351,18 +357,18 @@ const Map fiFI = { 'templatedMessagesAndScheduleReminders': 'Template messages and schedule reminders', 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', + 'Toiminnot riippuvat laitteen käyttöoikeuksista, palvelun saatavuudesta ja verkkoyhteydestä.', // 商品模块 - 翻译商品页 'realtimeTranscription': 'Real-time Transcription', 'sceneLexicon': 'Scenario Glossary', 'subtitleDisplay': 'Subtitles', 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'Reaaliaikainen simultaanitulkkaus ja tekstikäännös matalaviiveisellä äänellä.', 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', + 'translateZhEn': 'Kiinan–englannin käännös', 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', + 'multiLangTextTranslation': 'Monikielinen tekstikäännös', 'termOptimizationContextPreserve': 'Terminology optimization and context preservation', 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', @@ -370,18 +376,18 @@ const Map fiFI = { 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', 'colorHighContrast': 'High color contrast', 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', + 'Käännöksen suorituskyky riippuu mikrofonista, verkkoviiveestä ja taustamelusta.', // 商品模块 - 会议商品页 - 'meetingRecording': 'Meeting Recording', + 'meetingRecording': 'Kokoustallennus', 'transcriptionAndSummary': 'Transcription & Summary', 'keywordSearch': 'Keyword Search', 'collaborationSharing': 'Collaboration & Sharing', 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'Äänitallennus, transkriptio, avainsanahaku ja automaattinen yhteenveto tehostavat kokouksia.', 'meetingHeaderDesc2': 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingAutoRecording': 'Automaattinen tallennus ja segmentointi', 'meetingSpeakerTagging': 'Speaker labeling', 'meetingLongAudioTranscription': 'Long audio transcription', 'meetingKeyPointSummary': 'Key point extraction', @@ -390,7 +396,7 @@ const Map fiFI = { 'meetingExportSummary': 'Export minutes', 'meetingMultiPlatformShare': 'Share across platforms', 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', + 'Käytä hiljaisessa ympäristössä; suorituskyky riippuu mikrofonista ja verkosta.', // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', @@ -404,7 +410,7 @@ const Map fiFI = { 'longTermDiscountPlan': 'Long-term discount plan', 'generalPrivileges': 'General privileges', 'earlyAccessNewFeatures': 'Early access to new features', - 'crossDeviceSync': 'Cross-device sync', + 'crossDeviceSync': 'Laitteiden välinen synkronointi', 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', @@ -415,18 +421,18 @@ const Map fiFI = { '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', + 'trans_001_name': 'Käännös Perus 100', + 'trans_002_name': 'Käännös Perus 500', + 'trans_003_name': 'Käännös Perus 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).', + 'meet_001_desc': 'Sisältää 100 kokoustallennusta/transkriptiota.', + 'meet_002_desc': 'Sisältää 500 kokoustallennusta/transkriptiota.', + 'meet_003_desc': 'Sisältää 1000 kokoustallennusta/transkriptiota.', + 'trans_001_desc': 'Sisältää 100 käännöstä (ääni/teksti).', + 'trans_002_desc': 'Sisältää 500 käännöstä (ääni/teksti).', + 'trans_003_desc': 'Sisältää 1000 käännöstä (ääni/teksti).', // 商品模块 - 页脚 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', @@ -482,52 +488,61 @@ const Map fiFI = { 'recordingDetails': 'Tallenteen tiedot', 'aiSummary': 'AI-yhteenveto', 'meetingTranscript': 'Kokouksen transkriptio', - 'files': 'Files', - 'mine': 'Mine', - 'connect': 'Connect', - 'allFiles': 'All Files', - 'searchInAllFiles': 'Search in all files', - 'from': 'From', - 'sortBy': 'Sort by', - 'creationTime': 'Creation Time', - 'bluetoothConnection': 'Bluetooth Connection', - 'meetingReconnect': 'Reconnect', - 'searching': 'Searching...', - 'searchFailed': 'Search failed, please check if Bluetooth is enabled', - 'aiPenNotFound': 'AI PEN device not found', - 'connectedToAiPen': 'Connected to AI PEN device', - 'checkingNewFiles': 'Checking for new files to import', + 'files': 'Tiedostot', + 'mine': 'Omat', + 'connect': 'Yhdistä', + 'allFiles': 'Kaikki tiedostot', + 'searchInAllFiles': 'Hae kaikista tiedostoista', + 'from': 'Alkaen', + 'sortBy': 'Lajittele', + 'creationTime': 'Luontiaika', + 'bluetoothConnection': 'Bluetooth-yhteys', + 'meetingReconnect': 'Yhdistä uudelleen', + 'searching': 'Etsitään...', + 'searchFailed': 'Haku epäonnistui, tarkista että Bluetooth on päällä', + 'aiPenNotFound': 'AI PEN -laitetta ei löytynyt', + 'connectedToAiPen': 'Yhdistetty AI PEN -laitteeseen', + 'checkingNewFiles': 'Tarkistetaan uusia tuotavia tiedostoja', 'startingWifi': 'Starting Wi-Fi...', 'newFilesDetected': 'New files detected, preparing to import', 'noNewFiles': 'No new files to import', - 'connectingWifi': 'Connecting to Wi-Fi...', - 'wifiConnected': 'Wi-Fi connected successfully', - 'downloadingFiles': 'Downloading files...', - 'downloadingFileProgress': 'Total {total} files, downloading file {current}', - 'downloadComplete': 'Download complete', + 'connectingWifi': 'Yhdistetään Wi‑Fiin...', + 'wifiConnected': 'Wi‑Fi-yhteys muodostettu', + 'downloadingFiles': 'Ladataan tiedostoja...', + 'downloadingFileProgress': + 'Yhteensä {total} tiedostoa, ladataan tiedostoa {current}', + 'downloadComplete': 'Lataus valmis', 'downloadCompleteInfo': - 'Download complete, {count} files in total, returning automatically in 2 seconds', + 'Lataus valmis, yhteensä {count} tiedostoa. Palataan automaattisesti 2 sekunnin kuluttua', // Meeting模块 - 录音功能 - 'startRecording': 'Start Recording', - 'liveRecording': 'Live Recording', - 'audioVideoRecording': 'Audio/Video Recording', - 'callRecording': 'Call Recording', + 'startRecording': 'Aloita tallennus', + 'liveRecording': 'Live-tallennus', + 'audioVideoRecording': 'Ääni-/videotallennus', + 'callRecording': 'Puhelutallennus', 'importAudio': 'Import Audio', 'meetingRecordExitTitle': 'Poistu tallennuksesta', // 退出录音 - 'meetingRecordExitMessage': 'Valitse, mitä tehdä ennen poistumista', // 请选择离开后的操作 + 'meetingRecordExitMessage': + 'Valitse, mitä tehdä ennen poistumista', // 请选择离开后的操作 'meetingRecordEndAndSave': 'Lopeta ja tallenna', // 结束录音并保存 'meetingRecordEndWithoutSave': 'Lopeta tallentamatta', // 结束录音不保存 'meetingRecordContinueInBackground': 'Jatka tallennusta taustalla', // 后台继续录音 - 'meetingRecordStopTimeout': 'Tallennuksen lopettaminen aikakatkaistiin. Yritä uudelleen.', // 结束录音超时,请重试 - 'meetingRecordStopFailed': 'Tallennusta ei voitu lopettaa. Yritä uudelleen.', // 结束录音失败,请重试 - 'meetingRecordSaveFailed': 'Tallennusta ei voitu tallentaa. Yritä uudelleen.', // 保存录音失败,请重试 + 'meetingRecordStopTimeout': + 'Tallennuksen lopettaminen aikakatkaistiin. Yritä uudelleen.', // 结束录音超时,请重试 + 'meetingRecordStopFailed': + 'Tallennusta ei voitu lopettaa. Yritä uudelleen.', // 结束录音失败,请重试 + 'meetingRecordSaveFailed': + 'Tallennusta ei voitu tallentaa. Yritä uudelleen.', // 保存录音失败,请重试 'meetingRecordRecordingNotificationTitle': 'Tallennus käynnissä', // 录音进行中 - 'meetingRecordRecordingNotificationBody': 'Tallennetaan taustalla. Napauta palataksesi sovellukseen.', // 正在后台录音,点击返回应用 + 'meetingRecordRecordingNotificationBody': + 'Tallennetaan taustalla. Napauta palataksesi sovellukseen.', // 正在后台录音,点击返回应用 'overlayPermissionTitle': 'Näytä muiden sovellusten päällä', // 悬浮窗权限 - 'overlayPermissionTranslationDesc': 'Jotta voimme näyttää käännöstulokset puheluiden tai ääni-/videokäännöksen aikana, tarvitsemme päällekkäisyysoikeuden. Näin näet reaaliaikaiset käännökset käyttäessäsi muita sovelluksia.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 - 'overlayPermissionRecordingDesc': 'Jotta voimme näyttää tallennuksen kelluvan palkin (ajastin/tauko/jatka) tallennuksen aikana, tarvitsemme päällekkäisyysoikeuden.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 - 'overlayPermissionOpenSettingsFailed': 'Järjestelmäasetuksia ei voi avata automaattisesti. Avaa Asetukset ja ota päällekkäisyysoikeus käyttöön manuaalisesti.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 + 'overlayPermissionTranslationDesc': + 'Jotta voimme näyttää käännöstulokset puheluiden tai ääni-/videokäännöksen aikana, tarvitsemme päällekkäisyysoikeuden. Näin näet reaaliaikaiset käännökset käyttäessäsi muita sovelluksia.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 + 'overlayPermissionRecordingDesc': + 'Jotta voimme näyttää tallennuksen kelluvan palkin (ajastin/tauko/jatka) tallennuksen aikana, tarvitsemme päällekkäisyysoikeuden.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 + 'overlayPermissionOpenSettingsFailed': + 'Järjestelmäasetuksia ei voi avata automaattisesti. Avaa Asetukset ja ota päällekkäisyysoikeus käyttöön manuaalisesti.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 'transcribing': 'Transcribing...', 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', @@ -552,101 +567,104 @@ const Map fiFI = { '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ä', + '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', + 'recordingLanguage': 'Tallennuskieli', '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.', + 'AI-analyysi tunnistaa tallenteista avaintapahtumat, jotta voit valita tärkeät tapahtumat AI-luontia varten.', // 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', + 'importingLocalRecordings': 'Tuodaan paikallisia tallenteita...', + 'importFailed': 'Tiedoston tuonti epäonnistui: {filePath}, virhe: {error}', + 'importSuccess': '{count} paikallista tallennetta tuotu onnistuneesti', + 'importError': 'Tuonti epäonnistui: {error}', + 'pleaseSelectAudioFile': 'Valitse äänitiedosto', 'shareAudio': 'Share Meeting Audio', 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + 'shareFailed': 'Jakaminen epäonnistui: {error}', + 'fileProcessingFailed': + 'Tiedoston käsittely epäonnistui: {filePath}, virhe: {error}', // Meeting模块 - 思维导图 - 'saveMindMap': 'Tallenna miellekartta', - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', + 'saveMindMap': 'Tallenna miellekartta', + 'shareMindMap': 'Jaa miellekartta', + 'shareSuccess': 'Jakaminen onnistui', // 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', + 'askAI': 'Kysy AI:lta...', + 'askAIPrompt': 'Miten voin auttaa tänään?', + 'continueAsk': 'Jatka kysymistä', + 'todoList': 'Tehtävälista', + 'extractConclusion': 'Poimi johtopäätös', + 'generateKeyIndicators': 'Luo avainmittarit', // 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', + 'shareLink': 'Jaa linkki', + 'copyTranscript': 'Kopioi transkriptio', + 'copySummary': 'Kopioi yhteenveto', + 'exportAudio': 'Vie ääni', + 'exportTranscript': 'Vie transkriptio', + 'shareMeetingAudio': 'Jaa kokouksen ääni', + 'exportSummary': 'Vie yhteenveto', + 'exportAs': 'Vie muodossa', + 'exportingPDF': 'Viedään 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', + 'nameCurrentSpeaker': 'Nimeä nykyinen puhuja', + 'recentlyUsedNames': 'Viimeksi käytetyt nimet', + 'applyToCurrentParagraph': 'Käytä nykyiseen kappaleeseen', + 'totalTime': 'Kokonaisaika', 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', + 'Yhteenvedon puhujat päivitetään automaattisesti', // Meeting模块 - 云端同步 - 'syncToCloud': 'Sync to Cloud', + 'syncToCloud': 'Synkronoi pilveen', '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', + 'Synkronoi tallenteet automaattisesti pilveen. Voit toistaa, hallita ja jakaa tallenteita VOITRANS-sovelluksella tai VOITRANS Webissä (web.voitrans.com).', + 'syncToVoitransApp': 'Synkronoi VOITRANS-sovellukseen', + 'transcriptionRecord': 'Transkriptiotallenne', // Meeting模块 - 我的页面 - 'transcriptionRecords': 'Transcription Records', - 'templateCommunity': 'Template Community', - 'comingSoon': 'Coming Soon', - 'integration': 'Integration', + 'transcriptionRecords': 'Transkriptiotallenteet', + 'templateCommunity': 'Malliyhteisö', + 'comingSoon': 'Tulossa pian', + 'integration': 'Integraatio', 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', - 'enabled': 'Enabled', - 'disabled': 'Disabled', - 'myVoitransDevice': 'My VOITRANS Device', + 'enabled': 'Käytössä', + 'disabled': 'Ei käytössä', + 'myVoitransDevice': 'Oma VOITRANS-laite', 'helpAndFeedback': 'Help & Feedback', 'aboutVoitrans': 'About VOITRANS', 'meetingDays': 'Days', 'meetingHours': 'Hours', 'voitransAiMember': 'Voitrans AI Member', 'unlockStarterMember': 'Unlock Starter Member', - 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', + 'bindDeviceToActivate': + 'Sido Voitrans-laite aktivoidaksesi Starter-jäsenyyden', 'unlockNow': 'Unlock Now', // Meeting模块 - 会员与升级 @@ -670,7 +688,7 @@ const Map fiFI = { 'customTemplateDesc': 'You can customize summary prompts according to your needs and use them to generate the required summaries.', 'askAiDesc': - 'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.', + 'Poimi tallenteista älykkäästi syvempää tietoa ja luo yhdellä napsautuksella datataulukoita, keskustelujen keskeisiä johtopäätöksiä, tehtävälistoja, raporttisähköposteja ja muuta muotoiltua sisältöä.', 'visualMindMapDesc': 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', 'templateCommunityDesc': @@ -678,13 +696,13 @@ const Map fiFI = { 'speakerIdentificationDesc': 'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.', 'privateCloudSyncDesc': - 'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.', + 'Tallenteet ja transkriptiot tallennetaan turvallisesti erillisille pilvipalvelimille. Lähetys ja lataus on täysin salattu yksityisyyden ja turvallisuuden varmistamiseksi.', '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.', + 'Vie äänitallenteet, transkriptiotekstit ja yhteenvedot eri muodoissa (TXT, PDF, JPEG) tarpeesi mukaan.', 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -714,25 +732,25 @@ const Map fiFI = { 'purchase': 'Purchase', // Meeting模块 - 录音语言 - 'recordLanguage': 'Recording Language', + 'recordLanguage': 'Tallennuskieli', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', // 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', + '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', + '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", @@ -741,10 +759,10 @@ const Map fiFI = { "translationRecharge": "Käännösvaraus", "meetingAssistantRecharge": "Kokousavustajan varaus", "cloudSync": "Pääsyvaraus cloud-synkronointiin", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "memberService": "Jäsenpalvelu", + "bindRewardTitle": "Palkinnot", "bindRewardSimpleDesc": - "First bind device reward has been issued. Tap OK to close.", + "Ensimmäisen laitteen sidonnan palkinto on myönnetty. Sulje napauttamalla OK.", "joinDevice": "Yhdistetty laite:", "accountId": "Tilin tunnus:", "systemSetting": "Järjestelmäasetukset", @@ -795,20 +813,20 @@ const Map fiFI = { "loading": "Ladataan...", // 设备管理模块 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", + "deviceTypeUnknown": "Tuntematon laite", + "deviceTypeClassicBluetoothHeadset": "Perinteinen Bluetooth-kuuloke", + "deviceTypeBleBluetoothHeadset": "BLE Bluetooth-kuuloke", + "deviceTypeSmartVoiceRecorder": "Älykäs äänitallennin", "deviceTypeSmartEye": "Smart Glasses", "unbind": "Poista sidonta", - "noDevicesBound": "No devices bound yet", - "pleaseBindDeviceFirst": "Please bind a device first to manage", + "noDevicesBound": "Ei sidottuja laitteita vielä", + "pleaseBindDeviceFirst": "Sido ensin laite hallintaa varten", "noMacAddress": "No MAC Address", "licenseCode": "License Code", "confirmUnbind": "Confirm Unbind", "confirmUnbindMessage": - "Are you sure you want to unbind device \"{deviceName}\"?", - "confirmUnbindAction": "Confirm Unbind", + "Haluatko varmasti poistaa laitteen \"{deviceName}\" sidonnan?", + "confirmUnbindAction": "Poista sidonta", // Agent模块 - 主界面 "Lily": "Lily", @@ -838,21 +856,22 @@ const Map fiFI = { "loadMoreMessages": "Lataa lisää viestejä...", "loadFailedClickRetry": "Lataus epäonnistui, yritä uudelleen napsauttamalla", "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.', + "callingTool": "Autan sinua, odota hetki!", // 正在帮您,请稍等! + "voice_interrupt": "Keskeytä", // 语音打断 + '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", // 今日天气 - "presetNews": "Today's news", // 今日新闻 - "presetFood": "Nearby food", // 美食 - "playSomeMusic": "Play some popular music", // 播放一些流行音乐 - "navigationTo": "Please help me navigate to", // 导航到 - "todayWeather": "How's the weather today?", // 今日天气 - "todayNews": "What's the news today?", // 今日新闻 - "nearbyFood": "What delicious food is nearby?", // 美食 + "presetMusic": "Soita musiikkia", // 来点音乐 + "presetNavigation": "Navigoi kohteeseen", // 导航 + "presetWeather": "Sää tänään", // 今日天气 + "presetNews": "Uutiset tänään", // 今日新闻 + "presetFood": "Ruokaa lähellä", // 美食 + "playSomeMusic": "Soita suosittua musiikkia", // 播放一些流行音乐 + "navigationTo": "Auta minua navigoimaan kohteeseen", // 导航到 + "todayWeather": "Millainen sää on tänään?", // 今日天气 + "todayNews": "Mitkä ovat päivän uutiset?", // 今日新闻 + "nearbyFood": "Mitä hyvää ruokaa on lähellä?", // 美食 // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Hei! Olen **Lily**, voin auttaa sinua:\n\n' @@ -936,7 +955,8 @@ const Map fiFI = { 'builtInNavigation': 'Sisäänrakennettu navigointi', 'useBuiltInNavigation': 'Navigoi sisäänrakennetulla kartalla', 'navigationStartFailed': 'Navigoinnin käynnistys epäonnistui', - 'cannotPlayMusicListRetryLater': 'Musiikkilistaa ei voi toistaa, yritä myöhemmin', + 'cannotPlayMusicListRetryLater': + 'Musiikkilistaa ei voi toistaa, yritä myöhemmin', 'cannotPlaySong': 'Kappaletta ei voi toistaa', 'openMapError': 'Virhe kartan avaamisessa', 'pleaseInstallAmapApp': 'Asenna Amap-sovellus ensin', @@ -996,8 +1016,8 @@ const Map fiFI = { "strongWind": "Voimakas tuuli", // 翻译模块 - 中间层 - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", + "pictureTranslation": "Kuvakäännös", + "textTranslation": "Tekstikäännös", // 翻译模块 - 主页 "translationHistory": "Käännöshistoria", @@ -1007,32 +1027,33 @@ const Map fiFI = { "phoneUser": "Puhelimen käyttäjä", "selectSourceLanguage": "Valitse lähdekieli", "selectTargetLanguage": "Valitse kohdekieli", - "me": "Me", - "counterPart": "Counterpart", + "me": "Minä", + "counterPart": "Keskustelukumppani", "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - "autoDetect": "Auto Detect", // 自动检测 + "Varmista, että Bluetooth-kuuloke on yhdistetty puhelimeen ja että puhelu on käynnissä", + "autoDetect": "Tunnista automaattisesti", // 自动检测 // 翻译模块 - 文本翻译 - "languageDetectionFailed": "Language detection failed", + "languageDetectionFailed": "Kielen tunnistus epäonnistui", // 翻译模块 - 悬浮窗与权限 'disableFloatingWindow': 'Poista kelluva ikkuna käytöstä', 'enableFloatingWindow': 'Ota kelluva ikkuna käyttöön', 'permissionTip': 'Lupavihje', - 'micPermissionRequiredForRecording': 'Mikrofonilupa vaaditaan äänitystä varten', + 'micPermissionRequiredForRecording': + 'Mikrofonilupa vaaditaan äänitystä varten', 'deleteTranslationRecordError': 'Virhe käännöstietueen poistamisessa: @error', - "translationFailed": "Translation failed", + "translationFailed": "Käännös epäonnistui", "translating": "Käännetään", "translate": "Käännä", - "pleaseInputText": "Please input text", + "pleaseInputText": "Syötä teksti", "inputTextToTranslate": "Syötä käännettävä teksti", - "textTooLong": "Text too long, max 5000 characters", + "textTooLong": "Teksti on liian pitkä, enintään 5000 merkkiä", // 翻译模块 - 历史记录 "noTranslationHistory": "Ei historiaa vielä", - "historyRecords": "History Records", - "clearResults": "Clear Results", + "historyRecords": "Historiatietueet", + "clearResults": "Tyhjennä tulokset", "clearHistory": "Tyhjennä historia", "clearHistoryConfirm": "Oletko varma, että haluat tyhjentää kaiken käännöshistorian? Tätä toimintoa ei voi kumota.", @@ -1042,55 +1063,56 @@ const Map fiFI = { "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", + "selectImageSource": "Valitse kuvan lähde", + "imagePreview": "Kuvan esikatselu", + "translationResult": "Käännöstulos", + "recognitionResult": "Tunnistustulos", + "translatedImagePreview": "Käännetyn kuvan esikatselu", + "translatedImageLoadFailed": "Käännetyn kuvan lataus epäonnistui", + "pleaseSelectImage": "Valitse kuva", + "imageLoadFailed": "Kuvan lataus epäonnistui", + "imageQuality": "Kuvan laatu", + "maxSize": "Enimmäiskoko", + "close": "Sulje", + "setImageQuality": "Aseta kuvan laatu", + "currentQuality": "Nykyinen laatu: @value%", + "setMaxSize": "Aseta enimmäiskoko", + "currentMaxSize": "Nykyinen: @pxpx", + "waitingForAction": "Odotetaan toimintoa", + "pleaseSelectImageToStart": "Valitse kuva aloittaaksesi", + "chooseImage": "Valitse kuva", + "openingCamera": "Avataan kamera...", + "openingPhotoAlbum": "Avataan valokuva-albumi...", + "cancelled": "Peruutettu", + "userCancelledSelection": "Käyttäjä peruutti valinnan", + "translatingImage": "Käännetään kuvaa", + "callingImageTranslateService": "Kutsutaan kuvakäännöspalvelua...", + "savingRecord": "Tallennetaan tietuetta", + "savingTranslationResult": "Tallennetaan käännöstulosta...", + "translationCompleted": "Käännös valmis", + "allStepsCompleted": "Kaikki vaiheet valmiit", + "processingFailed": "Käsittely epäonnistui", "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", + "Kuvan käsittely tai käännös epäonnistui. Yritä uudelleen.\nVirhe: {error}", + "imageTooLarge": "Kuvan koko ylittää 4 Mt rajan", "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", + "Kuvan koko ylittää 4 Mt. Pienennä laatua tai mittoja ja yritä uudelleen", + "emptyTranslationResult": "Kuvakäännös-API palautti tyhjän tuloksen", "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", + "Kuvakäännös epäonnistui. Verkkovirhe tai kutsurajoitus. Yritä myöhemmin uudelleen", "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", + "Poikkeus kuvakäännös-API:ssa. Tarkista verkko ja yritä uudelleen", + "permissionRequired": "Käyttöoikeus vaaditaan", + "cameraPermissionRequired": + "Kameran käyttöoikeus vaaditaan valokuvien ottamiseen", "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", + "Kuvien valitseminen vaatii valokuva-albumin käyttöoikeuden", + "translationDetails": "Käännöksen tiedot", + "originalImage": "Alkuperäinen kuva", + "sourceLanguage": "Lähdekieli", + "targetLanguage": "Kohdekieli", + "translationTime": "Käännösaika", + "shareInDevelopment": "Jakamistoiminto on kehitteillä", // 翻译模块 - 录音文件 "translateAudioFiles": "Käännä äänitiedostot", @@ -1190,32 +1212,32 @@ const Map fiFI = { 'Tili-palvelu on alustettu', // AccountService 已初始化 // 权限模块 - 'meetingStoragePermission': 'Storage', + 'meetingStoragePermission': 'Tallennustila', 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', + 'Tarvitsemme tallennustilan käyttöoikeuden, jotta voit valita ja lähettää äänitiedostoja.', 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', + 'Tallennustilan käyttöoikeus on pysyvästi estetty. Jatkaaksesi tämän toiminnon käyttöä siirry sovelluksen asetuksiin ja ota tallennustilan käyttöoikeus käyttöön.', 'getPermissionStatusFailed': 'Käyttöoikeuden tilan haku epäonnistui', 'communicationPermissions': 'Viestintäoikeudet', - 'bluetoothPermissions': 'Bluetooth Permissions', - 'notificationPermissions': 'Notification Permissions', - 'storagePermissions': 'Storage Permissions', - 'microphonePermissions': 'Microphone Permissions', - 'alarmPermissions': 'Alarm Permissions', + 'bluetoothPermissions': 'Bluetooth-käyttöoikeudet', + 'notificationPermissions': 'Ilmoituskäyttöoikeudet', + 'storagePermissions': 'Tallennustilan käyttöoikeudet', + 'microphonePermissions': 'Mikrofonin käyttöoikeudet', + 'alarmPermissions': 'Hälytysten käyttöoikeudet', 'calendarPermissions': 'Kalenterioikeudet', 'locationPermissions': 'Sijaintioikeudet', 'phone': 'Puhelin', 'sms': 'Tekstiviesti', - 'contacts': 'Contacts', - 'notification': 'Notification', - 'alarm': 'Alarm', + 'contacts': 'Yhteystiedot', + 'notification': 'Ilmoitukset', + 'alarm': 'Hälytys', 'calendarWrite': 'Kalenterin kirjoitus', 'calendarFullAccess': 'Täysi kalenterin käyttöoikeus', 'locationInfo': 'Sijaintitiedot', 'phonePermissionDesc': 'Käytetään soittotoimintoon', 'smsPermissionDesc': 'Käytetään tekstiviestien lähetystoimintoon', 'alarmPermissionDesc': - 'Used to set exact alarms to ensure reminders trigger on time', + 'Käytetään tarkkojen hälytysten asettamiseen, jotta muistutukset käynnistyvät ajallaan', 'calendarWritePermissionDesc': 'Käytetään kalenteritapahtumien ja muistutusten luomiseen', 'calendarFullAccessPermissionDesc': @@ -1233,85 +1255,89 @@ const Map fiFI = { 'smsPermissionDetailDesc': 'Tekstiviestien lähetystoiminto vaatii tekstiviestiluvan', 'alarmPermissionDetailDesc': - 'This permission is required to set exact alarms and ensure reminders trigger on time', + 'Tämä käyttöoikeus vaaditaan tarkkojen hälytysten asettamiseen ja muistutusten käynnistymisen varmistamiseen ajallaan', 'calendarWritePermissionDetailDesc': 'Kalenteritapahtumien luominen vaatii kalenterin kirjoitusluvan', 'calendarFullAccessPermissionDetailDesc': 'Kalenteritapahtumien hallinta vaatii täyden kalenteriluvan', 'locationPermissionDetailDesc': 'Sijaintitietojen haku vaatii sijaintiluvan', - 'contactsPermissionDesc': 'Used for accessing contact information', + 'contactsPermissionDesc': 'Käytetään yhteystietojen hakemiseen', 'contactsPermissionDetailDesc': - 'Phone call and SMS functionality requires contacts permission to select contacts', + 'Puhelut ja tekstiviestit edellyttävät yhteystietojen käyttöoikeutta yhteystietojen valitsemiseksi', 'bluetoothPermissionDesc': - 'Used for connecting and managing Bluetooth devices', + 'Käytetään Bluetooth-laitteiden yhdistämiseen ja hallintaan', 'bluetoothPermissionDetailDesc': - 'Connecting to Bluetooth headphones and other devices requires Bluetooth permission', - 'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices', + 'Bluetooth-kuulokkeisiin ja muihin laitteisiin yhdistäminen vaatii Bluetooth-käyttöoikeuden', + 'bluetoothScanPermissionDesc': + 'Käytetään lähellä olevien Bluetooth-laitteiden etsimiseen', 'bluetoothScanPermissionDetailDesc': - 'Scanning for nearby Bluetooth devices requires Bluetooth scan permission', - 'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices', + 'Lähellä olevien Bluetooth-laitteiden etsiminen vaatii Bluetooth-skannauskäyttöoikeuden', + 'bluetoothConnectPermissionDesc': + 'Käytetään Bluetooth-laitteisiin yhdistämiseen', 'bluetoothConnectPermissionDetailDesc': - 'Connecting to Bluetooth devices requires Bluetooth connect permission', - 'notificationPermissionDesc': 'Used for sending notification messages', + 'Bluetooth-laitteisiin yhdistäminen vaatii Bluetooth-yhdistämiskäyttöoikeuden', + 'notificationPermissionDesc': 'Käytetään ilmoitusten lähettämiseen', 'notificationPermissionDetailDesc': - 'App needs notification permission to send you important alerts and messages', + 'Sovellus tarvitsee ilmoituskäyttöoikeuden lähettääkseen tärkeitä hälytyksiä ja viestejä', 'appNeedsPermissionForFullFunction': 'Sovellus tarvitsee tämän luvan täyden toiminnallisuuden varmistamiseksi', 'permanentDenialText': 'Olet pysyvästi kieltänyt {permission}-luvan, ota se käyttöön sovelluksen asetuksista', 'goToSettings': 'Siirry asetuksiin', - 'bluetoothScan': 'Bluetooth Scan', - 'bluetoothConnect': 'Bluetooth Connect', + 'bluetoothScan': 'Bluetooth-skannaus', + 'bluetoothConnect': 'Bluetooth-yhdistäminen', 'bluetoothScanExplanation': - 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', + 'Sovellus tarvitsee Bluetooth-skannauskäyttöoikeuden lähellä olevien Bluetooth-laitteiden etsimiseen.', 'bluetoothConnectExplanation': - 'The app needs Bluetooth connect permission to connect to Bluetooth devices.', + 'Sovellus tarvitsee Bluetooth-yhdistämiskäyttöoikeuden Bluetooth-laitteisiin yhdistämiseen.', 'locationForBluetoothExplanation': - 'The app needs location permission to scan Bluetooth devices.', + 'Sovellus tarvitsee sijaintiluvan Bluetooth-laitteiden etsimiseen.', 'bluetoothScanPermanentDenial': - 'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.', + 'Bluetooth-skannauskäyttöoikeus on pysyvästi estetty. Siirry asetuksiin ja ota se käyttöön manuaalisesti.', 'bluetoothConnectPermanentDenial': - 'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.', + 'Bluetooth-yhdistämiskäyttöoikeus on pysyvästi estetty. Siirry asetuksiin ja ota se käyttöön manuaalisesti.', 'locationPermanentDenial': - 'Location permission has been permanently denied, please go to settings to enable it manually.', - 'notificationPermission': 'Notification', - 'locationPermission': 'Location', + 'Sijaintilupa on pysyvästi estetty. Siirry asetuksiin ja ota se käyttöön manuaalisesti.', + 'notificationPermission': 'Ilmoitukset', + 'locationPermission': 'Sijainti', 'notificationPermissionExplanation': - 'Notification permission is required to display music playback status.', + 'Ilmoituskäyttöoikeus vaaditaan musiikin toiston tilan näyttämiseen.', 'locationPermissionExplanation': - 'Location permission is required to get current location.', + 'Sijaintilupa vaaditaan nykyisen sijainnin hakemiseen.', 'notificationPermissionPermanentDenial': - 'You have permanently denied notification permission, please go to settings to enable it.', + 'Ilmoituskäyttöoikeus on pysyvästi estetty. Siirry asetuksiin ja ota se käyttöön.', 'locationPermissionPermanentDenial': - 'You have permanently denied location permission, please go to settings to enable it.', - 'storagePermission': 'Storage', + 'Sijaintilupa on pysyvästi estetty. Siirry asetuksiin ja ota se käyttöön.', + 'storagePermission': 'Tallennustila', 'microphonePermissionExplanation': - 'We need microphone permission to record audio content.', + 'Tarvitsemme mikrofonin käyttöoikeuden äänisisällön tallentamiseen.', 'storagePermissionExplanation': - 'We need storage permission so you can select and upload audio files.', + 'Tarvitsemme tallennustilan käyttöoikeuden, jotta voit valita ja lähettää äänitiedostoja.', 'microphonePermissionPermanentDenial': - 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', + 'Mikrofonin käyttöoikeus on pysyvästi estetty. Jatkaaksesi tämän toiminnon käyttöä siirry sovelluksen asetuksiin ja ota mikrofonin käyttöoikeus käyttöön.', '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', + 'Tallennustilan käyttöoikeus on pysyvästi estetty. Jatkaaksesi tämän toiminnon käyttöä siirry sovelluksen asetuksiin ja ota tallennustilan käyttöoikeus käyttöön.', + 'permissionUtilNeed': 'Tarvitsee ', + 'permissionUtilPermission': ' käyttöoikeuden', + 'permissionUtilRestricted': ' Käyttöoikeus rajoitettu', 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'Tämä ominaisuus ei ole käytettävissä tai se on rajoitettu tällä laitteella. Tarkista laitteen asetukset tai järjestelmärajoitukset', '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', + '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', // 版本更新对话框标题 @@ -1383,27 +1409,28 @@ const Map fiFI = { 'bleConnectionFailed': 'BLE-yhteys epäonnistui', 'deviceAuthorizationFailedCheckCode': 'Laitteen valtuutus epäonnistui, tarkista valtuutuskoodi', - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + 'bluetoothGuideTitle': + 'Bluetooth on otettava käyttöön manuaalisesti', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'Noudata seuraavia ohjeita:', // 请按照以下步骤操作: 'bluetoothGuideStep1': - 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'Ota Bluetooth käyttöön: Asetukset → Bluetooth → Päällä', // 开启蓝牙:设置 → 蓝牙 → 开启 'bluetoothGuideStep2': - 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'Yhdistä laite: etsi laitteesi kohdasta “Omat laitteet” ja yhdistä napauttamalla', // 连接设备:在"我的设备"中找到您的设备并点击连接 'bluetoothGuideStep3': - 'Return to app to continue pairing process', // 返回应用继续配对流程 + 'Palaa sovellukseen jatkaaksesi paritusprosessia', // 返回应用继续配对流程 'bluetoothGuideTip': - 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': 'I Know', // 我知道了 + 'Vinkki: Voit myös painaa Bluetooth-kuvaketta pitkään Ohjauskeskuksessa avataksesi Bluetooth-asetukset nopeasti', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + 'iKnow': 'Selvä', // 我知道了 // 配对模块 - 绑定奖励 - "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:", + "firstBindRewardTitle": "Tervetuliaisetu", + "firstBindRewardDesc": "Olet saanut sidontapalkinnot.", + "vipLevelLabel": "VIP-taso:", + "expiryLabel": "Päättymispäivä:", + "notActivated": "Ei aktivoitu", + "aiChatCreditsLabel": "AI Chat -krediitit:", + "translationCreditsLabel": "Käännöskrediitit:", + "meetingCreditsLabel": "Kokouskrediitit:", "ok": "OK", // 用户反馈模块 @@ -1434,13 +1461,14 @@ const Map fiFI = { "connectionFailed": "Yhteys epäonnistui", "retryConnection": "Yritä yhdistää uudelleen", "ota_updateNow": "Päivitä nyt", - "otaVersionInfoFailed": "Failed to get version info. Please try again later.", + "otaVersionInfoFailed": + "Versiotietojen haku epäonnistui. Yritä myöhemmin uudelleen.", "otaDeviceInfoUnavailable": - "Unable to get device info. Please check the connection and retry.", + "Laitetietoja ei voitu hakea. Tarkista yhteys ja yritä uudelleen.", "otaProductInfoUnavailable": - "Unable to identify the device. Please reconnect and retry.", + "Laitetta ei voitu tunnistaa. Yhdistä uudelleen ja yritä uudelleen.", "otaFirmwareVersionInvalid": - "Firmware version is abnormal. Please reconnect and retry.", + "Laiteohjelmiston versio on poikkeava. Yhdistä uudelleen ja yritä uudelleen.", "keepConnectedDontClose": "Pidä laite yhteydessä, älä sulje sovellusta", "doNotDisconnect": "Älä katkaise yhteyttä", "charging": "Ladataan", @@ -1453,7 +1481,8 @@ const Map fiFI = { 'otaConfirmUpdateNow': 'Päivitä nyt?', 'otaUpdate': 'Päivitä', 'otaUpgradeSuccess': 'Päivitys onnistui', - 'otaUpgradeCompleteRepair': 'Laiteohjelmiston päivitys valmis!\n\nLaite täytyy parittaa uudelleen. Siirry paritussivulle?', + 'otaUpgradeCompleteRepair': + 'Laiteohjelmiston päivitys valmis!\n\nLaite täytyy parittaa uudelleen. Siirry paritussivulle?', 'otaPairLater': 'Parita myöhemmin', 'otaPairNow': 'Parita nyt', 'okConfirm': 'OK', @@ -1461,20 +1490,27 @@ const Map fiFI = { // OTA升级模块 - 设备检查 'otaBleCheckErrorWithError': 'Virhe BLE-tarkistuksessa: @error', 'otaBleNotConnected': 'BLE-laite ei yhdistetty', - 'otaBleNeedConnection': 'Päivitys vaatii BLE-yhteyden\nVarmista että laite on yhdistetty ja yritä uudelleen', + 'otaBleNeedConnection': + 'Päivitys vaatii BLE-yhteyden\nVarmista että laite on yhdistetty ja yritä uudelleen', 'otaDeviceInfoUnavailableTitle': 'Laitteen tiedot eivät saatavilla', - 'otaCannotGetDeviceInfo': 'Laitteen tietoja ei voi hakea\nYhdistä laite uudelleen tai yritä myöhemmin', + 'otaCannotGetDeviceInfo': + 'Laitteen tietoja ei voi hakea\nYhdistä laite uudelleen tai yritä myöhemmin', 'otaBleCheckFailed': 'BLE-tarkistus epäonnistui', - 'otaCannotGetDeviceInfoCheckConnection': 'Laitteen tietoja ei voi hakea, tarkista yhteys', - 'otaCannotGetProductInfoWithName': 'Tuotetietoja ei voi hakea, laitteen nimi: @deviceName', + 'otaCannotGetDeviceInfoCheckConnection': + 'Laitteen tietoja ei voi hakea, tarkista yhteys', + 'otaCannotGetProductInfoWithName': + 'Tuotetietoja ei voi hakea, laitteen nimi: @deviceName', 'otaCannotGetBatteryInfo': 'Akkutietoja ei voi hakea', 'otaLowBattery': 'Akku vähissä', - 'otaSingleBatteryLow': 'Akku liian vähissä päivitykseen\nVaatimus: akku yli 20%\nNykyinen: @ear @battery%\nLataa ja yritä uudelleen', - 'otaDoubleBatteryLow': 'Akku liian vähissä päivitykseen\nVaatimus: molemmat kuulokkeet yli 20%\nNykyinen: Vasen @left%, Oikea @right%\nLataa ja yritä uudelleen', + 'otaSingleBatteryLow': + 'Akku liian vähissä päivitykseen\nVaatimus: akku yli 20%\nNykyinen: @ear @battery%\nLataa ja yritä uudelleen', + 'otaDoubleBatteryLow': + 'Akku liian vähissä päivitykseen\nVaatimus: molemmat kuulokkeet yli 20%\nNykyinen: Vasen @left%, Oikea @right%\nLataa ja yritä uudelleen', 'otaBatteryCheckFailed': 'Akkutarkistus epäonnistui', // OTA升级模块 - 升级状态 - 'otaDefaultUpdateDesc': 'Päivitys sisältää suorituskykyparannuksia ja virhekorjauksia.', + 'otaDefaultUpdateDesc': + 'Päivitys sisältää suorituskykyparannuksia ja virhekorjauksia.', 'otaGetLatestVersionFailed': 'Uusimman version haku epäonnistui', 'otaGetVersionInfoFailed': 'Versiotietojen haku epäonnistui', 'otaCheckingDeviceStatus': 'Tarkistetaan laitteen tilaa...', @@ -1487,7 +1523,8 @@ const Map fiFI = { 'otaUpgradeSuccessComplete': 'Päivitys onnistui', 'otaUpgradeFailedWithCode': 'Päivitys epäonnistui, virhekoodi: @code', 'otaUpgradeFailedTitle': 'Päivitys epäonnistui', - 'otaUpgradeFailedDesc': 'Tarkista yhteys tai päivityspaketti, virhekoodi: @code', + 'otaUpgradeFailedDesc': + 'Tarkista yhteys tai päivityspaketti, virhekoodi: @code', 'otaDeviceDisconnected': 'Laitteen yhteys katkaistu', 'otaDeviceConnected': 'Laite yhdistetty', diff --git a/lib/core/translations/language/fr_fr.dart b/lib/core/translations/language/fr_fr.dart index d76baeb12..764409ce8 100644 --- a/lib/core/translations/language/fr_fr.dart +++ b/lib/core/translations/language/fr_fr.dart @@ -1,3 +1,4 @@ +// 法国-法语 const Map frFR = { // 通用 'continue': 'Continuer', @@ -871,7 +872,7 @@ const Map frFR = { "loadFailedClickRetry": "Échec du chargement, cliquer pour réessayer", "swipeUpForMore": "Glisser vers le haut pour plus", "callingTool": "Je vous aide, veuillez patienter…", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 + "voice_interrupt": "Interrompre", // 语音打断 '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.", @@ -1456,14 +1457,14 @@ const Map frFR = { 'iKnow': 'Je comprends', // 我知道了 // 配对模块 - 绑定奖励 - "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:", + "firstBindRewardTitle": "Bienvenue Récompense", + "firstBindRewardDesc": "Vous avez reçu des récompenses de liaison.", + "vipLevelLabel": "Niveau VIP:", + "expiryLabel": "Date d'expiration :", + "notActivated": "Non activé", + "aiChatCreditsLabel": "Crédits de chat AI:", + "translationCreditsLabel": "Crédits de traduction :", + "meetingCreditsLabel": "Crédits de réunion:", "ok": "OK", // 用户反馈模块 diff --git a/lib/core/translations/language/hi_in.dart b/lib/core/translations/language/hi_in.dart index 07f0bd037..cb26c9225 100644 --- a/lib/core/translations/language/hi_in.dart +++ b/lib/core/translations/language/hi_in.dart @@ -1,3 +1,4 @@ +// 印地-印地语 const Map hiIN = { // 通用 'continue': 'जारी रखें', @@ -18,11 +19,11 @@ const Map hiIN = { "unknownError": "अज्ञात त्रुटि", "asrConnectionFailed": "वॉइस रिकग्निशन सेवा से कनेक्शन विफल रहा। कृपया नेटवर्क जांचें और बाद में फिर से प्रयास करें।", - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", + "justNow": "अभी", + "minutesAgo": "@minutes मिनट पहले", + "yesterday": "आजमान", + "daysAgo": "@days दिन पहले", + "hoursAgo": "@hours घंटे पहले", // 启动页 "slogan": "दुनिया को जोड़ना, ध्वनि से परे", @@ -167,27 +168,27 @@ const Map hiIN = { 'checkConnectionStatusFailed': 'कनेक्शन स्थिति की जाँच करने में विफल', // 蓝牙扫描模块 - 'bleInitFailedWithError': 'Bluetooth initialization failed: @error', + 'bleInitFailedWithError': 'ब्लूटूथ प्रारंभ करने में विफल: @error', 'needBluetoothAndLocationPermission': - 'Bluetooth and location permissions are required to scan devices', - 'permissionRequestFailedWithError': 'Permission request failed: @error', - 'needPermission': 'Permission Required', + 'ब्लूटूथ और लोकेशन अनुमतियाँ आवश्यक हैं ताकि डिवाइस खोज सकें', + 'permissionRequestFailedWithError': 'अनुमति प्राप्त करने में विफल: @error', + 'needPermission': 'अनुमति आवश्यक', 'blePermissionDialogContent': - 'This app requires Bluetooth and location permissions to scan devices. Please enable them in Settings.', - 'needEnableBluetooth': 'Enable Bluetooth', + 'डिवाइस स्कैन करने के लिए इस ऐप को Bluetooth और लोकेशन अनुमतियों की आवश्यकता है। कृपया इन्हें सेटिंग्स में सक्षम करें।', + 'needEnableBluetooth': 'ब्लूटूथ सक्षम करें', 'enableBluetoothDialogContent': - 'Please enable Bluetooth to scan and connect devices.', - 'bleScanFailedWithError': 'Scan failed: @error', - 'bleConnectionSuccess': 'Connection Successful', - 'bleConnectedToDevice': 'Connected to @device', - 'bleConnectionFailedWithError': 'Connection failed: @error', - 'bleDisconnected': 'Disconnected', - 'bleDeviceDisconnected': 'Device disconnected', - 'bleDisconnectFailedWithError': 'Disconnect failed: @error', - 'signalStrong': 'Strong', - 'signalMedium': 'Medium', - 'signalWeak': 'Weak', - 'signalVeryWeak': 'Very Weak', + 'डिवाइस स्कैन करने और कनेक्ट करने के लिए कृपया Bluetooth सक्षम करें।', + 'bleScanFailedWithError': 'स्कैन विफल: @error', + 'bleConnectionSuccess': 'कनेक्शन सफल', + 'bleConnectedToDevice': '@device से कनेक्टेड', + 'bleConnectionFailedWithError': 'कनेक्शन विफल: @error', + 'bleDisconnected': 'डिस्कनेक्ट', + 'bleDeviceDisconnected': 'डिवाइस डिस्कनेक्ट हो गया', + 'bleDisconnectFailedWithError': 'डिस्कनेक्ट विफल: @error', + 'signalStrong': 'मजबूत', + 'signalMedium': 'मध्यम', + 'signalWeak': 'कमजोर', + 'signalVeryWeak': 'बहुत कमजोर', // 发现页 "searchAi": "एआई फ़ंक्शन खोजें...", @@ -210,60 +211,60 @@ const Map hiIN = { "conferenceAssistant": "बिजनेस मीटिंग असिस्टेंट", "conferenceAssistantInfo": "रीयल-टाइम मीटिंग मिनट रिकॉर्डिंग, बहु-भाषा अनुवाद", - "usageStats": "उपयोग सtatistik", - "usageStatsInfo": "अप्लिकेशन का उपयोग सtatistik देखें", + "usageStats": "उपयोग डेटा", + "usageStatsInfo": "अप्लिकेशन का उपयोग का हिसाब देखें", "scene": "दृश्य", // 用量统计模块 - "aiChat": "AI Chat", - "translationStats": "Translation Statistics", - "meetingStats": "Meeting Statistics", - "today": "Today", - "thisWeek": "This Week", - "thisMonth": "This Month", - "history": "History", - "currentSessionStats": "Current Session Stats", - "translationCount": "Translation Count", - "sessionDuration": "Session Duration", - "characters": "Characters", - "recordingDuration": "Recording Duration", - "totalApiCalls": "Total API Calls", - "sessionCount": "Session Count", - "totalCharacters": "Total Characters", - "apiCallStats": "API Call Stats", - "translationApi": "Translation API", + "aiChat": "AI चैट", + "translationStats": "अनुवाद आँकड़े", + "meetingStats": "बैठक आँकड़े", + "today": "आज", + "thisWeek": "इस सप्ताह", + "thisMonth": "इस महीने", + "history": "इतिहास", + "currentSessionStats": "वर्तमान सत्र आँकड़े", + "translationCount": "अनुवाद संख्या", + "sessionDuration": "सत्र अवधि", + "characters": "अक्षर", + "recordingDuration": "रिकॉर्डिंग अवधि", + "totalApiCalls": "कुल API कॉल", + "sessionCount": "सत्र संख्या", + "totalCharacters": "कुल अक्षर", + "apiCallStats": "API कॉल आँकड़े", + "translationApi": "अनुवाद API", "asr": "ASR", "tts": "TTS", - "dataVolumeStats": "Data Volume Stats", - "sourceTextCharacters": "Source Text Characters", - "ttsTextCharacters": "TTS Text Characters", - "effectiveAudioDuration": "Effective Audio Duration", - "totalSessionDuration": "Total Session Duration", - "costStats": "Cost Stats", - "estimatedCost": "Estimated Cost", - "dailyCostThreshold": "Daily Cost Threshold", - "monthlyCostThreshold": "Monthly Cost Threshold", - "usageBehaviorStats": "Usage Behavior Stats", - "mostUsedLanguagePair": "Most-used language pair", - "mostUsedMode": "Most-used mode", - "asrApiCalls": "ASR Calls", - "totalAudioDuration": "Total Audio Duration", - "audioFileSize": "Audio File Size", - "transcriptBytes": "Transcript Bytes", - "loadFailed": "Load Failed", + "dataVolumeStats": "डेटा मात्रा आँकड़े", + "sourceTextCharacters": "स्रोत पाठ अक्षर", + "ttsTextCharacters": "TTS पाठ अक्षर", + "effectiveAudioDuration": "प्रभावी ऑडियो अवधि", + "totalSessionDuration": "कुल सत्र अवधि", + "costStats": "लागत आँकड़े", + "estimatedCost": "अनुमानित लागत", + "dailyCostThreshold": "दैनिक लागत सीमा", + "monthlyCostThreshold": "मासिक लागत सीमा", + "usageBehaviorStats": "उपयोग व्यवहार आँकड़े", + "mostUsedLanguagePair": "सबसे अधिक उपयोग की गई भाषा जोड़ी", + "mostUsedMode": "सबसे अधिक उपयोग किया गया मोड", + "asrApiCalls": "ASR कॉल", + "totalAudioDuration": "कुल ऑडियो अवधि", + "audioFileSize": "ऑडियो फ़ाइल का आकार", + "transcriptBytes": "ट्रांसक्रिप्ट बाइट्स", + "loadFailed": "लोड विफल", "statsLoadFailedTryLater": - "Statistics failed to load. Please try again later.", - "cleanupComplete": "Cleanup Complete", - "cleanedOldData": "Cleaned data older than 90 days", - "exportFeature": "Export Feature", - "exportInDevelopment": "Data export is under development", + "आँकड़े लोड नहीं हो सके। कृपया बाद में फिर कोशिश करें।", + "cleanupComplete": "सफाई पूर्ण", + "cleanedOldData": "90 दिनों से पुराने डेटा को साफ़ किया गया", + "exportFeature": "निर्यात सुविधा", + "exportInDevelopment": "डेटा निर्यात विकासाधीन है", // 商品模块 - 通用 - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', + 'availablePackages': 'उपलब्ध पैकेज', + 'remainingQuota': 'शेष कोटा', + 'totalQuota': 'कुल कोटा', + 'remaining': 'शेष', + 'featureDescription': 'फीचर विवरण', 'paymentSuccess': 'भुगतान सफल', 'paymentFailed': 'भुगतान विफल', 'gotIt': 'समझ गया', @@ -322,45 +323,44 @@ const Map hiIN = { 'alipayPaymentLaunchFailed': 'Alipay खोलने में विफल', 'cannotLaunchAlipayPayment': 'Alipay नहीं खोल सकते', 'alipayPaymentException': 'Alipay में समस्या', - "insufficientIntegral": "Insufficient integral", + "insufficientIntegral": "अपर्याप्त पॉइंट्स", "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', + 'अपर्याप्त शेष राशि, कृपया संबंधित रिचार्ज पेज पर जाकर रिचार्ज करें।', + "recharge": 'रिचार्ज करें', "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + 'AI सदस्यता समाप्त हो गई है, कृपया सदस्यता रिचार्ज पेज पर जाकर नवीनीकरण करें।', // 商品模块 - AI商品页 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', + 'musicAndRecommendation': 'म्यूजिक और सिफारिश', + 'navigationAndRoutes': 'नेविगेशन और राउट्स', + 'nearbySearch': 'आपके आसपास खोजें', + 'newsInformation': 'न्यूज़', + 'communicationAssistant': 'संचार सहायक', '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', + 'जारी-संचार, सारांश, विश्लेषण और कार्य निष्पादन के लिए उपयोगी।', + 'musicSearchPlaybackControl': 'म्यूजिक लाइब्रेरी खोज और प्लेबैक नियंत्रण', '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', + 'स्मार्ट प्लेलिस्ट और समान संगीत सिफारिश', + 'routePlanningAndCongestionAvoidance': 'राउट प्लानिंग और संचालन बचाव', + 'voiceBroadcastAndWaypoints': 'वॉइस ब्राउस्ट और राउट पॉइंट सेटिंग्स', + 'realTimeWeatherForecast': 'रियल-टाइम मौसम और पूर्वानुमान', + 'clothingAdviceAndTravelReminders': 'कला सुझाव और यात्रा याद रखने की सलाह', + 'poiSearchFoodGasParking': 'POI खोज: खाने / गैस / पार्किंग', + 'ratingsHoursAndDirectRoutes': 'रेटिंग्स, व्यवसाय घंटे, और न recht राउटिंग', + 'hotNewsAndTopicOverview': 'हॉट न्यूज़ और विषय अवलोकन', + 'longArticleSummariesAndKeyPoints': 'लंबे लेख सारांश और प्रमुख बिंदु', + 'helpCallAndSMS': 'कॉल और SMS से सहायता', 'templatedMessagesAndScheduleReminders': - 'Template messages and schedule reminders', + 'टेम्पलेटेड संदेश और रिमाइनर सेटिंग्स', 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', + 'फीचर डिवाइस अनुमतियों, सेवा उपलब्धता और नेटवर्क स्थितियों पर निर्भर करते हैं।', // 商品模块 - 翻译商品页 - 'realtimeTranscription': 'Real-time Transcription', - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', + 'realtimeTranscription': 'रियल-टाइम समकालीन व्याख्या', + 'sceneLexicon': 'सценаरियल शब्दकोश', + 'subtitleDisplay': 'सबटाइटल्स', 'transHeaderDesc1': 'रीयल-टाइम समकालीन व्याख्या और पाठ अनुवाद, कम विलंबता वॉइस प्रसारण के साथ।', 'transHeaderDesc2': 'यात्रा, व्यवसाय, भाषण और शिक्षण के लिए उपयुक्त।', @@ -377,24 +377,24 @@ const Map hiIN = { 'अनुवाद की गुणवत्ता माइक्रोफोन, नेटवर्क विलंबता और परिवेशी शोर पर निर्भर करती है।', // 商品模块 - 会议商品页 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', + 'meetingRecording': 'बैठक रिकॉर्डिंग', + 'transcriptionAndSummary': 'ट्रांसक्रिप्शन और सारांश', + 'keywordSearch': 'कीवर्ड खोज', + 'collaborationSharing': 'सहयोग और साझा करना', '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', + 'व्यावसायिक बैठकों, कक्षा नोट्स और इंटरव्यू मिनट्स के लिए उपयुक्त।', + 'meetingAutoRecording': 'स्वचालित रिकॉर्डिंग और विभाजन', + 'meetingSpeakerTagging': 'वक्ता लेबलिंग', + 'meetingLongAudioTranscription': 'लंबे ऑडियो का ट्रांसक्रिप्शन', + 'meetingKeyPointSummary': 'मुख्य बिंदुओं का निष्कर्ष', + 'meetingTopicNameSearch': 'विषय/नाम से खोजें', + 'meetingTimelineJump': 'टाइमलाइन पर जाएँ', + 'meetingExportSummary': 'मिनट्स निर्यात करें', + 'meetingMultiPlatformShare': 'कई प्लेटफ़ॉर्म पर साझा करें', 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', + 'शांत वातावरण में उपयोग करें; प्रदर्शन माइक्रोफोन और नेटवर्क पर निर्भर करता है।', // 商品模块 - VIP会员页 'benefitsOverview': 'लाभों का अवलोकन', @@ -439,40 +439,48 @@ const Map hiIN = { // 新手引导 'skip': "छोड़ें", - 'next': 'Next', - 'sayLilyHint': "Say \"Lily Lily\" to the mic", - 'imHere': "I’m here~", - 'guideWelcomeWakeAI': "Welcome to Voitrans! First, wake your AI “Lily”.", - 'aiReplyCompleted': "Lily has finished the reply!", - 'aiThinking': "Lily is thinking…", - 'guideAwakenSuccess': "Great! Lily is awake—ask it to help.", - 'confirmInput': "Confirm Input", - 'guideClickSendPrefix': "Tap send, ", + 'next': 'अगला', + 'sayLilyHint': "अपने माइक्रोफोन पर \"लिली लिली\" कहें", + 'imHere': "मैं यहाँ हूँ~", + 'guideWelcomeWakeAI': + "वोइट्रांस में आपका स्वागत है! सबसे पहले, अपनी एआई “लिली” को उठाएं।", + 'aiReplyCompleted': "लिली ने प्रतिक्रिया पूरी कर दी!", + 'aiThinking': "लिली ने सोचा...", + 'guideAwakenSuccess': "बिलकुल! लिली उठ गई—अपने प्रश्नों को पूछें।", + 'confirmInput': "पुष्टि करें", + 'guideClickSendPrefix': "पाठ सेंड करने के लिए टैप करें, ", 'guideWeatherStart': "Tell Lily: “What’s the weather today?”", - 'guideWeatherInput': "What’s the weather today?", - 'guideWeatherSend': "Lily will report the weather in real time", - 'guideWeatherEnd': "Lily can report weather live—try other commands", + 'guideWeatherInput': "आज का मौसम क्या है?", + 'guideWeatherSend': "लिली ने आपके प्रश्न का प्रतिक्रिया दिया", + 'guideWeatherEnd': + "लिली ने आपके प्रश्न का प्रतिक्रिया दिया—अन्य कमांड्स का प्रयास करें", 'guideMusicStart': "Tell Lily: “Play some rock music”", - 'guideMusicInput': "Play some rock music", - 'guideMusicSend': "Lily will find music for you", - 'guideMusicEnd': "Lily found music—try other commands", + 'guideMusicInput': "प्ले सॉक्कर म्यूजिक", + 'guideMusicSend': + "लिली ने आपके प्रश्न का प्रतिक्रिया दिया—अन्य कमांड्स का प्रयास करें", + 'guideMusicEnd': + "लिली ने आपके प्रश्न का प्रतिक्रिया दिया—अन्य कमांड्स का प्रयास करें", 'guideNavStart': "Tell Lily: “Navigate to Shenzhen Airport”", - 'guideNavInput': "Navigate to Shenzhen Airport", - 'guideNavSend': "Lily will plan the route", - 'guideNavEnd': "Navigation set—try other commands", + 'guideNavInput': "Shenzhen Airport तक नेविगेट करें", + 'guideNavSend': + "लिली ने आपके प्रश्न का प्रतिक्रिया दिया—अन्य कमांड्स का प्रयास करें", + 'guideNavEnd': "नेविगेशन सेट—अन्य कमांड्स का प्रयास करें", 'guideMeetingStart': "Tell Lily: “Create a meeting reminder for 3pm tomorrow”", - 'guideMeetingInput': "Create a meeting reminder for 3pm tomorrow", - 'guideMeetingSend': "Lily will create a meeting reminder", - 'guideMeetingEnd': "Reminder created—try other commands", + 'guideMeetingInput': "3 बजे शामिल बैठक रिकॉर्डिंग बनाएं", + 'guideMeetingSend': + "लिली ने आपके प्रश्न का प्रतिक्रिया दिया—अन्य कमांड्स का प्रयास करें", + 'guideMeetingEnd': "पengingat bali created—try other commands", 'guidePhoneStart': "Tell Lily: “Call Mom”", - 'guidePhoneInput': "Call Mom", - 'guidePhoneSend': "Lily will make the call", - 'guidePhoneEnd': "Call placed—try other commands", + 'guidePhoneInput': "Mom को कॉल करें", + 'guidePhoneSend': + "लिली ने आपके प्रश्न का प्रतिक्रिया दिया—अन्य कमांड्स का प्रयास करें", + 'guidePhoneEnd': "पhoe call placed—try other commands", 'guideSmsStart': "Tell Lily: “Send Dad a text: I’ll be home for dinner”", - 'guideSmsInput': "Text Dad: I’ll be home for dinner", - 'guideSmsSend': "Lily will send the message", - 'guideSmsEnd': "Message sent—voice control is convenient", + 'guideSmsInput': "Dad को टेक्स्ट भेजें: मैं आज घर आऊंगा", + 'guideSmsSend': + "लिली ने आपके प्रश्न का प्रतिक्रिया दिया—अन्य कमांड्स का प्रयास करें", + 'guideSmsEnd': "संदेश भेजा गया—वॉयस नियंत्रण सुविधा है", // Meeting模块 - 首页与导航 "startMeeting": "बैठक शुरू करें", @@ -486,38 +494,39 @@ const Map hiIN = { 'recordingDetails': 'रिकॉर्डिंग विवरण', 'aiSummary': 'एआई सारांश', 'meetingTranscript': 'बैठक का प्रतिलेख', - 'files': 'Files', - 'mine': 'Mine', - 'connect': 'Connect', - 'allFiles': 'All Files', - 'searchInAllFiles': 'Search in all files', - 'from': 'From', - 'sortBy': 'Sort by', - 'creationTime': 'Creation Time', - 'bluetoothConnection': 'Bluetooth Connection', - 'meetingReconnect': 'Reconnect', - 'searching': 'Searching...', - 'searchFailed': 'Search failed, please check if Bluetooth is enabled', - 'aiPenNotFound': 'AI PEN device not found', - 'connectedToAiPen': 'Connected to AI PEN device', - 'checkingNewFiles': 'Checking for new files to import', - 'startingWifi': 'Starting Wi-Fi...', - 'newFilesDetected': 'New files detected, preparing to import', - 'noNewFiles': 'No new files to import', - 'connectingWifi': 'Connecting to Wi-Fi...', - 'wifiConnected': 'Wi-Fi connected successfully', - 'downloadingFiles': 'Downloading files...', - 'downloadingFileProgress': 'Total {total} files, downloading file {current}', - 'downloadComplete': 'Download complete', + 'files': 'फ़ाइलें', + 'mine': 'मेरी', + 'connect': 'कनेक्ट करें', + 'allFiles': 'सभी फ़ाइलें', + 'searchInAllFiles': 'सभी फ़ाइलों में खोजें', + 'from': 'से', + 'sortBy': 'क्रमबद्ध करें', + 'creationTime': 'निर्माण समय', + 'bluetoothConnection': 'ब्लूटूथ कनेक्शन', + 'meetingReconnect': 'पुनः कनेक्ट करें', + 'searching': 'खोज रहे हैं...', + 'searchFailed': 'खोज विफल, कृपया जांचें कि Bluetooth सक्षम है', + 'aiPenNotFound': 'AI PEN डिवाइस नहीं मिला', + 'connectedToAiPen': 'AI PEN डिवाइस से कनेक्टेड', + 'checkingNewFiles': 'आयात के लिए नई फ़ाइलें जांच रहे हैं', + 'startingWifi': 'Wi‑Fi शुरू हो रहा है...', + 'newFilesDetected': 'नई फ़ाइलें मिलीं, आयात की तैयारी हो रही है', + 'noNewFiles': 'आयात के लिए कोई नई फ़ाइल नहीं', + 'connectingWifi': 'Wi‑Fi से कनेक्ट हो रहे हैं...', + 'wifiConnected': 'Wi‑Fi सफलतापूर्वक कनेक्ट हुआ', + 'downloadingFiles': 'फ़ाइलें डाउनलोड हो रही हैं...', + 'downloadingFileProgress': + 'कुल {total} फ़ाइलें, फ़ाइल {current} डाउनलोड हो रही है', + 'downloadComplete': 'डाउनलोड पूर्ण', 'downloadCompleteInfo': - 'Download complete, {count} files in total, returning automatically in 2 seconds', + 'डाउनलोड पूर्ण, कुल {count} फ़ाइलें, 2 सेकंड में स्वतः वापस जा रहे हैं', // Meeting模块 - 录音功能 - 'startRecording': 'Start Recording', - 'liveRecording': 'Live Recording', - 'audioVideoRecording': 'Audio/Video Recording', - 'callRecording': 'Call Recording', - 'importAudio': 'Import Audio', + 'startRecording': 'रिकॉर्डिंग शुरू करें', + 'liveRecording': 'लाइव रिकॉर्डिंग', + 'audioVideoRecording': 'ऑडियो/वीडियो रिकॉर्डिंग', + 'callRecording': 'कॉल रिकॉर्डिंग', + 'importAudio': 'ऑडियो आयात करें', 'meetingRecordExitTitle': 'रिकॉर्डिंग से बाहर निकलें', // 退出录音 'meetingRecordExitMessage': 'बाहर निकलने से पहले क्या करना है चुनें', // 请选择离开后的操作 @@ -541,30 +550,30 @@ const Map hiIN = { 'रिकॉर्डिंग के दौरान रिकॉर्डिंग फ्लोटिंग बार (टाइमर/पॉज़/जारी) दिखाने के लिए हमें ओवरले अनुमति चाहिए।', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'overlayPermissionOpenSettingsFailed': 'सिस्टम सेटिंग्स अपने आप नहीं खुल सकीं। कृपया सेटिंग्स खोलें और ओवरले अनुमति मैन्युअल रूप से सक्षम करें।', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'transcribing': 'ट्रांसक्राइब हो रहा है...', + 'summarizing': 'सारांश बना रहा है...', + 'analyzing': 'अनलाइज़ कर रहा है...', + 'summaryComplete': 'सारांश पूरा हुआ', + 'generate': 'प्रारंभ करें', + 'overview': 'अपवाद', + 'transcription': 'ट्रांसक्राइब', + 'summary': 'सारांश', + 'mindMap': 'मिंड मैप', + 'editSpeaker': 'स्पीकर संपादित करें', + 'nameSpeaker': 'स्पीकर नाम', // Meeting模块 - 转写与总结 - 'reSummarize': 'Re-summarize', - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'reSummarize': 'फिर से सारांश बनाएँ', + 'dateAndTime': 'तारीख और समय', + 'location': 'स्थान', + 'attendees': 'प्रत्यक्ष', + 'inputLocation': 'स्थान दर्ज करें', + 'inputAttendees': 'प्रत्यक्ष दर्ज करें', // Meeting模块 - 模版与生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', + 'selectSummaryTemplate': 'सारांश टेम्पलेट चुनें', + 'useThisTemplate': 'यह टेम्पलेट उपयोग करें', + 'lastUsed': 'अंतिम उपयोग', 'create': 'बनाएँ', 'templateDetails': 'टेम्पलेट विवरण', 'tag': 'टैग', @@ -581,160 +590,161 @@ const Map hiIN = { 'inputDescHint': 'कृपया विवरण दर्ज करें', 'custom': 'कस्टम', 'pleaseEnter': 'कृपया दर्ज करें', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'viewAll': 'सभी देखें', + 'recordingLanguage': 'रिकॉर्डिंग भाषा', + 'chineseSimplified': 'चीनी मैडरिन (सोपी)', + 'meetingGenerateNow': 'अभी जनरेट करें', + 'keyEventsAnalyzed': '{count} प्रमुख घटनाएँ विश्लेषित की गईं।', 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + '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}', + 'importing': 'आयात हो रहा है...', + 'batchImporting': 'बैच आयात हो रहा है...', + 'importingLocalRecordings': 'लोकल रिकॉर्डिंग आयात हो रही हैं...', + 'importFailed': 'फ़ाइल आयात विफल: {filePath}, त्रुटि: {error}', + 'importSuccess': '{count} लोकल रिकॉर्डिंग सफलतापूर्वक आयात हुईं', + 'importError': 'आयात विफल: {error}', + 'pleaseSelectAudioFile': 'कृपया ऑडियो फ़ाइल चुनें', + 'shareAudio': 'सामग्री साझा करें', + 'shareComplete': 'साझा करना सफल', + 'shareFailed': 'साझा करना विफल: {error}', + 'fileProcessingFailed': 'फ़ाइल प्रोसेसिंग विफल: {filePath}, त्रुटि: {error}', // Meeting模块 - 思维导图 'saveMindMap': 'माइंड मैप सहेजें', - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', + 'shareMindMap': 'माइंड मैप साझा करें', + 'shareSuccess': 'साझा करना सफल', // 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', + 'askAI': 'अपचार करें ...', + 'askAIPrompt': 'आप क्या करना चाहते हैं?', + 'continueAsk': 'अगली प्रश्न पूछें', + 'todoList': 'टूडो लिस्ट', + 'extractConclusion': 'अंतिम निष्कर्ष निकालें', + 'generateKeyIndicators': 'कुंजी संकेत निर्माण करें', // 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...', + 'shareLink': 'साझा लिंक', + 'copyTranscript': 'ट्रांसक्रिप्शन कॉपी करें', + 'copySummary': 'सारांश कॉपी करें', + 'exportAudio': 'ऑडियो निर्यात करें', + 'exportTranscript': 'ट्रांसक्रिप्शन निर्यात करें', + 'shareMeetingAudio': 'सामग्री साझा करें', + 'exportSummary': 'सारांश निर्यात करें', + 'exportAs': 'निर्यात के रूप में', + 'exportingPDF': 'पीडीएफ निर्यात हो रहा है...', 'export': 'निर्यात', // Meeting模块 - 发言者 'applyToAllParagraphs': 'इस वक्ता के सभी अनुच्छेदों पर लागू करें', 'summaryWillBeUpdatedAutomatically': 'टेम्पलेट के आधार पर सारांश स्वतः अपडेट होगा', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', + 'nameCurrentSpeaker': 'वर्तमान बोलकार का नाम', + 'recentlyUsedNames': 'पिछले से उपयोग किए गए नाम', + 'applyToCurrentParagraph': 'वर्तमान अनुच्छेद पर लागू करें', + 'totalTime': 'कुल समय', 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', + 'सारांश बोलकारों को स्वतः अपडेट होगा', // Meeting模块 - 云端同步 - 'syncToCloud': 'Sync to Cloud', + 'syncToCloud': 'क्लाउड में सिंक करें', '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', + 'अपनी रिकॉर्डिंग को स्वतः क्लाउड में सिंक करें; आप किसी भी VOITRANS ऐप या VOITRANS वेब (web.voitrans.com) से रिकॉर्डिंग चला, प्रबंधित और साझा कर सकते हैं।', + 'syncToVoitransApp': 'VOITRANS ऐप में सिंक करें', + 'transcriptionRecord': 'ट्रांसक्रिप्शन रिकॉर्ड', // Meeting模块 - 我的页面 - 'transcriptionRecords': 'Transcription Records', - 'templateCommunity': 'Template Community', - 'comingSoon': 'Coming Soon', - 'integration': 'Integration', + 'transcriptionRecords': 'ट्रांसक्रिप्शन रिकॉर्ड्स', + 'templateCommunity': 'टेम्पलेट समुदाय', + 'comingSoon': 'आगामी में उपलब्ध', + 'integration': 'इंटरेस्टेड इन्ट्रेस्ट्स', 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', - 'enabled': 'Enabled', - 'disabled': 'Disabled', - 'myVoitransDevice': 'My VOITRANS Device', - 'helpAndFeedback': 'Help & Feedback', - 'aboutVoitrans': 'About VOITRANS', - 'meetingDays': 'Days', - 'meetingHours': 'Hours', - 'voitransAiMember': 'Voitrans AI Member', - 'unlockStarterMember': 'Unlock Starter Member', - 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', - 'unlockNow': 'Unlock Now', + 'enabled': 'सक्षम', + 'disabled': 'अक्षम', + 'myVoitransDevice': 'मेरा VOITRANS डिवाइस', + 'helpAndFeedback': 'सहायता और प्रतिक्रिया', + 'aboutVoitrans': 'VOITRANS बारे में', + 'meetingDays': 'दिन', + 'meetingHours': 'घंटा', + 'voitransAiMember': 'Voitrans AI सदस्यता', + 'unlockStarterMember': 'Unlock Starter सदस्यता', + 'bindDeviceToActivate': + 'Starter सदस्यता सक्रिय करने के लिए Voitrans डिवाइस बाँधें', + 'unlockNow': 'अभी अनलॉक करें', // Meeting模块 - 会员与升级 - 'comparison': 'Comparison', - 'detailedInfo': 'Detailed Information', - 'monthlyTranscriptionTime': 'Monthly Transcription Time', - 'unlimited': 'Unlimited', - 'professionalTemplates': 'Professional Templates', - 'limited': 'Limited', - 'fullTemplates': 'Full Templates', - 'professionalTerms': 'Professional Terms', - 'customTemplates': 'Custom Templates', - 'visualMindMap': 'Visual Mind Map', - 'speakerIdentification': 'Speaker Identification', + 'comparison': 'प्रचार', + 'detailedInfo': 'विस्तृत जानकारी', + 'monthlyTranscriptionTime': 'माहिका ट्रांसक्रिप्शन समय', + 'unlimited': 'असीमित', + 'professionalTemplates': 'पेशेवर टेम्पलेट्स', + 'limited': 'सीमित', + 'fullTemplates': 'पूर्ण टेम्पलेट्स', + 'professionalTerms': 'पेशेवर शर्तें', + 'customTemplates': 'सutzer परिभाषित टेम्पलेट्स', + 'visualMindMap': 'विजुअल माइंड मैप', + 'speakerIdentification': 'बोलकार पहचान', 'aiVoiceEnhancement': 'AI Voice Enhancement', - 'audioImport': 'Audio Import', - 'multipleExportFormats': 'Multiple Export Formats', - 'professionalSummaryTemplates': 'Professional Summary Templates', + 'audioImport': 'ऑडियो आयात', + 'multipleExportFormats': 'अनेक निर्यात स्वरूप', + 'professionalSummaryTemplates': 'पेशेवर सारांश टेम्पलेट्स', 'professionalTemplateDesc': - 'Professional template design to improve your work efficiency. Customized according to industry needs.', + 'पेशेवर टेम्पलेट डिजाइन करें ताकि आपकी कार्य प्रचार की эффективность बढ़ सके। इसे उद्योगी आवश्यकताओं के अनुसार अनुकूलित किया गया है।', 'customTemplateDesc': - 'You can customize summary prompts according to your needs and use them to generate the required summaries.', + 'आप अपनी आवश्यकताओं के अनुसार सारांश प्रॉम्प्ट को अनुकूलित कर सकते हैं और उन्हें उपयोग करके आवश्यक सारांशें उत्पन्न कर सकते हैं।', 'askAiDesc': - 'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.', + 'रिकॉर्डिंग से गहरी जानकारी स्मार्ट तरीके से निकालें और एक क्लिक में डेटा टेबल, चर्चा के प्रमुख निष्कर्ष, To‑Do सूची, रिपोर्ट ईमेल और अन्य स्वरूपित सामग्री बनाएं।', 'visualMindMapDesc': - 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', + 'पूर्ण टेक्स्ट के लिए अधिक��фективी समझ के लिए माइन्ड मैप का उपयोग करें।', 'templateCommunityDesc': - 'Discover, share, and get inspiration from the template library created by users.', + 'उपयोगकर्ताओं द्वारा बनाए गए टेम्पलेट लाइब्रेरी से खोजें, साझा करें और संकल्पित करें।', 'speakerIdentificationDesc': - 'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.', + 'ऑडियो ट्रांसक्रिप्शन ने बोलकार पहचान की समर्थन की है, जिससे बोलकारों के नाम को सटीक रूप से पहचाना और पुनर्प्राप्त किया जा सकता है। इसके अलावा, सारांश भी अधिक सटीक हो जाएगा।', 'privateCloudSyncDesc': - 'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.', + 'आपकी रिकॉर्डिंग और ट्रांसक्रिप्शन समर्पित क्लाउड सर्वरों पर सुरक्षित रूप से संग्रहीत होंगे; अपलोड और डाउनलोड के दौरान पूर्ण एन्क्रिप्शन के साथ, ताकि गोपनीयता और सुरक्षा सुनिश्चित हो।', 'aiVoiceEnhancementDesc': - 'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.', + 'AI वॉय इंजीनियरिंग ने कई नॉस रेड्यूशन सेटिंग्स का समर्थन किया है, जिससे पृष्ठभूमि नॉस को सटीक रूप से पहचाना और निकाला जा सकता है, बोलकार की विश्लेषण की सटीकता बढ़ सकती है, और ऑडियो प्लेबैक गुणवत्ता बढ़ सकती है।', '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.', - 'upgradeMembership': 'Upgrade Your Membership', - 'yearlySubscription': 'Yearly Subscription', - 'monthlySubscription': 'Monthly Subscription', + 'अपनी ऑडियो रिकॉर्डिंग, ट्रांसक्रिप्शन टेक्स्ट और सारांश को विभिन्न फ़ॉर्मैट (TXT, PDF, JPEG) में निर्यात करें।', + 'upgradeMembership': 'अपनी सदस्यता अपग्रेड करें', + 'yearlySubscription': 'वर्षीय सदस्यता', + 'monthlySubscription': 'माहिका सदस्यता', 'proMonthly': 'Pro ¥60/month', 'proMonthlyDesc': - '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', - 'sevenDayTrial': '7-day Free Trial', - 'unlimitedMonthly': 'Unlimited ¥120/month', + '7-дневный бесплатный пробный период, फिर ¥800/year. किसी समय तक भी कैंसल कर सकते हैं।', + 'sevenDayTrial': '7-дневный бесплатный пробный период', + 'unlimitedMonthly': 'असीमित ¥120/month', 'unlimitedMonthlyDesc': - '7-day free trial, then ¥1600/year. Cancel anytime before trial ends.', - 'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.', + '7-дневный бесплатный пробный период, फिर ¥1600/year. किसी समय तक भी कैंसल कर सकते हैं।', + 'trialNote': '*7-дневный бесплатный пробный период, फिर हर साल ¥120/year.', 'proPrice': 'Pro ¥120', 'proMonthlyPrice': '¥120/month', - 'subscribe': 'Subscribe', - 'unlimitedPrice': 'Unlimited ¥198', + 'subscribe': 'पंजीकरण करें', + 'unlimitedPrice': 'असीमित ¥198', 'unlimitedMonthlyPrice': '¥198/month', 'upgradeNote': - '*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account', - 'buyMoreTranscriptionTime': 'Buy More Transcription Time', - 'sixThousandMinutes': '6,000 minutes', - 'threeThousandMinutes': '3,000 minutes', - 'sixHundredMinutes': '600 minutes', - 'oneHundredTwentyMinutes': '120 minutes', - 'validityPeriod': '*Validity Period: ', + '*अधिक प्राप्ति अवधि खरीदने के बाद, प्राप्ति अवधि के बारे में जानकारी के लिए कृपया हमारे समर्थन कॉल करें।', + 'buyMoreTranscriptionTime': 'अधिक ट्रांसक्रिप्शन समय खरीदें', + 'sixThousandMinutes': '6,000 मिनट', + 'threeThousandMinutes': '3,000 मिनट', + 'sixHundredMinutes': '600 मिनट', + 'oneHundredTwentyMinutes': '120 मिनट', + 'validityPeriod': '*प्राप्ति अवधि: ', 'validityNote': - 'Activated immediately after purchase, valid for 2 years after activation.', - 'purchase': 'Purchase', + 'खरीदे बाद немедленно सक्रिय होता है, सक्रिय होने के बाद 2 साल की प्राप्ति अवधि होती है।', + 'purchase': 'खरीदा', // Meeting模块 - 录音语言 - 'recordLanguage': 'Recording Language', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', + 'recordLanguage': 'रिकॉर्डिंग भाषा', + 'cantonese': 'कांटोनेसी', + 'sichuan': 'सिचौन्डी डायलेक्ट', + 'shanghai': 'शांगहाइड डायलेक्ट', // Meeting模块 - 错误提示 - 'meetingUnknownLanguage': 'Unknown Language', + 'meetingUnknownLanguage': 'अज्ञात भाषा', 'analysisFailed': 'विश्लेषण विफल, कृपया बाद में पुनः प्रयास करें', 'transcriptionFailed': 'ट्रांसक्रिप्शन विफल, कृपया बाद में पुनः प्रयास करें', 'summaryFailed': 'सारांश विफल, कृपया बाद में पुनः प्रयास करें', @@ -755,10 +765,10 @@ const Map hiIN = { "translationRecharge": "अनुवाद रिचार्ज", "meetingAssistantRecharge": "बैठक असिस्टेंट रिचार्ज", "cloudSync": "क्लाउड सिंक्रोनाइज़ेशन रिचार्ज", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "memberService": "सदस्य सेवा", + "bindRewardTitle": "पुरस्कार", "bindRewardSimpleDesc": - "First bind device reward has been issued. Tap OK to close.", + "पहली बार डिवाइस बाँधने का पुरस्कार जारी कर दिया गया है। बंद करने के लिए OK टैप करें।", "joinDevice": "कनेक्टेड डिवाइस:", "accountId": "खाता आईडी:", "systemSetting": "सिस्टम सेटिंग", @@ -807,20 +817,20 @@ const Map hiIN = { "loading": "लोड हो रहा है...", // 设备管理模块 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", - "deviceTypeSmartEye": "Smart Glasses", + "deviceTypeUnknown": "अज्ञात डिवाइस", + "deviceTypeClassicBluetoothHeadset": "क्लासिक ब्लूटूथ हेडसेट", + "deviceTypeBleBluetoothHeadset": "BLE ब्लूटूथ हेडसेट", + "deviceTypeSmartVoiceRecorder": "स्मार्ट वॉयस रिकॉर्डर", + "deviceTypeSmartEye": "स्मार्ट ग्लासेस", "unbind": "अनबाइंड करें", - "noDevicesBound": "No devices bound yet", - "pleaseBindDeviceFirst": "Please bind a device first to manage", - "noMacAddress": "No MAC Address", - "licenseCode": "License Code", - "confirmUnbind": "Confirm Unbind", + "noDevicesBound": "अभी तक कोई डिवाइस बाँधा नहीं गया", + "pleaseBindDeviceFirst": "प्रबंधित करने के लिए पहले एक डिवाइस बाँधें", + "noMacAddress": "कोई MAC पता नहीं मिला", + "licenseCode": "लाइसेंस कोड", + "confirmUnbind": "अनबाइंड कन्फ्र्म", "confirmUnbindMessage": - "Are you sure you want to unbind device \"{deviceName}\"?", - "confirmUnbindAction": "Confirm Unbind", + "क्या आप वाकई डिवाइस \"{deviceName}\" को अनबाइंड करना चाहते हैं?", + "confirmUnbindAction": "अनबाइंड कन्फ्र्म", // Agent模块 - 主界面 "Lily": "Lily", @@ -851,22 +861,22 @@ const Map hiIN = { "loadFailedClickRetry": "लोड करने में विफल, पुनः प्रयास करने के लिए क्लिक करें", "swipeUpForMore": "अधिक के लिए ऊपर स्वाइप करें", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 + "callingTool": "मैं आपकी मदद कर रहा हूँ, कृपया प्रतीक्षा करें!", // 正在帮您,请稍等! + "voice_interrupt": "वॉयस बाधा", // 语音打断 'voice_interrupt_tip': 'सक्षम होने पर: बोलते समय AI आपकी आवाज़ से बाधित नहीं होगा और एक समय में केवल एक वार्तालाप चरण संभाल सकता है। नया चरण शुरू करने के लिए, बस वेक-अप शब्द बोलें।', // Agent模块 - 预设提示词 - "presetMusic": "Play some music", // 来点音乐 - "presetNavigation": "Navigation to", // 导航 - "presetWeather": "Today's weather", // 今日天气 - "presetNews": "Today's news", // 今日新闻 - "presetFood": "Nearby food", // 美食 - "playSomeMusic": "Play some popular music", // 播放一些流行音乐 - "navigationTo": "Please help me navigate to", // 导航到 - "todayWeather": "How's the weather today?", // 今日天气 - "todayNews": "What's the news today?", // 今日新闻 - "nearbyFood": "What delicious food is nearby?", // 美食 + "presetMusic": "और संगीत चलाएं", // 来点音乐 + "presetNavigation": "नेविगेट करें", // 导航 + "presetWeather": "आज का погода", // 今日天气 + "presetNews": "आज का खबरें", // 今日新闻 + "presetFood": "आसपास की खाने", // 美食 + "playSomeMusic": "और कुछ पॉपरल संगीत चलाएं", // 播放一些流行音乐 + "navigationTo": "कृपया मुझे यहाँ नेविगेट करने में मदद करें", // 导航到 + "todayWeather": "आज का पогода कैसी है?", // 今日天气 + "todayNews": "आज का खबरें क्या हैं?", // 今日新闻 + "nearbyFood": "आसपास की खाने क्या है?", // 美食 // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'नमस्ते! मैं **Lily** हूँ, मैं आपकी मदद कर सकता हूँ:\n\n' @@ -911,11 +921,12 @@ const Map hiIN = { 'generatedByAi': 'एआई द्वारा उत्पन्न', // Agent模块 - 工具调用 - 'toolCall': 'Tool Call', - 'noResult': 'No Result', - 'noToolCallContentToCopy': 'No tool call content to copy', - 'toolCallDetails': 'Tool Call Details:', - 'toolCallContentCopied': 'Tool call content copied to clipboard', + 'toolCall': 'टूल कॉल', // 工具调用 + 'noResult': 'कोई परिणाम नहीं मिला', + 'noToolCallContentToCopy': 'कोई टूल कॉल सामग्री कॉपी करने के लिए नहीं मिली', + 'toolCallDetails': 'टूल कॉल विवरण:', // 工具调用详情 + 'toolCallContentCopied': + 'टूल कॉल सामग्री क्लिपबोर्ड पर कॉपी की गई', // 工具调用内容已复制 // Agent模块 - 音乐卡片 'recommendedMusic': 'यहां कुछ अनुशंसित संगीत हैं:', @@ -938,27 +949,28 @@ const Map hiIN = { "tsransit": "पारगमन", // Agent模块 - 导航选择 - 'selectNavigationApp': 'Select Navigation App', - 'amapMap': 'Amap', - 'useAmapNavigation': 'Navigate with Amap', - 'baiduMap': 'Baidu Maps', - 'useBaiduNavigation': 'Navigate with Baidu Maps', - 'googleMap': 'Google Maps', - 'useGoogleNavigation': 'Navigate with Google Maps', - 'appleMap': 'Apple Maps', - 'useAppleNavigation': 'Navigate with Apple Maps', - 'builtInNavigation': 'Built-in Navigation', - 'useBuiltInNavigation': 'Navigate with built-in map', - 'navigationStartFailed': 'Failed to start navigation', + 'selectNavigationApp': 'नेविगेट करने के लिए ऐप चुनें', // 选择导航应用 + 'amapMap': 'अमप', + 'useAmapNavigation': 'अमप के साथ नेविगेट करें', // 使用Amap导航 + 'baiduMap': 'बादुओ मैप्स', + 'useBaiduNavigation': 'बादुओ मैप्स के साथ नेविगेट करें', // 使用Baidu Maps导航 + 'googleMap': 'गूगल मैप्स', + 'useGoogleNavigation': 'गूगल मैप्स के साथ नेविगेट करें', // 使用Google Maps导航 + 'appleMap': 'एपल मैप्स', + 'useAppleNavigation': 'एपल मैप्स के साथ नेविगेट करें', // 使用Apple Maps导航 + 'builtInNavigation': 'बिल्टइन नेविगेशन', // 内置导航 + 'useBuiltInNavigation': 'बिल्टइन नेविगेशन के साथ नेविगेट करें', // 使用内置导航 + 'navigationStartFailed': 'नेविगेशन शुरू करने में विफल', 'cannotPlayMusicListRetryLater': - 'Cannot play music list, please try again later', - 'cannotPlaySong': 'Cannot play song', - 'openMapError': 'Error opening map', - 'pleaseInstallAmapApp': 'Please install the Amap app first', - 'pleaseInstallBaiduMapApp': 'Please install the Baidu Maps app first', - 'appleMapStartFailed': 'Apple Maps failed to start', - 'appleMapUnavailable': 'Apple Maps unavailable', - 'openAppleMapError': 'Error opening Apple Maps', + 'संगीत सूची नहीं चल सकी, कृपया बाद में पुनः प्रयास करें', + 'cannotPlaySong': 'संगीत नहीं चल सकी', // 无法播放歌曲 + 'openMapError': 'मैप खोलने में त्रुटि', + 'pleaseInstallAmapApp': 'कृपया पहले Amap ऐप इंस्टॉल करें', // 请先安装Amap应用 + 'pleaseInstallBaiduMapApp': + 'कृपया पहले Baidu Maps ऐप इंस्टॉल करें', // 请先安装Baidu Maps应用 + 'appleMapStartFailed': 'Apple Maps शुरू नहीं हो सका', // Apple Maps启动失败 + 'appleMapUnavailable': 'Apple Maps उपलब्ध नहीं है', // Apple Maps不可用 + 'openAppleMapError': 'Apple Maps खोलने में त्रुटि', // Apple Maps打开错误 // Agent模块 - 天气卡片 'weatherQuery': 'मौसम की स्थिति की पूछताछ:', @@ -1012,8 +1024,8 @@ const Map hiIN = { "strongWind": "तेज हवा", // 翻译模块 - 中间层 - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", + "pictureTranslation": "चित्र अनुवाद", + "textTranslation": "पाठ अनुवाद", // 翻译模块 - 主页 "translationHistory": "अनुवाद इतिहास", @@ -1023,32 +1035,32 @@ const Map hiIN = { "phoneUser": "फ़ोन उपयोगकर्ता", "selectSourceLanguage": "स्रोत भाषा चुनें", "selectTargetLanguage": "लक्ष्य भाषा चुनें", - "me": "Me", - "counterPart": "Counterpart", + "me": "मेरा", + "counterPart": "अन्य पक्ष", "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - "autoDetect": "Auto Detect", // 自动检测 + "कृपया सुनिश्चित करें कि Bluetooth हेडसेट फ़ोन से कनेक्ट है और कॉल स्थिति में है", + "autoDetect": "ऑटो डिटेक्ट", // 自动检测 // 翻译模块 - 文本翻译 - "languageDetectionFailed": "Language detection failed", + "languageDetectionFailed": "भाषा पहचान विफल", // 翻译模块 - 悬浮窗与权限 - 'disableFloatingWindow': 'Disable Floating Window', - 'enableFloatingWindow': 'Enable Floating Window', - 'permissionTip': 'Permission Tip', + 'disableFloatingWindow': 'फ़्लोटिंग विंडो अक्षम करें', + 'enableFloatingWindow': 'फ़्लोटिंग विंडो सक्षम करें', + 'permissionTip': 'अनुमति सुझाव', 'micPermissionRequiredForRecording': - 'Microphone permission is required for recording', - 'deleteTranslationRecordError': 'Error deleting translation record: @error', - "translationFailed": "Translation failed", - "translating": "Translating", - "translate": "Translate", - "pleaseInputText": "Please input text", + 'रिकॉर्डिंग के लिए माइक्रोफोन अनुमति आवश्यक है', + 'deleteTranslationRecordError': 'अनुवाद रिकॉर्ड हटाने में त्रुटि: @error', + "translationFailed": "अनुवाद विफल", + "translating": "अनुवाद कर रहा है", // 正在翻译 + "translate": "अनुवाद करें", + "pleaseInputText": "कृपया पाठ दर्ज करें", "inputTextToTranslate": "कृपया अनुवाद करने के लिए पाठ दर्ज करें", - "textTooLong": "Text too long, max 5000 characters", + "textTooLong": "पाठ बहुत लंबा है, अधिकतम 5000 अक्षर हैं", // 文本太长,最大5000个字符 // 翻译模块 - 历史记录 "noTranslationHistory": "अभी तक कोई इतिहास नहीं", - "historyRecords": "History Records", + "historyRecords": "इतिहास रिकॉर्ड", "clearResults": "Clear Results", "clearHistory": "इतिहास साफ़ करें", "clearHistoryConfirm": @@ -1059,55 +1071,55 @@ const Map hiIN = { "क्या आप वाकई इस सत्र के सभी अनुवाद रिकॉर्ड हटाना चाहते हैं? यह क्रिया पूर्ववत नहीं की जा सकती है।", // 翻译模块 - 图片翻译 - "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", + "selectImageSource": "छवि स्रोत चुनें", + "imagePreview": "छवि पूर्वावलोकन", + "translationResult": "अनुवाद परिणाम", + "recognitionResult": "प्रतिक्रिया परिणाम", // 识别结果 + "translatedImagePreview": "अनुवादित छवि पूर्वावलोकन", + "translatedImageLoadFailed": "अनुवादित छवि लोड करने में विफल", + "pleaseSelectImage": "कृपया एक छवि चुनें", + "imageLoadFailed": "छवि लोड विफल", + "imageQuality": "छवि गुणवत्ता", // 图像质量 + "maxSize": "अधिकतम आकार", + "close": "बंद करें", + "setImageQuality": "छवि गुणवत्ता सेट करें", + "currentQuality": "वर्तमान गुणवत्ता: @value%", + "setMaxSize": "अधिकतम आकार सेट करें", + "currentMaxSize": "वर्तमान अधिकतम आकार: @pxpx", + "waitingForAction": "कार्रवाई कzek", + "pleaseSelectImageToStart": "शुरू करने के लिए कृपया एक छवि चुनें", + "chooseImage": "छवि चुनें", + "openingCamera": "कैमरा खोल रहा है...", + "openingPhotoAlbum": "फोटो एल्बम खोल रहा है...", + "cancelled": "रद्द कर दिया गया", + "userCancelledSelection": "उपयोगकर्ता चयन रद्द कर दिया गया", + "translatingImage": "छवि अनुवाद कर रहा है", // 正在翻译图像 + "callingImageTranslateService": "छवि अनुवाद सेवा कॉल की जा रही है...", + "savingRecord": "रिकॉर्ड सहेज रहे हैं", + "savingTranslationResult": "अनुवाद परिणाम सहेज रहे हैं...", + "translationCompleted": "अनुवाद पूर्ण", + "allStepsCompleted": "सभी चरण पूर्ण", // 所有步骤完成 + "processingFailed": "प्रोसेसिंग विफल", "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", + "छवि प्रोसेसिंग या अनुवाद विफल। कृपया पुनः प्रयास करें।\nत्रुटि: {error}", + "imageTooLarge": "छवि आकार 4MB से अधिक", // 图像大小超过4MB限制 "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", + "छवि आकार 4MB से अधिक। गुणवत्ता या आयाम कम करें और पुनः प्रयास करें", // 图像大小超过4MB限制。减少质量或尺寸并重试 + "emptyTranslationResult": "छवि अनुवाद API ने खाली परिणाम लौटाया", "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", + "छवि अनुवाद API त्रुटि। नेटवर्क जांचें और पुनः प्रयास करें", + "permissionRequired": "अनुमति आवश्यक", + "cameraPermissionRequired": "फोटो लेने के लिए कैमरा अनुमति आवश्यक है", "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", + "छवि चुनने के लिए फोटो एल्बम अनुमति आवश्यक है", + "translationDetails": "अनुवाद विवरण", + "originalImage": "ऑरिजनल छवि", // 原始图像 + "sourceLanguage": "स्रोत भाषा", + "targetLanguage": " țintă limbă", // 目标语言 + "translationTime": "अनुवाद समय", + "shareInDevelopment": "Sharing feature under development", // 分享功能正在开发中 // 翻译模块 - 录音文件 "translateAudioFiles": "ऑडियो फ़ाइलों का अनुवाद करें", @@ -1205,18 +1217,18 @@ const Map hiIN = { 'खाता सेवा प्रारंभ की गई है', // AccountService 已初始化 // 权限模块 - 'meetingStoragePermission': 'Storage', + 'meetingStoragePermission': 'स्टोरेज', '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', - 'notificationPermissions': 'Notification Permissions', - 'storagePermissions': 'Storage Permissions', - 'microphonePermissions': 'Microphone Permissions', - 'alarmPermissions': 'Alarm Permissions', + 'bluetoothPermissions': 'ब्लूटूथ अनुमतियाँ', + 'notificationPermissions': 'सूचना अनुमतियाँ', + 'storagePermissions': 'स्टोरेज अनुमतियाँ', + 'microphonePermissions': 'माइक्रोफोन अनुमतियाँ', + 'alarmPermissions': 'अलार्म अनुमतियाँ', 'calendarPermissions': 'कैलेंडर अनुमतियाँ', 'locationPermissions': 'स्थान अनुमतियाँ', 'phone': 'फ़ोन', @@ -1230,7 +1242,7 @@ const Map hiIN = { 'phonePermissionDesc': 'कॉल करने के लिए उपयोग किया जाता है', 'smsPermissionDesc': 'एसएमएस भेजने के लिए उपयोग किया जाता है', 'alarmPermissionDesc': - 'Used to set exact alarms to ensure reminders trigger on time', + 'सटीक अलार्म सेट करने के लिए उपयोग किया जाता है ताकि रिमाइंडर समय पर ट्रिगर हों', 'calendarWritePermissionDesc': 'कैलेंडर ईवेंट और रिमाइंडर बनाने के लिए उपयोग किया जाता है', 'calendarFullAccessPermissionDesc': @@ -1250,72 +1262,75 @@ const Map hiIN = { 'smsPermissionDetailDesc': 'एसएमएस भेजने के लिए एसएमएस अनुमति की आवश्यकता होती है', 'alarmPermissionDetailDesc': - 'This permission is required to set exact alarms and ensure reminders trigger on time', + 'सटीक अलार्म सेट करने और रिमाइंडर समय पर ट्रिगर होने के लिए यह अनुमति आवश्यक है', 'calendarWritePermissionDetailDesc': 'कैलेंडर ईवेंट बनाने के लिए कैलेंडर में लिखने की अनुमति की आवश्यकता होती है', 'calendarFullAccessPermissionDetailDesc': 'कैलेंडर ईवेंट प्रबंधित करने के लिए पूर्ण कैलेंडर अनुमति की आवश्यकता होती है', 'locationPermissionDetailDesc': 'स्थान की जानकारी प्राप्त करने के लिए स्थान अनुमति की आवश्यकता होती है', - 'contactsPermissionDesc': 'Used for accessing contact information', + 'contactsPermissionDesc': + 'कॉन्टैक्ट जानकारी तक पहुँच के लिए उपयोग किया जाता है', 'contactsPermissionDetailDesc': - 'Phone call and SMS functionality requires contacts permission to select contacts', + 'कॉन्टैक्ट चुनने के लिए कॉल और SMS सुविधाओं को कॉन्टैक्ट अनुमति की आवश्यकता होती है', 'bluetoothPermissionDesc': - 'Used for connecting and managing Bluetooth devices', + 'Bluetooth डिवाइस कनेक्ट करने और प्रबंधित करने के लिए उपयोग किया जाता है', 'bluetoothPermissionDetailDesc': - 'Connecting to Bluetooth headphones and other devices requires Bluetooth permission', - 'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices', + 'Bluetooth हेडफ़ोन और अन्य डिवाइस से कनेक्ट करने के लिए Bluetooth अनुमति आवश्यक है', + 'bluetoothScanPermissionDesc': + 'आस-पास के Bluetooth डिवाइस स्कैन करने के लिए उपयोग किया जाता है', 'bluetoothScanPermissionDetailDesc': - 'Scanning for nearby Bluetooth devices requires Bluetooth scan permission', - 'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices', + 'आस-पास के Bluetooth डिवाइस स्कैन करने के लिए Bluetooth स्कैन अनुमति आवश्यक है', + 'bluetoothConnectPermissionDesc': + 'Bluetooth डिवाइस से कनेक्ट करने के लिए उपयोग किया जाता है', 'bluetoothConnectPermissionDetailDesc': - 'Connecting to Bluetooth devices requires Bluetooth connect permission', + 'Bluetooth डिवाइस से कनेक्ट करने के लिए Bluetooth कनेक्ट अनुमति आवश्यक है', 'notificationPermissionDesc': 'Used for sending notification messages', 'notificationPermissionDetailDesc': - 'App needs notification permission to send you important alerts and messages', + 'महत्वपूर्ण अलर्ट और संदेश भेजने के लिए ऐप को सूचना अनुमति की आवश्यकता होती है', 'appNeedsPermissionForFullFunction': 'ऐप को पूर्ण कार्यक्षमता के लिए इस अनुमति की आवश्यकता है', 'permanentDenialText': 'आपने {permission} अनुमति को स्थायी रूप से अस्वीकार कर दिया है, कृपया इसे सक्षम करने کے لیے ऐप सेटिंग्स पर जाएं', 'goToSettings': 'सेटिंग्स पर जाएं', - 'bluetoothScan': 'Bluetooth Scan', - 'bluetoothConnect': 'Bluetooth Connect', + 'bluetoothScan': 'ब्लूटूथ स्कैन', + 'bluetoothConnect': 'ब्लूटूथ कनेक्ट', 'bluetoothScanExplanation': - 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', + 'आस-पास के Bluetooth डिवाइस स्कैन करने के लिए ऐप को Bluetooth स्कैन अनुमति की आवश्यकता है।', 'bluetoothConnectExplanation': - 'The app needs Bluetooth connect permission to connect to Bluetooth devices.', + 'Bluetooth डिवाइस से कनेक्ट करने के लिए ऐप को Bluetooth कनेक्ट अनुमति की आवश्यकता है।', 'locationForBluetoothExplanation': - 'The app needs location permission to scan Bluetooth devices.', + 'Bluetooth डिवाइस स्कैन करने के लिए ऐप को लोकेशन अनुमति की आवश्यकता है।', 'bluetoothScanPermanentDenial': - 'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.', + 'Bluetooth स्कैन अनुमति स्थायी रूप से अस्वीकार कर दी गई है, कृपया सेटिंग्स में जाकर इसे मैन्युअल रूप से सक्षम करें।', 'bluetoothConnectPermanentDenial': - 'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.', + 'Bluetooth कनेक्ट अनुमति स्थायी रूप से अस्वीकार कर दी गई है, कृपया सेटिंग्स में जाकर इसे मैन्युअल रूप से सक्षम करें।', 'locationPermanentDenial': - 'Location permission has been permanently denied, please go to settings to enable it manually.', + 'लोकेशन अनुमति स्थायी रूप से अस्वीकार कर दी गई है, कृपया सेटिंग्स में जाकर इसे मैन्युअल रूप से सक्षम करें।', 'notificationPermission': 'Notification', 'locationPermission': 'Location', 'notificationPermissionExplanation': - 'Notification permission is required to display music playback status.', + 'संगीत प्लेबैक स्थिति दिखाने के लिए सूचना अनुमति आवश्यक है।', '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.', + 'आपने लोकेशन अनुमति स्थायी रूप से अस्वीकार कर दी है, कृपया सेटिंग्स में जाकर इसे सक्षम करें।', 'storagePermission': 'Storage', 'microphonePermissionExplanation': - 'We need microphone permission to record audio content.', + 'ऑडियो सामग्री रिकॉर्ड करने के लिए हमें माइक्रोफोन अनुमति की आवश्यकता है।', 'storagePermissionExplanation': - 'We need storage permission so you can select and upload audio files.', + 'ऑडियो फ़ाइलें चुनने और अपलोड करने के लिए हमें स्टोरेज अनुमति की आवश्यकता है।', 'microphonePermissionPermanentDenial': - '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', + 'permissionUtilPermission': ' अनुमति', + 'permissionUtilRestricted': ' अनुमति प्रतिबंधित', 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'यह फीचर वर्तमान डिवाइस पर उपलब्ध नहीं है या प्रतिबंधित है। कृपया डिवाइस सेटिंग्स या सिस्टम प्रतिबंध जांचें', 'permissionUtilConfirm': 'OK', // 原生前台服务通知(Android) @@ -1405,27 +1420,27 @@ const Map hiIN = { 'bleConnectionFailed': 'BLE कनेक्शन विफल', 'deviceAuthorizationFailedCheckCode': 'डिवाइस प्राधिकरण विफल, कृपया प्राधिकरण कोड जांचें', - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + 'bluetoothGuideTitle': 'मैन्युअल Bluetooth सक्रिय करना आवश्यक है', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'कृपया इन चरणों का पालन करें:', // 请按照以下步骤操作: 'bluetoothGuideStep1': - 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'Bluetooth सक्षम करें: सेटिंग्स → Bluetooth → चालू करें', // 开启蓝牙:设置 → 蓝牙 → 开启 'bluetoothGuideStep2': - 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'डिवाइस कनेक्ट करें: "मेरे डिवाइस" में अपना डिवाइस खोजें और कनेक्ट करने के लिए टैप करें', // 连接设备:在"我的设备"中找到您的设备并点击连接 'bluetoothGuideStep3': - 'Return to app to continue pairing process', // 返回应用继续配对流程 + 'पेयरिंग प्रक्रिया जारी रखने के लिए ऐप पर वापस आएँ', // 返回应用继续配对流程 'bluetoothGuideTip': - 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': 'I Know', // 我知道了 + 'सुझाव: Bluetooth सेटिंग्स जल्दी खोलने के लिए Control Center में Bluetooth आइकन को लंबे समय तक दबाकर रखें', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + '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:", + "firstBindRewardTitle": "स्वागत पुरस्कार", + "firstBindRewardDesc": "आपको बाँधने के पुरस्कार मिल गए हैं।", + "vipLevelLabel": "VIP स्तर:", + "expiryLabel": "समाप्ति:", + "notActivated": "सक्रिय नहीं", + "aiChatCreditsLabel": "AI चैट क्रेडिट:", + "translationCreditsLabel": "अनुवाद क्रेडिट:", + "meetingCreditsLabel": "बैठक क्रेडिट:", "ok": "OK", // 用户反馈模块 @@ -1457,13 +1472,14 @@ const Map hiIN = { "connectionFailed": "कनेक्शन विफल", "retryConnection": "कनेक्शन पुनः प्रयास करें", "ota_updateNow": "अभी अपडेट करें", - "otaVersionInfoFailed": "Failed to get version info. Please try again later.", + "otaVersionInfoFailed": + "संस्करण जानकारी प्राप्त करने में विफल। कृपया बाद में पुनः प्रयास करें।", "otaDeviceInfoUnavailable": - "Unable to get device info. Please check the connection and retry.", + "डिवाइस की जानकारी प्राप्त नहीं हो सकी। कृपया कनेक्शन जांचें और फिर कोशिश करें।", "otaProductInfoUnavailable": - "Unable to identify the device. Please reconnect and retry.", + "डिवाइस की पहचान नहीं हो सकी। कृपया फिर से कनेक्ट करें और पुनः प्रयास करें।", "otaFirmwareVersionInvalid": - "Firmware version is abnormal. Please reconnect and retry.", + "फर्मवेयर संस्करण असामान्य है। कृपया फिर से कनेक्ट करें और पुनः प्रयास करें।", "keepConnectedDontClose": "डिवाइस को कनेक्टेड रखें, ऐप बंद न करें", "doNotDisconnect": "डिस्कनेक्ट न करें", "charging": "चार्ज हो रहा है", @@ -1472,57 +1488,55 @@ const Map hiIN = { "दोनों ईयरबड निकालें, और सुनिश्चित करें कि दोनों की बैटरी 20% से ऊपर है", // OTA升级模块 - 弹窗与对话框 - 'otaNewVersionFoundWithVersion': 'New version @version found', - 'otaConfirmUpdateNow': 'Update now?', - 'otaUpdate': 'Update', - 'otaUpgradeSuccess': 'Upgrade Successful', + 'otaNewVersionFoundWithVersion': 'नया संस्करण @version मिला', + 'otaConfirmUpdateNow': 'अभी अपडेट करें?', + 'otaUpdate': 'अपडेट', + 'otaUpgradeSuccess': 'अपग्रेड सफल', 'otaUpgradeCompleteRepair': - 'Firmware upgrade complete!\n\nDevice needs to be re-paired to work properly. Go to pairing page now?', - 'otaPairLater': 'Pair Later', - 'otaPairNow': 'Pair Now', + 'फर्मवेयर अपग्रेड पूरा!\n\nडिवाइस को सही ढंग से काम करने के लिए फिर से पेयर करना होगा। क्या अभी पेयरिंग पेज पर जाएँ?', + 'otaPairLater': 'बाद में पेयर करें', + 'otaPairNow': 'अभी पेयर करें', 'okConfirm': 'OK', // OTA升级模块 - 设备检查 - 'otaBleCheckErrorWithError': 'Error checking BLE connection: @error', - 'otaBleNotConnected': 'BLE Device Not Connected', + 'otaBleCheckErrorWithError': 'BLE कनेक्शन जाँचने में त्रुटि: @error', + 'otaBleNotConnected': 'BLE डिवाइस कनेक्ट नहीं है', 'otaBleNeedConnection': - 'Firmware upgrade requires BLE device connection\nPlease ensure device is properly connected and try again', - 'otaDeviceInfoUnavailableTitle': 'Device Info Unavailable', + 'फर्मवेयर अपग्रेड के लिए BLE डिवाइस कनेक्शन आवश्यक है\nकृपया सुनिश्चित करें कि डिवाइस सही ढंग से कनेक्ट है और पुनः प्रयास करें', + 'otaDeviceInfoUnavailableTitle': 'डिवाइस जानकारी उपलब्ध नहीं', 'otaCannotGetDeviceInfo': - 'Cannot get device info\nPlease reconnect device or try again later', - 'otaBleCheckFailed': 'BLE Connection Check Failed', + 'डिवाइस जानकारी नहीं मिल सकी\nकृपया डिवाइस को फिर से कनेक्ट करें या बाद में पुनः प्रयास करें', + 'otaBleCheckFailed': 'BLE कनेक्शन जाँच विफल', 'otaCannotGetDeviceInfoCheckConnection': - 'Cannot get device info, please check device connection', + 'डिवाइस जानकारी नहीं मिल सकी, कृपया डिवाइस कनेक्शन जांचें', 'otaCannotGetProductInfoWithName': - 'Cannot get product info, device name: @deviceName', - 'otaCannotGetBatteryInfo': 'Cannot get valid battery info', - 'otaLowBattery': 'Low Battery', + 'उत्पाद जानकारी नहीं मिल सकी, डिवाइस नाम: @deviceName', + 'otaCannotGetBatteryInfo': 'मान्य बैटरी जानकारी प्राप्त नहीं हो सकी', + 'otaLowBattery': 'कम बैटरी', 'otaSingleBatteryLow': - 'Device battery too low for firmware upgrade\nRequirement: battery must be above 20%\nCurrent: @ear @battery%\nPlease charge and try again', + 'फर्मवेयर अपग्रेड के लिए डिवाइस की बैटरी बहुत कम है\nआवश्यकता: बैटरी 20% से अधिक होनी चाहिए\nवर्तमान: @ear @battery%\nकृपया चार्ज करें और पुनः प्रयास करें', 'otaDoubleBatteryLow': - 'Device battery too low for firmware upgrade\nRequirement: both earbuds must be above 20%\nCurrent: Left @left%, Right @right%\nPlease charge and try again', - 'otaBatteryCheckFailed': 'Battery Check Failed', + 'फर्मवेयर अपग्रेड के लिए डिवाइस की बैटरी बहुत कम है\nआवश्यकता: दोनों ईयरबड 20% से अधिक होने चाहिए\nवर्तमान: बायां @left%, दायां @right%\nकृपया चार्ज करें और पुनः प्रयास करें', + 'otaBatteryCheckFailed': 'बैटरी जाँच विफल', // OTA升级模块 - 升级状态 - 'otaDefaultUpdateDesc': - 'This update includes performance optimizations and bug fixes.', - 'otaGetLatestVersionFailed': 'Failed to get latest version info', - 'otaGetVersionInfoFailed': 'Failed to get version info', - 'otaCheckingDeviceStatus': 'Checking device status...', - 'otaDownloadFailedCheckNetwork': - 'Download failed, please check network connection', - 'otaDownloadFailed': 'Download Failed', - 'otaPreparingConnection': 'Preparing device connection...', - 'otaConnectingDevice': 'Connecting to device...', - 'otaUpgradeStarted': 'OTA upgrade started...', + 'otaDefaultUpdateDesc': 'इस अपडेट में प्रदर्शन सुधार और बग फिक्स शामिल हैं।', + 'otaGetLatestVersionFailed': 'नवीनतम संस्करण जानकारी प्राप्त करने में विफल', + 'otaGetVersionInfoFailed': 'संस्करण जानकारी प्राप्त करने में विफल', + 'otaCheckingDeviceStatus': 'डिवाइस स्थिति जाँच रहे हैं...', + 'otaDownloadFailedCheckNetwork': 'डाउनलोड विफल, कृपया नेटवर्क कनेक्शन जांचें', + 'otaDownloadFailed': 'डाउनलोड विफल', + 'otaPreparingConnection': 'डिवाइस कनेक्शन तैयार कर रहे हैं...', + 'otaConnectingDevice': 'डिवाइस से कनेक्ट हो रहे हैं...', + 'otaUpgradeStarted': 'OTA अपग्रेड शुरू हो गया...', 'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%', - 'otaUpgradeSuccessComplete': 'Upgrade completed successfully', - 'otaUpgradeFailedWithCode': 'Upgrade failed, error code: @code', - 'otaUpgradeFailedTitle': 'Upgrade Failed', + 'otaUpgradeSuccessComplete': 'अपग्रेड सफलतापूर्वक पूरा हुआ', + 'otaUpgradeFailedWithCode': 'अपग्रेड विफल, त्रुटि कोड: @code', + 'otaUpgradeFailedTitle': 'अपग्रेड विफल', 'otaUpgradeFailedDesc': - 'Please check device connection or update package, error code: @code', - 'otaDeviceDisconnected': 'Device disconnected', - 'otaDeviceConnected': 'Device connected', + 'कृपया डिवाइस कनेक्शन या अपडेट पैकेज जांचें, त्रुटि कोड: @code', + 'otaDeviceDisconnected': 'डिवाइस डिस्कनेक्ट हो गया', + 'otaDeviceConnected': 'डिवाइस कनेक्टेड है', // 音乐模块 "noMusic": "कोई संगीत नहीं", // 暂无音乐 @@ -1678,16 +1692,16 @@ const Map hiIN = { "文莱": "ब्रुनेई", "东帝汶": "पूर्वी तिमोर", "斐济": "फिजी", - "所罗门群岛": "सोलोमन द्वीप समूह", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", + "所罗门群岛": "सोलोमन द्वीप समूह", // Solomon Islands + "刚果民主共和国": "कांगो लोकतांत्रिक गणराज्य", // Democratic Republic of the Congo + "安哥拉": "ऍंगोला", // Angola + "苏丹": "सुदान", // Sudan + "马尔代夫": "मालदीव", // Maldives + "不丹": "भutan", // 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 92a87a562..840b64312 100644 --- a/lib/core/translations/language/hr_hr.dart +++ b/lib/core/translations/language/hr_hr.dart @@ -1,3 +1,4 @@ +// 克罗地亚-克罗地亚语 const Map hrHR = { // 通用 'continue': 'Nastavi', @@ -18,11 +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", + "justNow": "Upravo sada", + "minutesAgo": "prije @minutes min", + "yesterday": "Jučer", + "daysAgo": "prije @days dana", + "hoursAgo": "prije @hours h", // 启动页 "slogan": "Povezivanje svijeta, izvan zvuka", @@ -170,27 +171,28 @@ const Map hrHR = { 'checkConnectionStatusFailed': 'Provjera statusa veze nije uspjela', // 蓝牙扫描模块 - 'bleInitFailedWithError': 'Bluetooth initialization failed: @error', + 'bleInitFailedWithError': 'Inicijalizacija Bluetootha nije uspjela: @error', 'needBluetoothAndLocationPermission': - 'Bluetooth and location permissions are required to scan devices', - 'permissionRequestFailedWithError': 'Permission request failed: @error', - 'needPermission': 'Permission Required', + 'Za pretraživanje uređaja potrebna su Bluetooth i lokacijska dopuštenja', + 'permissionRequestFailedWithError': + 'Zahtjev za dopuštenje nije uspio: @error', + 'needPermission': 'Potrebno dopuštenje', 'blePermissionDialogContent': - 'This app requires Bluetooth and location permissions to scan devices. Please enable them in Settings.', - 'needEnableBluetooth': 'Enable Bluetooth', + 'Ova aplikacija treba Bluetooth i lokacijska dopuštenja za pretraživanje uređaja. Omogućite ih u Postavkama.', + 'needEnableBluetooth': 'Omogući Bluetooth', 'enableBluetoothDialogContent': - 'Please enable Bluetooth to scan and connect devices.', - 'bleScanFailedWithError': 'Scan failed: @error', - 'bleConnectionSuccess': 'Connection Successful', - 'bleConnectedToDevice': 'Connected to @device', - 'bleConnectionFailedWithError': 'Connection failed: @error', - 'bleDisconnected': 'Disconnected', - 'bleDeviceDisconnected': 'Device disconnected', - 'bleDisconnectFailedWithError': 'Disconnect failed: @error', - 'signalStrong': 'Strong', - 'signalMedium': 'Medium', - 'signalWeak': 'Weak', - 'signalVeryWeak': 'Very Weak', + 'Omogućite Bluetooth za pretraživanje i povezivanje uređaja.', + 'bleScanFailedWithError': 'Pretraživanje nije uspjelo: @error', + 'bleConnectionSuccess': 'Povezivanje uspješno', + 'bleConnectedToDevice': 'Povezano s @device', + 'bleConnectionFailedWithError': 'Povezivanje nije uspjelo: @error', + 'bleDisconnected': 'Veza prekinuta', + 'bleDeviceDisconnected': 'Uređaj je odspojen', + 'bleDisconnectFailedWithError': 'Odspajanje nije uspjelo: @error', + 'signalStrong': 'Jak', + 'signalMedium': 'Srednji', + 'signalWeak': 'Slab', + 'signalVeryWeak': 'Vrlo slab', // 发现页 "searchAi": "Traži AI funkcije...", @@ -219,55 +221,55 @@ const Map hrHR = { "scene": "Scenarij", // 用量统计模块 - "aiChat": "AI Chat", - "translationStats": "Translation Statistics", - "meetingStats": "Meeting Statistics", - "today": "Today", - "thisWeek": "This Week", - "thisMonth": "This Month", - "history": "History", - "currentSessionStats": "Current Session Stats", - "translationCount": "Translation Count", - "sessionDuration": "Session Duration", - "characters": "Characters", - "recordingDuration": "Recording Duration", - "totalApiCalls": "Total API Calls", - "sessionCount": "Session Count", - "totalCharacters": "Total Characters", - "apiCallStats": "API Call Stats", - "translationApi": "Translation API", + "aiChat": "AI chat", + "translationStats": "Statistika prijevoda", + "meetingStats": "Statistika sastanaka", + "today": "Danas", + "thisWeek": "Ovaj tjedan", + "thisMonth": "Ovaj mjesec", + "history": "Povijest", + "currentSessionStats": "Statistika trenutne sesije", + "translationCount": "Broj prijevoda", + "sessionDuration": "Trajanje sesije", + "characters": "Znakovi", + "recordingDuration": "Trajanje snimanja", + "totalApiCalls": "Ukupno API poziva", + "sessionCount": "Broj sesija", + "totalCharacters": "Ukupno znakova", + "apiCallStats": "Statistika API poziva", + "translationApi": "API prijevoda", "asr": "ASR", "tts": "TTS", - "dataVolumeStats": "Data Volume Stats", - "sourceTextCharacters": "Source Text Characters", - "ttsTextCharacters": "TTS Text Characters", - "effectiveAudioDuration": "Effective Audio Duration", - "totalSessionDuration": "Total Session Duration", - "costStats": "Cost Stats", - "estimatedCost": "Estimated Cost", - "dailyCostThreshold": "Daily Cost Threshold", - "monthlyCostThreshold": "Monthly Cost Threshold", - "usageBehaviorStats": "Usage Behavior Stats", - "mostUsedLanguagePair": "Most-used language pair", - "mostUsedMode": "Most-used mode", - "asrApiCalls": "ASR Calls", - "totalAudioDuration": "Total Audio Duration", - "audioFileSize": "Audio File Size", - "transcriptBytes": "Transcript Bytes", - "loadFailed": "Load Failed", + "dataVolumeStats": "Statistika količine podataka", + "sourceTextCharacters": "Znakovi izvornog teksta", + "ttsTextCharacters": "Znakovi TTS teksta", + "effectiveAudioDuration": "Efektivno trajanje zvuka", + "totalSessionDuration": "Ukupno trajanje sesija", + "costStats": "Statistika troškova", + "estimatedCost": "Procijenjeni trošak", + "dailyCostThreshold": "Dnevni prag troška", + "monthlyCostThreshold": "Mjesečni prag troška", + "usageBehaviorStats": "Statistika ponašanja korištenja", + "mostUsedLanguagePair": "Najčešće korišten par jezika", + "mostUsedMode": "Najčešće korišten način", + "asrApiCalls": "ASR pozivi", + "totalAudioDuration": "Ukupno trajanje zvuka", + "audioFileSize": "Veličina audio datoteke", + "transcriptBytes": "Bajtovi transkripta", + "loadFailed": "Učitavanje nije uspjelo", "statsLoadFailedTryLater": - "Statistics failed to load. Please try again later.", - "cleanupComplete": "Cleanup Complete", - "cleanedOldData": "Cleaned data older than 90 days", - "exportFeature": "Export Feature", - "exportInDevelopment": "Data export is under development", + "Nije moguće učitati statistiku. Pokušajte ponovno kasnije.", + "cleanupComplete": "Čišćenje završeno", + "cleanedOldData": "Očišćeni su podaci stariji od 90 dana", + "exportFeature": "Izvoz", + "exportInDevelopment": "Izvoz podataka je u razvoju", // 商品模块 - 通用 - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', + 'availablePackages': 'Dostupni paketi', + 'remainingQuota': 'Preostala kvota', + 'totalQuota': 'Ukupna kvota', + 'remaining': 'Preostalo', + 'featureDescription': 'Opis značajke', 'paymentSuccess': 'Plaćanje uspješno', 'paymentFailed': 'Plaćanje nije uspjelo', 'gotIt': 'Razumijem', @@ -327,70 +329,70 @@ const Map hrHR = { 'alipayPaymentLaunchFailed': 'Pokretanje Alipay-a nije uspjelo', 'cannotLaunchAlipayPayment': 'Nije moguće pokrenuti Alipay', 'alipayPaymentException': 'Alipay iznimka', - "insufficientIntegral": "Insufficient integral", + "insufficientIntegral": "Nedovoljno bodova", "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', + 'Nedovoljno sredstava, idite na odgovarajuću stranicu za nadoplatu.', + "recharge": 'Idi na nadoplatu', "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + 'AI članstvo je isteklo, idite na stranicu za obnovu članstva.', // 商品模块 - 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.', + 'musicAndRecommendation': 'Glazba i preporuke', + 'navigationAndRoutes': 'Navigacija i rute', + 'nearbySearch': 'Pretraživanje u blizini', + 'newsInformation': 'Vijesti', + 'communicationAssistant': 'Asistent za komunikaciju', + 'aiHeaderDesc1': 'Veća kvota razgovora, više poziva alata, dulji kontekst.', 'aiHeaderDesc2': - 'Suitable for agent Q&A, summarization, analysis, and task execution.', - 'musicSearchPlaybackControl': 'Music library search and playback control', + 'Pogodno za pitanja agentu, sažimanje, analizu i izvršavanje zadataka.', + 'musicSearchPlaybackControl': + 'Pretraživanje glazbene biblioteke i kontrola reprodukcije', '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', + 'Pametna lista za reprodukciju i preporuke sličnih pjesama', + 'routePlanningAndCongestionAvoidance': 'Planiranje rute i izbjegavanje gužvi', + 'voiceBroadcastAndWaypoints': 'Glasovne upute i postavke međutočaka', + 'realTimeWeatherForecast': 'Vrijeme i prognoza u stvarnom vremenu', + 'clothingAdviceAndTravelReminders': + 'Savjeti za odijevanje i podsjetnici za putovanje', + 'poiSearchFoodGasParking': 'POI pretraživanje: hrana / gorivo / parkiranje', + 'ratingsHoursAndDirectRoutes': 'Ocjene, radno vrijeme i izravno navođenje', + 'hotNewsAndTopicOverview': 'Najvažnije vijesti i pregled tema', + 'longArticleSummariesAndKeyPoints': 'Sažeci dugih članaka i ključne točke', + 'helpCallAndSMS': 'Pomoć sa pozivima i SMS-om', 'templatedMessagesAndScheduleReminders': - 'Template messages and schedule reminders', + 'Predlošci poruka i zakazani podsjetnici', 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', + 'Funkcije ovise o dopuštenjima uređaja, dostupnosti usluga i uvjetima mreže.', // 商品模块 - 翻译商品页 - 'realtimeTranscription': 'Real-time Transcription', - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', + 'realtimeTranscription': 'Transkripcija u stvarnom vremenu', + 'sceneLexicon': 'Glosarij scenarija', + 'subtitleDisplay': 'Titlovi', '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', + 'Simultano prevođenje u stvarnom vremenu i prijevod teksta uz nisku latenciju glasa.', + 'transHeaderDesc2': 'Pogodno za putovanja, posao, govore i podučavanje.', + 'translateZhEn': 'Kinesko-engleski prijevod', + 'lowLatencyVoiceBroadcast': 'Glasovno emitiranje s niskom latencijom', + 'multiLangTextTranslation': 'Višejezični prijevod teksta', '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', + 'Optimizacija terminologije i očuvanje konteksta', + 'lexiconTourBusinessLife': 'Rječnici za putovanja/posao/život', + 'personalVocabularyMemory': 'Osobno pamćenje rječnika', + 'conversationSubtitleLargeText': 'Titlovi razgovora / način velikog teksta', + 'colorHighContrast': 'Visoki kontrast boja', 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', + 'Učinkovitost prijevoda ovisi o mikrofonu, latenciji mreže i buci okoline.', // 商品模块 - 会议商品页 - 'meetingRecording': 'Meeting Recording', + 'meetingRecording': 'Snimanje sastanka', 'transcriptionAndSummary': 'Transcription & Summary', 'keywordSearch': 'Keyword Search', 'collaborationSharing': 'Collaboration & Sharing', 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'Snimanje zvuka, transkripcija, pretraživanje po ključnim riječima i automatski sažetak za veću učinkovitost sastanaka.', 'meetingHeaderDesc2': 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingAutoRecording': 'Automatsko snimanje i segmentacija', 'meetingSpeakerTagging': 'Speaker labeling', 'meetingLongAudioTranscription': 'Long audio transcription', 'meetingKeyPointSummary': 'Key point extraction', @@ -399,43 +401,43 @@ const Map hrHR = { 'meetingExportSummary': 'Export minutes', 'meetingMultiPlatformShare': 'Share across platforms', 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', + 'Koristite u tihoj okolini; performanse ovise o mikrofonu i mreži.', // 商品模块 - VIP会员页 - 'benefitsOverview': 'Benefits overview', - 'higherQuota': 'Higher usage quota', - 'lowerUnitPrice': 'Lower unit price', - 'priorityService': 'Priority service', - 'exclusiveSupportChannel': 'Dedicated support channel', - 'fastResponse': 'Fast issue response', - 'eventsAndDiscounts': 'Events and discounts', - 'memberExclusiveEvents': 'Member-exclusive events', - 'longTermDiscountPlan': 'Long-term discount plan', - 'generalPrivileges': 'General privileges', - 'earlyAccessNewFeatures': 'Early access to new features', - 'crossDeviceSync': 'Cross-device sync', + 'benefitsOverview': 'Pregled pogodnosti', + 'higherQuota': 'Veća kvota korištenja', + 'lowerUnitPrice': 'Niža cijena po jedinici', + 'priorityService': 'Prioritetna usluga', + 'exclusiveSupportChannel': 'Namjenski kanal podrške', + 'fastResponse': 'Brz odgovor na probleme', + 'eventsAndDiscounts': 'Događaji i popusti', + 'memberExclusiveEvents': 'Događaji samo za članove', + 'longTermDiscountPlan': 'Dugoročni plan popusta', + 'generalPrivileges': 'Opće pogodnosti', + 'earlyAccessNewFeatures': 'Rani pristup novim značajkama', + 'crossDeviceSync': 'Sinkronizacija između uređaja', 'vipDisclaimer': - 'Actual benefits depend on the package details and may change with versions.', + 'Stvarne pogodnosti ovise o detaljima paketa i mogu se mijenjati s verzijama.', // 商品模块 - 商品名称与描述 - '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).', + 'ai_001_name': 'AI Osnovni 100', + 'ai_002_name': 'AI Osnovni 500', + 'ai_003_name': 'AI Osnovni 1000', + 'meet_001_name': 'Sastanci Osnovni 100', + 'meet_002_name': 'Sastanci Osnovni 500', + 'meet_003_name': 'Sastanci Osnovni 1000', + 'trans_001_name': 'Prijevod Osnovni 100', + 'trans_002_name': 'Prijevod Osnovni 500', + 'trans_003_name': 'Prijevod Osnovni 1000', + 'ai_001_desc': 'Uključuje 100 korištenja. Pristup osnovnim AI značajkama.', + 'ai_002_desc': 'Uključuje 500 korištenja. Pristup osnovnim AI značajkama.', + 'ai_003_desc': 'Uključuje 1000 korištenja. Pristup osnovnim AI značajkama.', + 'meet_001_desc': 'Uključuje 100 snimanja/transkripcija sastanaka.', + 'meet_002_desc': 'Uključuje 500 snimanja/transkripcija sastanaka.', + 'meet_003_desc': 'Uključuje 1000 snimanja/transkripcija sastanaka.', + 'trans_001_desc': 'Uključuje 100 prijevoda (glas/tekst).', + 'trans_002_desc': 'Uključuje 500 prijevoda (glas/tekst).', + 'trans_003_desc': 'Uključuje 1000 prijevoda (glas/tekst).', // 商品模块 - 页脚 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', @@ -444,40 +446,42 @@ const Map hrHR = { // 新手引导 'skip': "Preskoči", - 'next': 'Next', - 'sayLilyHint': 'Say "Lily Lily" to the mic', - 'imHere': 'I’m here~', - 'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.', - 'aiReplyCompleted': 'Lily has finished the reply!', - 'aiThinking': 'Lily is thinking…', - 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', - 'confirmInput': 'Confirm Input', - 'guideClickSendPrefix': 'Tap send, ', - 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', - 'guideWeatherInput': 'What’s the weather today?', - 'guideWeatherSend': 'Lily will report the weather in real time', - 'guideWeatherEnd': 'Lily can report weather live—try other commands', - 'guideMusicStart': 'Tell Lily: “Play some rock music”', - 'guideMusicInput': 'Play some rock music', - 'guideMusicSend': 'Lily will find music for you', - 'guideMusicEnd': 'Lily found music—try other commands', - 'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”', - 'guideNavInput': 'Navigate to Shenzhen Airport', - 'guideNavSend': 'Lily will plan the route', - 'guideNavEnd': 'Navigation set—try other commands', + 'next': 'Sljedeće', + 'sayLilyHint': 'Recite "Lily Lily" u mikrofon', + 'imHere': 'Tu sam~', + 'guideWelcomeWakeAI': + 'Dobrodošli u Voitrans! Najprije probudite svoj AI “Lily”.', + 'aiReplyCompleted': 'Lily je završila odgovor!', + 'aiThinking': 'Lily razmišlja…', + 'guideAwakenSuccess': 'Odlično! Lily je budna — pitajte je za pomoć.', + 'confirmInput': 'Potvrdi unos', + 'guideClickSendPrefix': 'Dodirnite pošalji, ', + 'guideWeatherStart': 'Recite Lily: “Kakvo je vrijeme danas?”', + 'guideWeatherInput': 'Kakvo je vrijeme danas?', + 'guideWeatherSend': 'Lily će javiti vrijeme u stvarnom vremenu', + 'guideWeatherEnd': + 'Lily može uživo javiti vrijeme — isprobajte druge naredbe', + 'guideMusicStart': 'Recite Lily: “Pusti malo rock glazbe”', + 'guideMusicInput': 'Pusti malo rock glazbe', + 'guideMusicSend': 'Lily će pronaći glazbu za vas', + 'guideMusicEnd': 'Lily je pronašla glazbu — isprobajte druge naredbe', + 'guideNavStart': 'Recite Lily: “Navigiraj do zračne luke Shenzhen”', + 'guideNavInput': 'Navigiraj do zračne luke Shenzhen', + 'guideNavSend': 'Lily će isplanirati rutu', + 'guideNavEnd': 'Navigacija postavljena — isprobajte druge naredbe', 'guideMeetingStart': - 'Tell Lily: “Create a meeting reminder for 3pm tomorrow”', - 'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow', - 'guideMeetingSend': 'Lily will create a meeting reminder', - 'guideMeetingEnd': 'Reminder created—try other commands', - 'guidePhoneStart': 'Tell Lily: “Call Mom”', - 'guidePhoneInput': 'Call Mom', - 'guidePhoneSend': 'Lily will make the call', - 'guidePhoneEnd': 'Call placed—try other commands', - 'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”', - 'guideSmsInput': 'Text Dad: I’ll be home for dinner', - 'guideSmsSend': 'Lily will send the message', - 'guideSmsEnd': 'Message sent—voice control is convenient', + 'Recite Lily: “Postavi podsjetnik za sastanak sutra u 15:00”', + 'guideMeetingInput': 'Postavi podsjetnik za sastanak sutra u 15:00', + 'guideMeetingSend': 'Lily će postaviti podsjetnik za sastanak', + 'guideMeetingEnd': 'Podsjetnik postavljen — isprobajte druge naredbe', + 'guidePhoneStart': 'Recite Lily: “Nazovi mamu”', + 'guidePhoneInput': 'Nazovi mamu', + 'guidePhoneSend': 'Lily će obaviti poziv', + 'guidePhoneEnd': 'Poziv upućen — isprobajte druge naredbe', + 'guideSmsStart': 'Recite Lily: “Pošalji tati poruku: Bit ću doma na večeru”', + 'guideSmsInput': 'Poruka tati: Bit ću doma na večeru', + 'guideSmsSend': 'Lily će poslati poruku', + 'guideSmsEnd': 'Poruka poslana — glasovno upravljanje je praktično', // Meeting模块 - 首页与导航 "startMeeting": "Započni sastanak", @@ -491,38 +495,40 @@ const Map hrHR = { 'recordingDetails': 'Detalji snimke', 'aiSummary': 'AI sažetak', 'meetingTranscript': 'Transkript sastanka', - 'files': 'Files', - 'mine': 'Mine', - 'connect': 'Connect', - 'allFiles': 'All Files', - 'searchInAllFiles': 'Search in all files', - 'from': 'From', - 'sortBy': 'Sort by', - 'creationTime': 'Creation Time', - 'bluetoothConnection': 'Bluetooth Connection', - 'meetingReconnect': 'Reconnect', + 'files': 'Datoteke', + 'mine': 'Moje', + 'connect': 'Poveži', + 'allFiles': 'Sve datoteke', + 'searchInAllFiles': 'Pretraži sve datoteke', + 'from': 'Od', + 'sortBy': 'Sortiraj po', + 'creationTime': 'Vrijeme izrade', + 'bluetoothConnection': 'Bluetooth veza', + 'meetingReconnect': 'Ponovno poveži', 'searching': 'Searching...', - 'searchFailed': 'Search failed, please check if Bluetooth is enabled', - 'aiPenNotFound': 'AI PEN device not found', - 'connectedToAiPen': 'Connected to AI PEN device', - 'checkingNewFiles': 'Checking for new files to import', - 'startingWifi': 'Starting Wi-Fi...', - 'newFilesDetected': 'New files detected, preparing to import', - 'noNewFiles': 'No new files to import', - 'connectingWifi': 'Connecting to Wi-Fi...', - 'wifiConnected': 'Wi-Fi connected successfully', - 'downloadingFiles': 'Downloading files...', - 'downloadingFileProgress': 'Total {total} files, downloading file {current}', - 'downloadComplete': 'Download complete', + 'searchFailed': + 'Pretraživanje nije uspjelo, provjerite je li Bluetooth uključen', + 'aiPenNotFound': 'AI PEN uređaj nije pronađen', + 'connectedToAiPen': 'Povezano s AI PEN uređajem', + 'checkingNewFiles': 'Provjera novih datoteka za uvoz', + 'startingWifi': 'Pokretanje Wi‑Fi-ja...', + 'newFilesDetected': 'Otkrivene nove datoteke, priprema uvoza', + 'noNewFiles': 'Nema novih datoteka za uvoz', + 'connectingWifi': 'Povezivanje na Wi‑Fi...', + 'wifiConnected': 'Wi‑Fi je uspješno povezan', + 'downloadingFiles': 'Preuzimanje datoteka...', + 'downloadingFileProgress': + 'Ukupno {total} datoteka, preuzima se datoteka {current}', + 'downloadComplete': 'Preuzimanje završeno', 'downloadCompleteInfo': - 'Download complete, {count} files in total, returning automatically in 2 seconds', + 'Preuzimanje završeno, ukupno {count} datoteka, automatski povratak za 2 sekunde', // Meeting模块 - 录音功能 - 'startRecording': 'Start Recording', - 'liveRecording': 'Live Recording', - 'audioVideoRecording': 'Audio/Video Recording', - 'callRecording': 'Call Recording', - 'importAudio': 'Import Audio', + 'startRecording': 'Započni snimanje', + 'liveRecording': 'Snimanje uživo', + 'audioVideoRecording': 'Snimanje zvuka/videa', + 'callRecording': 'Snimanje poziva', + 'importAudio': 'Uvezi zvuk', 'meetingRecordExitTitle': 'Izađi iz snimanja', // 退出录音 'meetingRecordExitMessage': 'Odaberite što učiniti prije izlaska', // 请选择离开后的操作 @@ -545,30 +551,30 @@ const Map hrHR = { 'Za prikaz plutajuće trake snimanja (mjerač vremena/pauza/nastavi) tijekom snimanja potrebna je dozvola za prikaz preko drugih aplikacija.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'overlayPermissionOpenSettingsFailed': 'Nije moguće automatski otvoriti postavke sustava. Otvorite Postavke i ručno omogućite dozvolu za prikaz preko drugih aplikacija.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'transcribing': 'Transkribiranje...', + 'summarizing': 'Sažimanje...', + 'analyzing': 'Analiza...', + 'summaryComplete': 'Sažetak završen', + 'generate': 'Generiraj', + 'overview': 'Pregled', + 'transcription': 'Transkripcija', + 'summary': 'Sažetak', + 'mindMap': 'Mentalna mapa', + 'editSpeaker': 'Uredi', + 'nameSpeaker': 'Imenuj govornika', // Meeting模块 - 转写与总结 - 'reSummarize': 'Re-summarize', - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'reSummarize': 'Ponovno sažmi', + 'dateAndTime': 'Datum i vrijeme', + 'location': 'Lokacija', + 'attendees': 'Sudionici', + 'inputLocation': 'Unesi lokaciju', + 'inputAttendees': 'Unesi sudionike', // Meeting模块 - 模版与生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', + 'selectSummaryTemplate': 'Odaberi predložak sažetka', + 'useThisTemplate': 'Koristi ovaj predložak', + 'lastUsed': 'Zadnje korišteno', 'create': 'Stvori', 'templateDetails': 'Pojedinosti predloška', 'tag': 'Oznaka', @@ -586,160 +592,163 @@ const Map hrHR = { '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.', + 'viewAll': 'Prikaži sve', + 'recordingLanguage': 'Jezik snimanja', + 'chineseSimplified': 'Kineski mandarinski (pojednostavljeni)', + 'meetingGenerateNow': 'Generiraj sada', + 'keyEventsAnalyzed': 'Analizirano {count} ključnih događaja.', 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + 'AI analiza prepoznaje ključne događaje u snimkama, što vam omogućuje odabir važnih događaja za AI generiranje.', // 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}', + 'importing': 'Uvoz...', + 'batchImporting': 'Skupni uvoz...', + 'importingLocalRecordings': 'Uvoz lokalnih snimki...', + 'importFailed': 'Uvoz datoteke nije uspio: {filePath}, greška: {error}', + 'importSuccess': 'Uspješno uvezeno {count} lokalnih snimki', + 'importError': 'Uvoz nije uspio: {error}', + 'pleaseSelectAudioFile': 'Molimo odaberite audio datoteku', + 'shareAudio': 'Podijeli audio sa sastanka', + 'shareComplete': 'Dijeljenje završeno!', + 'shareFailed': 'Dijeljenje nije uspjelo: {error}', + 'fileProcessingFailed': + 'Obrada datoteke nije uspjela: {filePath}, greška: {error}', // Meeting模块 - 思维导图 'saveMindMap': 'Spremi mentalnu mapu', - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', + 'shareMindMap': 'Podijeli mentalnu mapu', + 'shareSuccess': 'Uspješno podijeljeno', // 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', + 'askAI': 'Pitaj AI...', + 'askAIPrompt': 'Kako vam mogu pomoći danas?', + 'continueAsk': 'Nastavi pitati', + 'todoList': 'Popis zadataka', + 'extractConclusion': 'Izdvoji zaključak', + 'generateKeyIndicators': 'Generiraj ključne pokazatelje', // 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...', + 'shareLink': 'Podijeli poveznicu', + 'copyTranscript': 'Kopiraj transkript', + 'copySummary': 'Kopiraj sažetak', + 'exportAudio': 'Izvezi audio', + 'exportTranscript': 'Izvezi transkript', + 'shareMeetingAudio': 'Podijeli audio sa sastanka', + 'exportSummary': 'Izvezi sažetak', + 'exportAs': 'Izvezi kao', + 'exportingPDF': 'Izvoz PDF-a...', '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', + 'nameCurrentSpeaker': 'Imenuj trenutnog govornika', + 'recentlyUsedNames': 'Nedavno korištena imena', + 'applyToCurrentParagraph': 'Primijeni na trenutni odlomak', + 'totalTime': 'Ukupno vrijeme', 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', + 'Govornici u sažetku bit će automatski ažurirani', // Meeting模块 - 云端同步 - 'syncToCloud': 'Sync to Cloud', + 'syncToCloud': 'Sinkroniziraj u oblak', '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', + 'Automatski sinkronizirajte snimke u oblak; snimke možete reproducirati, upravljati i dijeliti putem bilo koje VOITRANS aplikacije ili VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sinkroniziraj VOITRANS aplikaciju', + 'transcriptionRecord': 'Zapis transkripcije', // Meeting模块 - 我的页面 - 'transcriptionRecords': 'Transcription Records', - 'templateCommunity': 'Template Community', - 'comingSoon': 'Coming Soon', - 'integration': 'Integration', + 'transcriptionRecords': 'Zapisi transkripcije', + 'templateCommunity': 'Zajednica predložaka', + 'comingSoon': 'Uskoro', + 'integration': 'Integracija', 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', - 'enabled': 'Enabled', - 'disabled': 'Disabled', - 'myVoitransDevice': 'My VOITRANS Device', - 'helpAndFeedback': 'Help & Feedback', - 'aboutVoitrans': 'About VOITRANS', - 'meetingDays': 'Days', - 'meetingHours': 'Hours', - 'voitransAiMember': 'Voitrans AI Member', - 'unlockStarterMember': 'Unlock Starter Member', - 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', - 'unlockNow': 'Unlock Now', + 'enabled': 'Omogućeno', + 'disabled': 'Onemogućeno', + 'myVoitransDevice': 'Moj VOITRANS uređaj', + 'helpAndFeedback': 'Pomoć i povratne informacije', + 'aboutVoitrans': 'O VOITRANS-u', + 'meetingDays': 'Dani', + 'meetingHours': 'Sati', + 'voitransAiMember': 'Voitrans AI članstvo', + 'unlockStarterMember': 'Otključaj Starter članstvo', + 'bindDeviceToActivate': + 'Povežite Voitrans uređaj za aktivaciju Starter članstva', + 'unlockNow': 'Otključaj sada', // Meeting模块 - 会员与升级 - 'comparison': 'Comparison', - 'detailedInfo': 'Detailed Information', - 'monthlyTranscriptionTime': 'Monthly Transcription Time', - 'unlimited': 'Unlimited', - 'professionalTemplates': 'Professional Templates', - 'limited': 'Limited', - 'fullTemplates': 'Full Templates', - 'professionalTerms': 'Professional Terms', - 'customTemplates': 'Custom Templates', - 'visualMindMap': 'Visual Mind Map', - 'speakerIdentification': 'Speaker Identification', - 'aiVoiceEnhancement': 'AI Voice Enhancement', - 'audioImport': 'Audio Import', - 'multipleExportFormats': 'Multiple Export Formats', - 'professionalSummaryTemplates': 'Professional Summary Templates', + 'comparison': 'Usporedba', + 'detailedInfo': 'Detaljne informacije', + 'monthlyTranscriptionTime': 'Mjesečno vrijeme transkripcije', + 'unlimited': 'Neograničeno', + 'professionalTemplates': 'Profesionalni predlošci', + 'limited': 'Ograničeno', + 'fullTemplates': 'Potpuni predlošci', + 'professionalTerms': 'Profesionalni pojmovi', + 'customTemplates': 'Prilagođeni predlošci', + 'visualMindMap': 'Vizualna mentalna mapa', + 'speakerIdentification': 'Identifikacija govornika', + 'aiVoiceEnhancement': 'AI poboljšanje glasa', + 'audioImport': 'Uvoz zvuka', + 'multipleExportFormats': 'Više formata izvoza', + 'professionalSummaryTemplates': 'Profesionalni predlošci sažetka', 'professionalTemplateDesc': - 'Professional template design to improve your work efficiency. Customized according to industry needs.', + 'Profesionalni dizajn predložaka za veću učinkovitost rada. Prilagođeno potrebama industrije.', 'customTemplateDesc': - 'You can customize summary prompts according to your needs and use them to generate the required summaries.', + 'Možete prilagoditi promptove sažetka prema svojim potrebama i koristiti ih za generiranje traženih sažetaka.', 'askAiDesc': - 'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.', + 'Inteligentno izdvojite dublje informacije iz snimki i jednim klikom generirajte tablice podataka, ključne zaključke rasprave, popise zadataka, e-mailove izvješća i drugi formatirani sadržaj.', 'visualMindMapDesc': - 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', + 'Više od sažetaka — organizirajte i vizualizirajte ključne točke mentalnim mapama za učinkovitije razumijevanje cijelog teksta.', 'templateCommunityDesc': - 'Discover, share, and get inspiration from the template library created by users.', + 'Otkrijte, dijelite i inspirirajte se iz biblioteke predložaka koju su izradili korisnici.', 'speakerIdentificationDesc': - 'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.', + 'Transkripcija zvuka podržavat će identifikaciju govornika te će intuitivnije prikazati sadržaj sastanka ili poziva. Istovremeno će sažetak biti točniji.', 'privateCloudSyncDesc': - 'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.', + 'Vaše snimke i transkripcije bit će sigurno pohranjene na namjenskim oblačnim poslužiteljima uz potpunu enkripciju pri prijenosu i preuzimanju radi privatnosti i sigurnosti.', 'aiVoiceEnhancementDesc': - 'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.', + 'AI poboljšanje glasa podržava više postavki smanjenja šuma, inteligentno uklanja pozadinsku buku, poboljšava jasnoću glasa i kvalitetu reprodukcije.', 'audioImportDesc': - 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', + 'Jednostavno uvezite audio datoteke s uređaja ili iz aplikacija trećih strana, poput glasovnih bilješki, Google Drivea itd.', 'multipleExportFormatsDesc': - 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - 'upgradeMembership': 'Upgrade Your Membership', - 'yearlySubscription': 'Yearly Subscription', - 'monthlySubscription': 'Monthly Subscription', + 'Izvezite audio snimke, tekst transkripcije i sažetke u raznim formatima (TXT, PDF, JPEG) prema svojim potrebama.', + 'upgradeMembership': 'Nadogradite članstvo', + 'yearlySubscription': 'Godišnja pretplata', + 'monthlySubscription': 'Mjesečna pretplata', 'proMonthly': 'Pro ¥60/month', 'proMonthlyDesc': - '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', - 'sevenDayTrial': '7-day Free Trial', + '7-dnevno besplatno probno razdoblje, zatim ¥800/god. Otkazivanje prije završetka probe.', + 'sevenDayTrial': '7-dnevna besplatna proba', 'unlimitedMonthly': 'Unlimited ¥120/month', 'unlimitedMonthlyDesc': - '7-day free trial, then ¥1600/year. Cancel anytime before trial ends.', - 'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.', + '7-dnevno besplatno probno razdoblje, zatim ¥1600/god. Otkazivanje prije završetka probe.', + 'trialNote': + '*Besplatna proba 7 dana, zatim godišnja naplata; otkazivanje u bilo kojem trenutku.', 'proPrice': 'Pro ¥120', 'proMonthlyPrice': '¥120/month', - 'subscribe': 'Subscribe', + 'subscribe': 'Pretplati se', 'unlimitedPrice': 'Unlimited ¥198', 'unlimitedMonthlyPrice': '¥198/month', 'upgradeNote': - '*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account', - 'buyMoreTranscriptionTime': 'Buy More Transcription Time', + '*Nakon nadogradnje pretplate, preostali dani izvorne pretplate bit će automatski izračunati i vraćeni na vaš račun za plaćanje', + 'buyMoreTranscriptionTime': 'Kupi više vremena za transkripciju', 'sixThousandMinutes': '6,000 minutes', 'threeThousandMinutes': '3,000 minutes', 'sixHundredMinutes': '600 minutes', 'oneHundredTwentyMinutes': '120 minutes', - 'validityPeriod': '*Validity Period: ', + 'validityPeriod': '*Razdoblje valjanosti: ', 'validityNote': - 'Activated immediately after purchase, valid for 2 years after activation.', - 'purchase': 'Purchase', + 'Aktivira se odmah nakon kupnje, vrijedi 2 godine nakon aktivacije.', + 'purchase': 'Kupi', // Meeting模块 - 录音语言 - 'recordLanguage': 'Recording Language', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', + 'recordLanguage': 'Jezik snimanja', + 'cantonese': 'Kantonski', + 'sichuan': 'Sichuanski dijalekt', + 'shanghai': 'Šangajski dijalekt', // Meeting模块 - 错误提示 - 'meetingUnknownLanguage': 'Unknown Language', + 'meetingUnknownLanguage': 'Nepoznat jezik', 'analysisFailed': 'Analiza nije uspjela, pokušajte ponovno kasnije', 'transcriptionFailed': 'Transkripcija nije uspjela, pokušajte ponovno kasnije', @@ -761,10 +770,10 @@ const Map hrHR = { "translationRecharge": "Prijevod ponuda", "meetingAssistantRecharge": "Asistent sastanka ponuda", "cloudSync": "Synchronizacija u oblaku ponuda", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "memberService": "Usluga za članove", + "bindRewardTitle": "Nagrade", "bindRewardSimpleDesc": - "First bind device reward has been issued. Tap OK to close.", + "Nagrada za prvo povezivanje uređaja je dodijeljena. Dodirnite OK za zatvaranje.", "joinDevice": "Povezan uređaj:", "accountId": "ID računa:", "systemSetting": "Postavke sustava", @@ -814,20 +823,20 @@ const Map hrHR = { "loading": "Učitavanje...", // 设备管理模块 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", - "deviceTypeSmartEye": "Smart Glasses", + "deviceTypeUnknown": "Nepoznat uređaj", + "deviceTypeClassicBluetoothHeadset": "Klasični Bluetooth headset", + "deviceTypeBleBluetoothHeadset": "BLE Bluetooth headset", + "deviceTypeSmartVoiceRecorder": "Pametni diktafon", + "deviceTypeSmartEye": "Pametne naočale", "unbind": "Prekini vezu", - "noDevicesBound": "No devices bound yet", - "pleaseBindDeviceFirst": "Please bind a device first to manage", - "noMacAddress": "No MAC Address", - "licenseCode": "License Code", - "confirmUnbind": "Confirm Unbind", + "noDevicesBound": "Još nema povezanih uređaja", + "pleaseBindDeviceFirst": "Najprije povežite uređaj za upravljanje", + "noMacAddress": "Nema MAC adrese", + "licenseCode": "Licencijski kod", + "confirmUnbind": "Potvrdi prekid veze", "confirmUnbindMessage": - "Are you sure you want to unbind device \"{deviceName}\"?", - "confirmUnbindAction": "Confirm Unbind", + "Jeste li sigurni da želite prekinuti vezu s uređajem \"{deviceName}\"?", + "confirmUnbindAction": "Potvrdi", // Agent模块 - 主界面 "Lily": "Lily", @@ -857,22 +866,22 @@ const Map hrHR = { "loadMoreMessages": "Učitaj još poruka...", "loadFailedClickRetry": "Neuspješno učitavanje, kliknite za ponovni pokušaj", "swipeUpForMore": "Prijeđite prstom prema gore za više", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 + "callingTool": "Pomažem vam, pričekajte!", // 正在帮您,请稍等! + "voice_interrupt": "Prekini", // 语音打断 '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", // 今日天气 - "presetNews": "Today's news", // 今日新闻 - "presetFood": "Nearby food", // 美食 - "playSomeMusic": "Play some popular music", // 播放一些流行音乐 - "navigationTo": "Please help me navigate to", // 导航到 - "todayWeather": "How's the weather today?", // 今日天气 - "todayNews": "What's the news today?", // 今日新闻 - "nearbyFood": "What delicious food is nearby?", // 美食 + "presetMusic": "Pusti malo glazbe", // 来点音乐 + "presetNavigation": "Navigacija do", // 导航 + "presetWeather": "Današnje vrijeme", // 今日天气 + "presetNews": "Današnje vijesti", // 今日新闻 + "presetFood": "Hrana u blizini", // 美食 + "playSomeMusic": "Pusti popularnu glazbu", // 播放一些流行音乐 + "navigationTo": "Molim te navigiraj do", // 导航到 + "todayWeather": "Kakvo je vrijeme danas?", // 今日天气 + "todayNews": "Koje su današnje vijesti?", // 今日新闻 + "nearbyFood": "Koja je ukusna hrana u blizini?", // 美食 // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Zdravo! Ja sam **Lily**, mogu vam pomoći:\n\n' @@ -917,11 +926,11 @@ const Map hrHR = { 'generatedByAi': 'Generirano od strane AI', // Agent模块 - 工具调用 - 'toolCall': 'Tool Call', - 'noResult': 'No Result', - 'noToolCallContentToCopy': 'No tool call content to copy', - 'toolCallDetails': 'Tool Call Details:', - 'toolCallContentCopied': 'Tool call content copied to clipboard', + 'toolCall': 'Poziv alata', + 'noResult': 'Nema rezultata', + 'noToolCallContentToCopy': 'Nema sadržaja poziva alata za kopiranje', + 'toolCallDetails': 'Detalji poziva alata:', + 'toolCallContentCopied': 'Sadržaj poziva alata kopiran u međuspremnik', // Agent模块 - 音乐卡片 'recommendedMusic': 'Evo nekoliko preporučenih pjesama:', @@ -944,27 +953,27 @@ const Map hrHR = { "tsransit": "Javni prijevoz", // Agent模块 - 导航选择 - 'selectNavigationApp': 'Select Navigation App', + 'selectNavigationApp': 'Odaberi navigacijsku aplikaciju', 'amapMap': 'Amap', - 'useAmapNavigation': 'Navigate with Amap', + 'useAmapNavigation': 'Navigiraj s Amapom', 'baiduMap': 'Baidu Maps', - 'useBaiduNavigation': 'Navigate with Baidu Maps', + 'useBaiduNavigation': 'Navigiraj s Baidu Maps', 'googleMap': 'Google Maps', - 'useGoogleNavigation': 'Navigate with Google Maps', + 'useGoogleNavigation': 'Navigiraj s Google Maps', 'appleMap': 'Apple Maps', - 'useAppleNavigation': 'Navigate with Apple Maps', - 'builtInNavigation': 'Built-in Navigation', - 'useBuiltInNavigation': 'Navigate with built-in map', - 'navigationStartFailed': 'Failed to start navigation', + 'useAppleNavigation': 'Navigiraj s Apple Maps', + 'builtInNavigation': 'Ugrađena navigacija', + 'useBuiltInNavigation': 'Navigiraj s ugrađenom kartom', + 'navigationStartFailed': 'Neuspjelo pokretanje navigacije', 'cannotPlayMusicListRetryLater': - 'Cannot play music list, please try again later', - 'cannotPlaySong': 'Cannot play song', - 'openMapError': 'Error opening map', - 'pleaseInstallAmapApp': 'Please install the Amap app first', - 'pleaseInstallBaiduMapApp': 'Please install the Baidu Maps app first', - 'appleMapStartFailed': 'Apple Maps failed to start', - 'appleMapUnavailable': 'Apple Maps unavailable', - 'openAppleMapError': 'Error opening Apple Maps', + 'Nije moguće reproducirati popis glazbe, pokušajte kasnije', + 'cannotPlaySong': 'Nije moguće reproducirati pjesmu', + 'openMapError': 'Greška pri otvaranju karte', + 'pleaseInstallAmapApp': 'Najprije instalirajte aplikaciju Amap', + 'pleaseInstallBaiduMapApp': 'Najprije instalirajte aplikaciju Baidu Maps', + 'appleMapStartFailed': 'Apple Maps se nije uspio pokrenuti', + 'appleMapUnavailable': 'Apple Maps nije dostupan', + 'openAppleMapError': 'Greška pri otvaranju Apple Maps', // Agent模块 - 天气卡片 'weatherQuery': 'Upit o vremenskim uvjetima:', @@ -1018,8 +1027,8 @@ const Map hrHR = { "strongWind": "Jak vjetar", // 翻译模块 - 中间层 - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", + "pictureTranslation": "Prijevod slike", + "textTranslation": "Tekstualni prijevod", // 翻译模块 - 主页 "translationHistory": "Povijest prijevoda", @@ -1029,33 +1038,34 @@ const Map hrHR = { "phoneUser": "Korisnik telefona", "selectSourceLanguage": "Odaberi izvorni jezik", "selectTargetLanguage": "Odaberi ciljni jezik", - "me": "Me", - "counterPart": "Counterpart", + "me": "Ja", + "counterPart": "Sugovornik", "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - "autoDetect": "Auto Detect", // 自动检测 + "Provjerite je li Bluetooth headset povezan s telefonom i je li u stanju poziva", + "autoDetect": "Automatsko prepoznavanje", // 自动检测 // 翻译模块 - 文本翻译 - "languageDetectionFailed": "Language detection failed", + "languageDetectionFailed": "Prepoznavanje jezika nije uspjelo", // 翻译模块 - 悬浮窗与权限 - 'disableFloatingWindow': 'Disable Floating Window', - 'enableFloatingWindow': 'Enable Floating Window', - 'permissionTip': 'Permission Tip', + 'disableFloatingWindow': 'Onemogući plutajući prozor', + 'enableFloatingWindow': 'Omogući plutajući prozor', + 'permissionTip': 'Savjet o dopuštenjima', 'micPermissionRequiredForRecording': - 'Microphone permission is required for recording', - 'deleteTranslationRecordError': 'Error deleting translation record: @error', - "translationFailed": "Translation failed", - "translating": "Translating", - "translate": "Translate", - "pleaseInputText": "Please input text", + 'Za snimanje je potrebno dopuštenje za mikrofon', + 'deleteTranslationRecordError': + 'Greška pri brisanju zapisa prijevoda: @error', + "translationFailed": "Prijevod nije uspio", + "translating": "Prevođenje", + "translate": "Prevedi", + "pleaseInputText": "Unesite tekst", "inputTextToTranslate": "Unesite tekst za prijevod", - "textTooLong": "Text too long, max 5000 characters", + "textTooLong": "Tekst je predug, max 5000 znakova", // 翻译模块 - 历史记录 "noTranslationHistory": "Nema povijesti", - "historyRecords": "History Records", - "clearResults": "Clear Results", + "historyRecords": "Zapisi povijesti", + "clearResults": "Očisti rezultate", "clearHistory": "Obriši povijest", "clearHistoryConfirm": "Jeste li sigurni da želite obrisati cijelu povijest prijevoda? Ova se radnja ne može poništiti.", @@ -1065,55 +1075,55 @@ const Map hrHR = { "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", + "selectImageSource": "Odaberi izvor slike", + "imagePreview": "Pregled slike", + "translationResult": "Rezultat prijevoda", + "recognitionResult": "Rezultat prepoznavanja", + "translatedImagePreview": "Pregled prevedene slike", + "translatedImageLoadFailed": "Neuspjelo učitavanje prevedene slike", + "pleaseSelectImage": "Odaberite sliku", + "imageLoadFailed": "Učitavanje slike nije uspjelo", + "imageQuality": "Kvaliteta slike", + "maxSize": "Maks. veličina", + "close": "Zatvori", + "setImageQuality": "Postavi kvalitetu slike", + "currentQuality": "Trenutna kvaliteta: @value%", + "setMaxSize": "Postavi maks. veličinu", + "currentMaxSize": "Trenutno: @pxpx", + "waitingForAction": "Čekanje na radnju", + "pleaseSelectImageToStart": "Odaberite sliku za početak", + "chooseImage": "Odaberi sliku", + "openingCamera": "Otvaranje kamere...", + "openingPhotoAlbum": "Otvaranje albuma...", + "cancelled": "Otkazano", + "userCancelledSelection": "Korisnik je otkazao odabir", + "translatingImage": "Prevođenje slike", + "callingImageTranslateService": "Pozivanje servisa za prijevod slika...", + "savingRecord": "Spremanje zapisa", + "savingTranslationResult": "Spremanje rezultata prijevoda...", + "translationCompleted": "Prijevod dovršen", + "allStepsCompleted": "Svi koraci dovršeni", + "processingFailed": "Obrada nije uspjela", "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", + "Obrada slike ili prijevod nisu uspjeli. Pokušajte ponovno.\nGreška: {error}", + "imageTooLarge": "Veličina slike prelazi ograničenje od 4 MB", "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", + "Veličina slike prelazi 4 MB. Smanjite kvalitetu ili dimenzije i pokušajte ponovno", + "emptyTranslationResult": "API za prijevod slika vratio je prazan rezultat", "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", + "Prijevod slike nije uspio. Problem s mrežom ili ograničenje. Pokušajte kasnije", "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", + "Iznimka API-ja za prijevod slika. Provjerite mrežu i pokušajte ponovno", + "permissionRequired": "Potrebno dopuštenje", + "cameraPermissionRequired": "Za fotografiranje je potrebno dopuštenje kamere", "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", + "Za odabir slika potrebno je dopuštenje albuma", + "translationDetails": "Detalji prijevoda", + "originalImage": "Izvorna slika", + "sourceLanguage": "Izvorni jezik", + "targetLanguage": "Ciljni jezik", + "translationTime": "Vrijeme prijevoda", + "shareInDevelopment": "Dijeljenje je u razvoju", // 翻译模块 - 录音文件 "translateAudioFiles": "Prevedi audio datoteke", @@ -1165,8 +1175,8 @@ const Map hrHR = { 'deleteAccount': 'Obriši račun', 'deleteAccountTips': '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?', + 'clean': 'Očisti predmemoriju', + 'cleanTips': 'Jeste li sigurni da želite očistiti osobnu predmemoriju?', 'networkConnectionFailed': 'Mrežna veza nije uspjela, provjerite postavke mreže i pokušajte ponovno', 'serverTemporarilyUnavailable': @@ -1210,24 +1220,24 @@ const Map hrHR = { 'AccountService je inicijaliziran', // AccountService 已初始化 // 权限模块 - 'meetingStoragePermission': 'Storage', + 'meetingStoragePermission': 'Pohrana', 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', + 'Trebamo dopuštenje za pohranu kako biste mogli odabrati i prenijeti audio datoteke.', 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', + 'Otkriveno je da ste trajno odbili dopuštenje za pohranu. Za nastavak ove funkcije idite u postavke aplikacije i ručno omogućite dopuštenje.', 'getPermissionStatusFailed': 'Dohvaćanje statusa dopuštenja nije uspjelo', 'communicationPermissions': 'Komunikacijska dopuštenja', - 'bluetoothPermissions': 'Bluetooth Permissions', - 'notificationPermissions': 'Notification Permissions', - 'storagePermissions': 'Storage Permissions', - 'microphonePermissions': 'Microphone Permissions', - 'alarmPermissions': 'Alarm Permissions', + 'bluetoothPermissions': 'Bluetooth dopuštenja', + 'notificationPermissions': 'Dopuštenja obavijesti', + 'storagePermissions': 'Dopuštenja pohrane', + 'microphonePermissions': 'Dopuštenja mikrofona', + 'alarmPermissions': 'Dopuštenja alarma', 'calendarPermissions': 'Dopuštenja za kalendar', 'locationPermissions': 'Dopuštenja za lokaciju', 'phone': 'Telefon', 'sms': 'SMS', - 'contacts': 'Contacts', - 'notification': 'Notification', + 'contacts': 'Kontakti', + 'notification': 'Obavijesti', 'alarm': 'Alarm', 'calendarWrite': 'Pisanje u kalendar', 'calendarFullAccess': 'Potpuni pristup kalendaru', @@ -1235,7 +1245,7 @@ const Map hrHR = { 'phonePermissionDesc': 'Koristi se za funkciju pozivanja', 'smsPermissionDesc': 'Koristi se za funkciju slanja SMS-a', 'alarmPermissionDesc': - 'Used to set exact alarms to ensure reminders trigger on time', + 'Koristi se za postavljanje točnih alarma kako bi podsjetnici radili na vrijeme', 'calendarWritePermissionDesc': 'Koristi se za stvaranje događaja i podsjetnika u kalendaru', 'calendarFullAccessPermissionDesc': @@ -1255,72 +1265,74 @@ const Map hrHR = { 'smsPermissionDetailDesc': 'Funkcija slanja SMS-a zahtijeva dopuštenje za SMS', 'alarmPermissionDetailDesc': - 'This permission is required to set exact alarms and ensure reminders trigger on time', + 'Ovo dopuštenje je potrebno za postavljanje točnih alarma i osiguravanje da podsjetnici rade na vrijeme', 'calendarWritePermissionDetailDesc': 'Stvaranje događaja u kalendaru zahtijeva dopuštenje za pisanje u kalendar', 'calendarFullAccessPermissionDetailDesc': 'Upravljanje događajima u kalendaru zahtijeva potpuno dopuštenje za kalendar', 'locationPermissionDetailDesc': 'Dobivanje informacija o lokaciji zahtijeva dopuštenje za lokaciju', - 'contactsPermissionDesc': 'Used for accessing contact information', + 'contactsPermissionDesc': 'Koristi se za pristup informacijama o kontaktima', 'contactsPermissionDetailDesc': - 'Phone call and SMS functionality requires contacts permission to select contacts', + 'Funkcije poziva i SMS-a zahtijevaju dopuštenje za kontakte kako biste mogli odabrati kontakte', 'bluetoothPermissionDesc': - 'Used for connecting and managing Bluetooth devices', + 'Koristi se za povezivanje i upravljanje Bluetooth uređajima', 'bluetoothPermissionDetailDesc': - 'Connecting to Bluetooth headphones and other devices requires Bluetooth permission', - 'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices', + 'Povezivanje s Bluetooth slušalicama i drugim uređajima zahtijeva Bluetooth dopuštenje', + 'bluetoothScanPermissionDesc': + 'Koristi se za pretraživanje obližnjih Bluetooth uređaja', 'bluetoothScanPermissionDetailDesc': - 'Scanning for nearby Bluetooth devices requires Bluetooth scan permission', - 'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices', + 'Pretraživanje obližnjih Bluetooth uređaja zahtijeva Bluetooth dopuštenje za pretraživanje', + 'bluetoothConnectPermissionDesc': + 'Koristi se za povezivanje s Bluetooth uređajima', 'bluetoothConnectPermissionDetailDesc': - 'Connecting to Bluetooth devices requires Bluetooth connect permission', - 'notificationPermissionDesc': 'Used for sending notification messages', + 'Povezivanje s Bluetooth uređajima zahtijeva Bluetooth dopuštenje za povezivanje', + 'notificationPermissionDesc': 'Koristi se za slanje obavijesti', 'notificationPermissionDetailDesc': - 'App needs notification permission to send you important alerts and messages', + 'Aplikaciji je potrebno dopuštenje obavijesti kako bi vam slala važne obavijesti i poruke', 'appNeedsPermissionForFullFunction': 'Aplikacija zahtijeva ovo dopuštenje za punu funkcionalnost', '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', + 'bluetoothScan': 'Bluetooth pretraživanje', + 'bluetoothConnect': 'Bluetooth povezivanje', 'bluetoothScanExplanation': - 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', + 'Aplikaciji je potrebno dopuštenje za Bluetooth pretraživanje kako bi pronašla obližnje Bluetooth uređaje.', 'bluetoothConnectExplanation': - 'The app needs Bluetooth connect permission to connect to Bluetooth devices.', + 'Aplikaciji je potrebno dopuštenje za Bluetooth povezivanje kako bi se povezala s Bluetooth uređajima.', 'locationForBluetoothExplanation': - 'The app needs location permission to scan Bluetooth devices.', + 'Aplikaciji je potrebno dopuštenje lokacije za pretraživanje Bluetooth uređaja.', 'bluetoothScanPermanentDenial': - 'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.', + 'Dopuštenje za Bluetooth pretraživanje trajno je odbijeno, idite u postavke da ga ručno omogućite.', 'bluetoothConnectPermanentDenial': - 'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.', + 'Dopuštenje za Bluetooth povezivanje trajno je odbijeno, idite u postavke da ga ručno omogućite.', 'locationPermanentDenial': - 'Location permission has been permanently denied, please go to settings to enable it manually.', - 'notificationPermission': 'Notification', - 'locationPermission': 'Location', + 'Dopuštenje lokacije trajno je odbijeno, idite u postavke da ga ručno omogućite.', + 'notificationPermission': 'Obavijesti', + 'locationPermission': 'Lokacija', 'notificationPermissionExplanation': - 'Notification permission is required to display music playback status.', + 'Dopuštenje obavijesti potrebno je za prikaz statusa reprodukcije glazbe.', 'locationPermissionExplanation': - 'Location permission is required to get current location.', + 'Dopuštenje lokacije potrebno je za dobivanje trenutne lokacije.', 'notificationPermissionPermanentDenial': - 'You have permanently denied notification permission, please go to settings to enable it.', + 'Trajno ste odbili dopuštenje obavijesti, idite u postavke da ga omogućite.', 'locationPermissionPermanentDenial': - 'You have permanently denied location permission, please go to settings to enable it.', - 'storagePermission': 'Storage', + 'Trajno ste odbili dopuštenje lokacije, idite u postavke da ga omogućite.', + 'storagePermission': 'Pohrana', 'microphonePermissionExplanation': - 'We need microphone permission to record audio content.', + 'Trebamo dopuštenje mikrofona za snimanje audio sadržaja.', 'storagePermissionExplanation': - 'We need storage permission so you can select and upload audio files.', + 'Trebamo dopuštenje pohrane kako biste mogli odabrati i prenijeti audio datoteke.', 'microphonePermissionPermanentDenial': - 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', + 'Dopuštenje mikrofona je trajno odbijeno. Za nastavak ove funkcije idite u postavke aplikacije i ručno omogućite dopuštenje.', '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', + 'Dopuštenje pohrane je trajno odbijeno. Za nastavak ove funkcije idite u postavke aplikacije i ručno omogućite dopuštenje.', + 'permissionUtilNeed': 'Potrebno ', + 'permissionUtilPermission': ' dopuštenje', + 'permissionUtilRestricted': ' dopuštenje je ograničeno', 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'Ova značajka nije dostupna ili je ograničena na ovom uređaju, provjerite postavke uređaja ili sistemska ograničenja', 'permissionUtilConfirm': 'OK', // 原生前台服务通知(Android) @@ -1412,27 +1424,27 @@ const Map hrHR = { 'bleConnectionFailed': 'BLE veza nije uspjela', 'deviceAuthorizationFailedCheckCode': 'Autorizacija uređaja nije uspjela, provjerite autorizacijski kod', - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + 'bluetoothGuideTitle': 'Potrebno je ručno uključiti Bluetooth', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'Slijedite ove korake:', // 请按照以下步骤操作: 'bluetoothGuideStep1': - 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'Uključite Bluetooth: Postavke → Bluetooth → Uključi', // 开启蓝牙:设置 → 蓝牙 → 开启 'bluetoothGuideStep2': - 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'Povežite uređaj: pronađite uređaj u "Moji uređaji" i dodirnite za povezivanje', // 连接设备:在"我的设备"中找到您的设备并点击连接 'bluetoothGuideStep3': - 'Return to app to continue pairing process', // 返回应用继续配对流程 + 'Vratite se u aplikaciju da nastavite postupak uparivanja', // 返回应用继续配对流程 'bluetoothGuideTip': - 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': 'I Know', // 我知道了 + 'Savjet: U Centru za upravljanje možete dugo pritisnuti ikonu Bluetooth za brzi pristup postavkama Bluetootha', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + 'iKnow': 'Razumijem', // 我知道了 // 配对模块 - 绑定奖励 - "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:", + "firstBindRewardTitle": "Nagrada dobrodošlice", + "firstBindRewardDesc": "Primili ste nagrade za povezivanje.", + "vipLevelLabel": "VIP razina:", + "expiryLabel": "Istječe:", + "notActivated": "Nije aktivirano", + "aiChatCreditsLabel": "AI chat krediti:", + "translationCreditsLabel": "Krediti za prijevod:", + "meetingCreditsLabel": "Krediti za sastanke:", "ok": "OK", // 用户反馈模块 @@ -1464,13 +1476,14 @@ const Map hrHR = { "connectionFailed": "Povezivanje nije uspjelo", "retryConnection": "Pokušaj ponovno povezivanje", "ota_updateNow": "Ažuriraj sada", - "otaVersionInfoFailed": "Failed to get version info. Please try again later.", + "otaVersionInfoFailed": + "Nije moguće dohvatiti informacije o verziji. Pokušajte kasnije.", "otaDeviceInfoUnavailable": - "Unable to get device info. Please check the connection and retry.", + "Nije moguće dohvatiti informacije o uređaju. Provjerite vezu i pokušajte ponovno.", "otaProductInfoUnavailable": - "Unable to identify the device. Please reconnect and retry.", + "Nije moguće prepoznati uređaj. Ponovno se povežite i pokušajte ponovno.", "otaFirmwareVersionInvalid": - "Firmware version is abnormal. Please reconnect and retry.", + "Verzija firmvera je neispravna. Ponovno se povežite i pokušajte ponovno.", "keepConnectedDontClose": "Držite uređaj povezanim, ne zatvarajte aplikaciju", "doNotDisconnect": "Ne prekidajte vezu", "charging": "Punjenje", @@ -1479,57 +1492,59 @@ const Map hrHR = { "Izvadite obje slušalice i provjerite je li baterija obje iznad 20%", // OTA升级模块 - 弹窗与对话框 - 'otaNewVersionFoundWithVersion': 'New version @version found', - 'otaConfirmUpdateNow': 'Update now?', - 'otaUpdate': 'Update', - 'otaUpgradeSuccess': 'Upgrade Successful', + 'otaNewVersionFoundWithVersion': 'Pronađena je nova verzija @version', + 'otaConfirmUpdateNow': 'Ažurirati sada?', + 'otaUpdate': 'Ažuriraj', + 'otaUpgradeSuccess': 'Nadogradnja uspješna', 'otaUpgradeCompleteRepair': - 'Firmware upgrade complete!\n\nDevice needs to be re-paired to work properly. Go to pairing page now?', - 'otaPairLater': 'Pair Later', - 'otaPairNow': 'Pair Now', + 'Nadogradnja firmvera završena!\n\nUređaj je potrebno ponovno upariti da bi ispravno radio. Želite li sada otvoriti stranicu za uparivanje?', + 'otaPairLater': 'Upari kasnije', + 'otaPairNow': 'Upari sada', 'okConfirm': 'OK', // OTA升级模块 - 设备检查 - 'otaBleCheckErrorWithError': 'Error checking BLE connection: @error', - 'otaBleNotConnected': 'BLE Device Not Connected', + 'otaBleCheckErrorWithError': 'Greška pri provjeri BLE veze: @error', + 'otaBleNotConnected': 'BLE uređaj nije povezan', 'otaBleNeedConnection': - 'Firmware upgrade requires BLE device connection\nPlease ensure device is properly connected and try again', - 'otaDeviceInfoUnavailableTitle': 'Device Info Unavailable', + 'Nadogradnja firmvera zahtijeva BLE vezu uređaja\nProvjerite je li uređaj ispravno povezan i pokušajte ponovno', + 'otaDeviceInfoUnavailableTitle': 'Informacije o uređaju nisu dostupne', 'otaCannotGetDeviceInfo': - 'Cannot get device info\nPlease reconnect device or try again later', - 'otaBleCheckFailed': 'BLE Connection Check Failed', + 'Nije moguće dohvatiti informacije o uređaju\nPonovno povežite uređaj ili pokušajte kasnije', + 'otaBleCheckFailed': 'Provjera BLE veze nije uspjela', 'otaCannotGetDeviceInfoCheckConnection': - 'Cannot get device info, please check device connection', + 'Nije moguće dohvatiti informacije o uređaju, provjerite vezu', 'otaCannotGetProductInfoWithName': - 'Cannot get product info, device name: @deviceName', - 'otaCannotGetBatteryInfo': 'Cannot get valid battery info', - 'otaLowBattery': 'Low Battery', + 'Nije moguće dohvatiti informacije o proizvodu, naziv uređaja: @deviceName', + 'otaCannotGetBatteryInfo': + 'Nije moguće dohvatiti valjane informacije o bateriji', + 'otaLowBattery': 'Niska baterija', 'otaSingleBatteryLow': - 'Device battery too low for firmware upgrade\nRequirement: battery must be above 20%\nCurrent: @ear @battery%\nPlease charge and try again', + 'Baterija uređaja je preniska za nadogradnju firmvera\nZahtjev: baterija mora biti iznad 20%\nTrenutno: @ear @battery%\nNapunite i pokušajte ponovno', 'otaDoubleBatteryLow': - 'Device battery too low for firmware upgrade\nRequirement: both earbuds must be above 20%\nCurrent: Left @left%, Right @right%\nPlease charge and try again', - 'otaBatteryCheckFailed': 'Battery Check Failed', + 'Baterija uređaja je preniska za nadogradnju firmvera\nZahtjev: obje slušalice moraju biti iznad 20%\nTrenutno: Lijevo @left%, Desno @right%\nNapunite i pokušajte ponovno', + 'otaBatteryCheckFailed': 'Provjera baterije nije uspjela', // OTA升级模块 - 升级状态 'otaDefaultUpdateDesc': - 'This update includes performance optimizations and bug fixes.', - 'otaGetLatestVersionFailed': 'Failed to get latest version info', - 'otaGetVersionInfoFailed': 'Failed to get version info', - 'otaCheckingDeviceStatus': 'Checking device status...', + 'Ovo ažuriranje uključuje optimizacije performansi i ispravke grešaka.', + 'otaGetLatestVersionFailed': + 'Nije moguće dohvatiti informacije o najnovijoj verziji', + 'otaGetVersionInfoFailed': 'Nije moguće dohvatiti informacije o verziji', + 'otaCheckingDeviceStatus': 'Provjera statusa uređaja...', 'otaDownloadFailedCheckNetwork': - 'Download failed, please check network connection', - 'otaDownloadFailed': 'Download Failed', - 'otaPreparingConnection': 'Preparing device connection...', - 'otaConnectingDevice': 'Connecting to device...', - 'otaUpgradeStarted': 'OTA upgrade started...', - 'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%', - 'otaUpgradeSuccessComplete': 'Upgrade completed successfully', - 'otaUpgradeFailedWithCode': 'Upgrade failed, error code: @code', - 'otaUpgradeFailedTitle': 'Upgrade Failed', + 'Preuzimanje nije uspjelo, provjerite mrežnu vezu', + 'otaDownloadFailed': 'Preuzimanje nije uspjelo', + 'otaPreparingConnection': 'Priprema veze s uređajem...', + 'otaConnectingDevice': 'Povezivanje s uređajem...', + 'otaUpgradeStarted': 'Pokrenuta OTA nadogradnja...', + 'otaUpgradeProgressWithPercent': 'Napredak nadogradnje: @percent%', + 'otaUpgradeSuccessComplete': 'Nadogradnja je uspješno završena', + 'otaUpgradeFailedWithCode': 'Nadogradnja nije uspjela, kod greške: @code', + 'otaUpgradeFailedTitle': 'Nadogradnja nije uspjela', 'otaUpgradeFailedDesc': - 'Please check device connection or update package, error code: @code', - 'otaDeviceDisconnected': 'Device disconnected', - 'otaDeviceConnected': 'Device connected', + 'Provjerite vezu uređaja ili paket nadogradnje, kod greške: @code', + 'otaDeviceDisconnected': 'Uređaj je odspojen', + 'otaDeviceConnected': 'Uređaj je povezan', // 音乐模块 "noMusic": "Nema glazbe", // 暂无音乐 diff --git a/lib/core/translations/language/hu_hu.dart b/lib/core/translations/language/hu_hu.dart index 79a3ab658..dd1555607 100644 --- a/lib/core/translations/language/hu_hu.dart +++ b/lib/core/translations/language/hu_hu.dart @@ -1,3 +1,4 @@ +//匈牙利-匈牙利语 const Map huHU = { // 通用 'continue': 'Folytatás', @@ -18,11 +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", + "justNow": "Épp most", + "minutesAgo": "@minutes perce", + "yesterday": "Tegnap", + "daysAgo": "@days napja", + "hoursAgo": "@hours órája", // 启动页 "slogan": "A világ összekötése, a hangon túl", @@ -172,27 +173,27 @@ const Map huHU = { 'A kapcsolat állapotának ellenőrzése sikertelen', // 蓝牙扫描模块 - 'bleInitFailedWithError': 'Bluetooth initialization failed: @error', + 'bleInitFailedWithError': 'Bluetooth inicializálása sikertelen: @error', 'needBluetoothAndLocationPermission': - 'Bluetooth and location permissions are required to scan devices', - 'permissionRequestFailedWithError': 'Permission request failed: @error', - 'needPermission': 'Permission Required', + 'Az eszközök kereséséhez Bluetooth- és helyengedély szükséges', + 'permissionRequestFailedWithError': 'Engedélykérés sikertelen: @error', + 'needPermission': 'Engedély szükséges', 'blePermissionDialogContent': - 'This app requires Bluetooth and location permissions to scan devices. Please enable them in Settings.', - 'needEnableBluetooth': 'Enable Bluetooth', + 'Az alkalmazásnak Bluetooth- és helyengedély kell az eszközök kereséséhez. Engedélyezze a Beállításokban.', + 'needEnableBluetooth': 'Bluetooth bekapcsolása', 'enableBluetoothDialogContent': - 'Please enable Bluetooth to scan and connect devices.', - 'bleScanFailedWithError': 'Scan failed: @error', - 'bleConnectionSuccess': 'Connection Successful', - 'bleConnectedToDevice': 'Connected to @device', - 'bleConnectionFailedWithError': 'Connection failed: @error', - 'bleDisconnected': 'Disconnected', - 'bleDeviceDisconnected': 'Device disconnected', - 'bleDisconnectFailedWithError': 'Disconnect failed: @error', - 'signalStrong': 'Strong', - 'signalMedium': 'Medium', - 'signalWeak': 'Weak', - 'signalVeryWeak': 'Very Weak', + 'Kapcsolja be a Bluetooth-t az eszközök kereséséhez és csatlakoztatásához.', + 'bleScanFailedWithError': 'Keresés sikertelen: @error', + 'bleConnectionSuccess': 'Sikeres csatlakozás', + 'bleConnectedToDevice': 'Csatlakoztatva: @device', + 'bleConnectionFailedWithError': 'Csatlakozás sikertelen: @error', + 'bleDisconnected': 'Leválasztva', + 'bleDeviceDisconnected': 'Az eszköz leválasztva', + 'bleDisconnectFailedWithError': 'Leválasztás sikertelen: @error', + 'signalStrong': 'Erős', + 'signalMedium': 'Közepes', + 'signalWeak': 'Gyenge', + 'signalVeryWeak': 'Nagyon gyenge', // 发现页 "searchAi": "AI funkciók keresése...", @@ -219,55 +220,55 @@ const Map huHU = { "scene": "Helyzet", // 用量统计模块 - "aiChat": "AI Chat", - "translationStats": "Translation Statistics", - "meetingStats": "Meeting Statistics", - "today": "Today", - "thisWeek": "This Week", - "thisMonth": "This Month", - "history": "History", - "currentSessionStats": "Current Session Stats", - "translationCount": "Translation Count", - "sessionDuration": "Session Duration", - "characters": "Characters", - "recordingDuration": "Recording Duration", - "totalApiCalls": "Total API Calls", - "sessionCount": "Session Count", - "totalCharacters": "Total Characters", - "apiCallStats": "API Call Stats", - "translationApi": "Translation API", + "aiChat": "AI chat", + "translationStats": "Fordítási statisztika", + "meetingStats": "Megbeszélések statisztikája", + "today": "Ma", + "thisWeek": "Ezen a héten", + "thisMonth": "Ebben a hónapban", + "history": "Előzmények", + "currentSessionStats": "Aktuális munkamenet statisztikái", + "translationCount": "Fordítások száma", + "sessionDuration": "Munkamenet hossza", + "characters": "Karakterek", + "recordingDuration": "Felvétel hossza", + "totalApiCalls": "Összes API-hívás", + "sessionCount": "Munkamenetek száma", + "totalCharacters": "Összes karakter", + "apiCallStats": "API-hívások statisztikája", + "translationApi": "Fordítási API", "asr": "ASR", "tts": "TTS", - "dataVolumeStats": "Data Volume Stats", - "sourceTextCharacters": "Source Text Characters", - "ttsTextCharacters": "TTS Text Characters", - "effectiveAudioDuration": "Effective Audio Duration", - "totalSessionDuration": "Total Session Duration", - "costStats": "Cost Stats", - "estimatedCost": "Estimated Cost", - "dailyCostThreshold": "Daily Cost Threshold", - "monthlyCostThreshold": "Monthly Cost Threshold", - "usageBehaviorStats": "Usage Behavior Stats", - "mostUsedLanguagePair": "Most-used language pair", - "mostUsedMode": "Most-used mode", - "asrApiCalls": "ASR Calls", - "totalAudioDuration": "Total Audio Duration", - "audioFileSize": "Audio File Size", - "transcriptBytes": "Transcript Bytes", - "loadFailed": "Load Failed", + "dataVolumeStats": "Adatmennyiség statisztika", + "sourceTextCharacters": "Forrásszöveg karakterei", + "ttsTextCharacters": "TTS szöveg karakterei", + "effectiveAudioDuration": "Hatékony hangidő", + "totalSessionDuration": "Összes munkamenet idő", + "costStats": "Költségstatisztika", + "estimatedCost": "Becsült költség", + "dailyCostThreshold": "Napi költségküszöb", + "monthlyCostThreshold": "Havi költségküszöb", + "usageBehaviorStats": "Használati viselkedés statisztikája", + "mostUsedLanguagePair": "Leggyakrabban használt nyelvpár", + "mostUsedMode": "Leggyakrabban használt mód", + "asrApiCalls": "ASR hívások", + "totalAudioDuration": "Teljes hangidő", + "audioFileSize": "Hangfájl mérete", + "transcriptBytes": "Átírás bájtjai", + "loadFailed": "Betöltés sikertelen", "statsLoadFailedTryLater": - "Statistics failed to load. Please try again later.", - "cleanupComplete": "Cleanup Complete", - "cleanedOldData": "Cleaned data older than 90 days", - "exportFeature": "Export Feature", - "exportInDevelopment": "Data export is under development", + "A statisztika betöltése sikertelen. Próbálja meg később.", + "cleanupComplete": "Tisztítás befejezve", + "cleanedOldData": "90 napnál régebbi adatok törölve", + "exportFeature": "Exportálás", + "exportInDevelopment": "Az adatexport fejlesztés alatt áll", // 商品模块 - 通用 - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', + 'availablePackages': 'Elérhető csomagok', + 'remainingQuota': 'Hátralévő kvóta', + 'totalQuota': 'Összes kvóta', + 'remaining': 'Hátralévő', + 'featureDescription': 'Funkcióleírás', 'paymentSuccess': 'Fizetés sikeres', 'paymentFailed': 'Fizetés sikertelen', 'gotIt': 'Értem', @@ -326,70 +327,72 @@ const Map huHU = { 'alipayPaymentLaunchFailed': 'Alipay indítása sikertelen', 'cannotLaunchAlipayPayment': 'Nem sikerült elindítani az Alipay-t', 'alipayPaymentException': 'Alipay kivétel', - "insufficientIntegral": "Insufficient integral", + "insufficientIntegral": "Nem elegendő pont", "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', + 'Nincs elegendő egyenleg, kérjük, menjen a megfelelő feltöltési oldalra.', + "recharge": 'Ugrás feltöltéshez', "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + 'Az AI tagság lejárt, kérjük, újítsa meg a tagsági oldalon.', // 商品模块 - AI商品页 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', + 'musicAndRecommendation': 'Zene és ajánlások', + 'navigationAndRoutes': 'Navigáció és útvonalak', + 'nearbySearch': 'Közeli keresés', + 'newsInformation': 'Hírek', + 'communicationAssistant': 'Kommunikációs asszisztens', 'aiHeaderDesc1': - 'Longer conversation quota, more tool calls, extended context length.', + 'Hosszabb beszélgetési kvóta, több eszközhívás, hosszabb kontextus.', 'aiHeaderDesc2': - 'Suitable for agent Q&A, summarization, analysis, and task execution.', - 'musicSearchPlaybackControl': 'Music library search and playback control', + 'Ideális ügynök kérdések/válaszokhoz, összegzéshez, elemzéshez és feladatvégrehajtáshoz.', + 'musicSearchPlaybackControl': 'Zenei könyvtár keresése és lejátszásvezérlés', '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', + 'Okos lejátszási lista és hasonló dalok ajánlása', + 'routePlanningAndCongestionAvoidance': 'Útvonaltervezés és dugóelkerülés', + 'voiceBroadcastAndWaypoints': 'Hangos navigáció és útpontok beállítása', + 'realTimeWeatherForecast': 'Valós idejű időjárás és előrejelzés', + 'clothingAdviceAndTravelReminders': + 'Öltözködési tanácsok és utazási emlékeztetők', + 'poiSearchFoodGasParking': 'POI keresés: étkezés / üzemanyag / parkolás', + 'ratingsHoursAndDirectRoutes': + 'Értékelések, nyitvatartás és közvetlen útvonaltervezés', + 'hotNewsAndTopicOverview': 'Hírek és témák áttekintése', + 'longArticleSummariesAndKeyPoints': + 'Hosszú cikkek összefoglalói és fő pontjai', + 'helpCallAndSMS': 'Segítség hívásokhoz és SMS-hez', 'templatedMessagesAndScheduleReminders': - 'Template messages and schedule reminders', + 'Üzenetsablonok és ütemezett emlékeztetők', 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', + 'A funkciók az eszközengedélyektől, a szolgáltatás elérhetőségétől és a hálózati feltételektől függenek.', // 商品模块 - 翻译商品页 - 'realtimeTranscription': 'Real-time Transcription', - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', + 'realtimeTranscription': 'Valós idejű átírás', + 'sceneLexicon': 'Szituációs szótár', + 'subtitleDisplay': 'Feliratok', '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', + 'Valós idejű szinkrontolmácsolás és szövegfordítás alacsony késleltetésű hanggal.', + 'transHeaderDesc2': 'Utazáshoz, üzlethez, beszédekhez és oktatáshoz.', + 'translateZhEn': 'Kínai–angol fordítás', + 'lowLatencyVoiceBroadcast': 'Alacsony késleltetésű hangos felolvasás', + 'multiLangTextTranslation': 'Többnyelvű szövegfordítás', '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', + 'Terminológia-optimalizálás és kontextusmegőrzés', + 'lexiconTourBusinessLife': 'Utazás/üzlet/élet szótárak', + 'personalVocabularyMemory': 'Személyes szókincs megjegyzése', + 'conversationSubtitleLargeText': 'Beszélgetési feliratok / nagy betűs mód', + 'colorHighContrast': 'Magas színkontraszt', 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', + 'A fordítás minősége a mikrofontól, a hálózati késleltetéstől és a környezeti zajtól függ.', // 商品模块 - 会议商品页 - 'meetingRecording': 'Meeting Recording', + 'meetingRecording': 'Megbeszélés rögzítése', 'transcriptionAndSummary': 'Transcription & Summary', 'keywordSearch': 'Keyword Search', 'collaborationSharing': 'Collaboration & Sharing', 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'Hangrögzítés, átírás, kulcsszavas keresés és automatikus összefoglaló a hatékonyabb megbeszélésekért.', 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', + 'Üzleti megbeszélésekhez, órai jegyzetekhez és interjújegyzőkönyvekhez.', + 'meetingAutoRecording': 'Automatikus rögzítés és szegmentálás', 'meetingSpeakerTagging': 'Speaker labeling', 'meetingLongAudioTranscription': 'Long audio transcription', 'meetingKeyPointSummary': 'Key point extraction', @@ -398,43 +401,44 @@ const Map huHU = { 'meetingExportSummary': 'Export minutes', 'meetingMultiPlatformShare': 'Share across platforms', 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', + 'Használja csendes környezetben; a teljesítmény a mikrofontól és a hálózattól függ.', // 商品模块 - VIP会员页 - 'benefitsOverview': 'Benefits overview', - 'higherQuota': 'Higher usage quota', - 'lowerUnitPrice': 'Lower unit price', - 'priorityService': 'Priority service', - 'exclusiveSupportChannel': 'Dedicated support channel', - 'fastResponse': 'Fast issue response', - 'eventsAndDiscounts': 'Events and discounts', - 'memberExclusiveEvents': 'Member-exclusive events', - 'longTermDiscountPlan': 'Long-term discount plan', - 'generalPrivileges': 'General privileges', - 'earlyAccessNewFeatures': 'Early access to new features', - 'crossDeviceSync': 'Cross-device sync', + 'benefitsOverview': 'Előnyök áttekintése', + 'higherQuota': 'Magasabb használati kvóta', + 'lowerUnitPrice': 'Alacsonyabb egységár', + 'priorityService': 'Prioritásos szolgáltatás', + 'exclusiveSupportChannel': 'Dedikált támogatási csatorna', + 'fastResponse': 'Gyors hibakezelés', + 'eventsAndDiscounts': 'Események és kedvezmények', + 'memberExclusiveEvents': 'Exkluzív események tagoknak', + 'longTermDiscountPlan': 'Hosszú távú kedvezménycsomag', + 'generalPrivileges': 'Általános előnyök', + 'earlyAccessNewFeatures': 'Korai hozzáférés az új funkciókhoz', + 'crossDeviceSync': 'Szinkronizálás eszközök között', 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', // 商品模块 - 商品名称与描述 - '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).', + 'ai_001_name': 'AI Alap 100', + 'ai_002_name': 'AI Alap 500', + 'ai_003_name': 'AI Alap 1000', + 'meet_001_name': 'Megbeszélés Alap 100', + 'meet_002_name': 'Megbeszélés Alap 500', + 'meet_003_name': 'Megbeszélés Alap 1000', + 'trans_001_name': 'Fordítás Alap 100', + 'trans_002_name': 'Fordítás Alap 500', + 'trans_003_name': 'Fordítás Alap 1000', + 'ai_001_desc': 'Tartalmaz 100 használatot. Hozzáférés az AI alapfunkcióihoz.', + 'ai_002_desc': 'Tartalmaz 500 használatot. Hozzáférés az AI alapfunkcióihoz.', + 'ai_003_desc': + 'Tartalmaz 1000 használatot. Hozzáférés az AI alapfunkcióihoz.', + 'meet_001_desc': 'Tartalmaz 100 megbeszélésfelvételt/átírást.', + 'meet_002_desc': 'Tartalmaz 500 megbeszélésfelvételt/átírást.', + 'meet_003_desc': 'Tartalmaz 1000 megbeszélésfelvételt/átírást.', + 'trans_001_desc': 'Tartalmaz 100 fordítást (hang/szöveg).', + 'trans_002_desc': 'Tartalmaz 500 fordítást (hang/szöveg).', + 'trans_003_desc': 'Tartalmaz 1000 fordítást (hang/szöveg).', // 商品模块 - 页脚 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', @@ -465,18 +469,19 @@ const Map huHU = { 'guideNavSend': 'Lily will plan the route', 'guideNavEnd': 'Navigation set—try other commands', 'guideMeetingStart': - 'Tell Lily: “Create a meeting reminder for 3pm tomorrow”', - 'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow', - 'guideMeetingSend': 'Lily will create a meeting reminder', - 'guideMeetingEnd': 'Reminder created—try other commands', - 'guidePhoneStart': 'Tell Lily: “Call Mom”', - 'guidePhoneInput': 'Call Mom', - 'guidePhoneSend': 'Lily will make the call', - 'guidePhoneEnd': 'Call placed—try other commands', - 'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”', - 'guideSmsInput': 'Text Dad: I’ll be home for dinner', - 'guideSmsSend': 'Lily will send the message', - 'guideSmsEnd': 'Message sent—voice control is convenient', + 'Mondja Lilynek: „Készíts egy megbeszélés-emlékeztetőt holnap 15:00-ra”', + 'guideMeetingInput': 'Készíts egy megbeszélés-emlékeztetőt holnap 15:00-ra', + 'guideMeetingSend': 'Lily létrehozza a megbeszélés-emlékeztetőt', + 'guideMeetingEnd': 'Emlékeztető létrehozva — próbáljon más parancsokat', + 'guidePhoneStart': 'Mondja Lilynek: „Hívd anyát”', + 'guidePhoneInput': 'Hívd anyát', + 'guidePhoneSend': 'Lily elindítja a hívást', + 'guidePhoneEnd': 'Hívás elindítva — próbáljon más parancsokat', + 'guideSmsStart': + 'Mondja Lilynek: „Küldj apának SMS-t: Vacsorára otthon leszek”', + 'guideSmsInput': 'SMS apának: Vacsorára otthon leszek', + 'guideSmsSend': 'Lily elküldi az üzenetet', + 'guideSmsEnd': 'Üzenet elküldve — a hangvezérlés kényelmes', // Meeting模块 - 首页与导航 "startMeeting": "Megbeszélés indítása", @@ -490,38 +495,40 @@ const Map huHU = { 'recordingDetails': 'Felvétel részletei', 'aiSummary': 'AI összefoglaló', 'meetingTranscript': 'Megbeszélés átirata', - 'files': 'Files', - 'mine': 'Mine', - 'connect': 'Connect', - 'allFiles': 'All Files', - 'searchInAllFiles': 'Search in all files', - 'from': 'From', - 'sortBy': 'Sort by', - 'creationTime': 'Creation Time', - 'bluetoothConnection': 'Bluetooth Connection', - 'meetingReconnect': 'Reconnect', - 'searching': 'Searching...', - 'searchFailed': 'Search failed, please check if Bluetooth is enabled', - 'aiPenNotFound': 'AI PEN device not found', - 'connectedToAiPen': 'Connected to AI PEN device', - 'checkingNewFiles': 'Checking for new files to import', - 'startingWifi': 'Starting Wi-Fi...', - 'newFilesDetected': 'New files detected, preparing to import', - 'noNewFiles': 'No new files to import', - 'connectingWifi': 'Connecting to Wi-Fi...', - 'wifiConnected': 'Wi-Fi connected successfully', - 'downloadingFiles': 'Downloading files...', - 'downloadingFileProgress': 'Total {total} files, downloading file {current}', - 'downloadComplete': 'Download complete', + 'files': 'Fájlok', + 'mine': 'Saját', + 'connect': 'Csatlakozás', + 'allFiles': 'Összes fájl', + 'searchInAllFiles': 'Keresés az összes fájlban', + 'from': 'Tól', + 'sortBy': 'Rendezés', + 'creationTime': 'Létrehozás ideje', + 'bluetoothConnection': 'Bluetooth kapcsolat', + 'meetingReconnect': 'Újracsatlakozás', + 'searching': 'Keresés...', + 'searchFailed': + 'Keresés sikertelen, ellenőrizze, hogy a Bluetooth be van-e kapcsolva', + 'aiPenNotFound': 'AI PEN eszköz nem található', + 'connectedToAiPen': 'Csatlakoztatva az AI PEN eszközhöz', + 'checkingNewFiles': 'Új fájlok ellenőrzése importáláshoz', + 'startingWifi': 'Wi‑Fi indítása...', + 'newFilesDetected': 'Új fájlok észlelve, import előkészítése', + 'noNewFiles': 'Nincs új fájl importáláshoz', + 'connectingWifi': 'Csatlakozás Wi‑Fi‑hez...', + 'wifiConnected': 'Wi‑Fi sikeresen csatlakoztatva', + 'downloadingFiles': 'Fájlok letöltése...', + 'downloadingFileProgress': + 'Összesen {total} fájl, a(z) {current}. fájl letöltése', + 'downloadComplete': 'Letöltés kész', 'downloadCompleteInfo': - 'Download complete, {count} files in total, returning automatically in 2 seconds', + 'Letöltés kész, összesen {count} fájl, 2 másodperc múlva automatikus visszalépés', // Meeting模块 - 录音功能 - 'startRecording': 'Start Recording', - 'liveRecording': 'Live Recording', - 'audioVideoRecording': 'Audio/Video Recording', - 'callRecording': 'Call Recording', - 'importAudio': 'Import Audio', + 'startRecording': 'Felvétel indítása', + 'liveRecording': 'Élő felvétel', + 'audioVideoRecording': 'Hang/videó felvétel', + 'callRecording': 'Hívásfelvétel', + 'importAudio': 'Hang importálása', 'meetingRecordExitTitle': 'Kilépés a felvételből', // 退出录音 'meetingRecordExitMessage': 'Válassza ki, mit tegyen kilépés előtt', // 请选择离开后的操作 @@ -545,30 +552,30 @@ const Map huHU = { 'A felvétel közbeni lebegő sáv (időzítő/szünet/folytatás) megjelenítéséhez szükségünk van a más alkalmazások feletti megjelenítés engedélyére.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'overlayPermissionOpenSettingsFailed': 'Nem sikerült automatikusan megnyitni a rendszerbeállításokat. Nyissa meg a Beállításokat, és engedélyezze kézzel a más alkalmazások feletti megjelenítést.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'transcribing': 'Átírás...', + 'summarizing': 'Összegzés...', + 'analyzing': 'Elemzés...', + 'summaryComplete': 'Összegzés kész', + 'generate': 'Generálás', + 'overview': 'Áttekintés', + 'transcription': 'Átírás', + 'summary': 'Összegzés', + 'mindMap': 'Gondolattérkép', + 'editSpeaker': 'Szerkesztés', + 'nameSpeaker': 'Beszélő elnevezése', // Meeting模块 - 转写与总结 - 'reSummarize': 'Re-summarize', - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'reSummarize': 'Újra összefoglalás', + 'dateAndTime': 'Dátum és idő', + 'location': 'Helyszín', + 'attendees': 'Résztvevők', + 'inputLocation': 'Helyszín megadása', + 'inputAttendees': 'Résztvevők megadása', // Meeting模块 - 模版与生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', + 'selectSummaryTemplate': 'Összefoglaló sablon választása', + 'useThisTemplate': 'Sablon használata', + 'lastUsed': 'Legutóbb használt', 'create': 'Létrehozás', 'templateDetails': 'Sablon részletei', 'tag': 'Címke', @@ -585,160 +592,163 @@ const Map huHU = { '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.', + 'viewAll': 'Összes megtekintése', + 'recordingLanguage': 'Felvétel nyelve', + 'chineseSimplified': 'Kínai mandarin (egyszerűsített)', + 'meetingGenerateNow': 'Generálás most', + 'keyEventsAnalyzed': 'A(z) {count} kulcsesemény elemzése megtörtént.', 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + 'Az AI-elemzés azonosítja a felvételek kulcseseményeit, így kiválaszthatja a fontos eseményeket az AI generáláshoz.', // 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}', + 'importing': 'Importálás...', + 'batchImporting': 'Tömeges importálás...', + 'importingLocalRecordings': 'Helyi felvételek importálása...', + 'importFailed': 'Fájl importálása sikertelen: {filePath}, hiba: {error}', + 'importSuccess': 'Sikeresen importálva {count} helyi felvétel', + 'importError': 'Importálás sikertelen: {error}', + 'pleaseSelectAudioFile': 'Kérjük, válasszon hangfájlt', + 'shareAudio': 'Megbeszélés hanganyag megosztása', + 'shareComplete': 'Megosztás kész!', + 'shareFailed': 'Megosztás sikertelen: {error}', + 'fileProcessingFailed': + 'Fájl feldolgozása sikertelen: {filePath}, hiba: {error}', // Meeting模块 - 思维导图 'saveMindMap': 'Gondolattérkép mentése', - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', + 'shareMindMap': 'Gondolattérkép megosztása', + 'shareSuccess': 'Megosztás sikeres', // 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', + 'askAI': 'Kérdezd az AI-t...', + 'askAIPrompt': 'Miben segíthetek ma?', + 'continueAsk': 'Kérdezés folytatása', + 'todoList': 'Teendők', + 'extractConclusion': 'Következtetések kiemelése', + 'generateKeyIndicators': 'Kulcsmutatók generálása', // 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...', + 'shareLink': 'Link megosztása', + 'copyTranscript': 'Átirat másolása', + 'copySummary': 'Összefoglaló másolása', + 'exportAudio': 'Hang exportálása', + 'exportTranscript': 'Átirat exportálása', + 'shareMeetingAudio': 'Megbeszélés hanganyag megosztása', + 'exportSummary': 'Összefoglaló exportálása', + 'exportAs': 'Exportálás másként', + 'exportingPDF': 'PDF exportálása...', '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', + 'nameCurrentSpeaker': 'Aktuális beszélő elnevezése', + 'recentlyUsedNames': 'Nemrég használt nevek', + 'applyToCurrentParagraph': 'Alkalmazás az aktuális bekezdésre', + 'totalTime': 'Teljes idő', 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', + 'Az összefoglaló beszélői automatikusan frissülnek', // Meeting模块 - 云端同步 - 'syncToCloud': 'Sync to Cloud', + 'syncToCloud': 'Szinkronizálás felhőbe', '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', + 'A felvételek automatikus szinkronizálása a felhőbe; bármely VOITRANS alkalmazáson vagy VOITRANS Weben (web.voitrans.com) lejátszhatja, kezelheti és megoszthatja a felvételeket.', + 'syncToVoitransApp': 'VOITRANS app szinkronizálása', + 'transcriptionRecord': 'Átírási rekord', // Meeting模块 - 我的页面 - 'transcriptionRecords': 'Transcription Records', - 'templateCommunity': 'Template Community', - 'comingSoon': 'Coming Soon', - 'integration': 'Integration', + 'transcriptionRecords': 'Átírási rekordok', + 'templateCommunity': 'Sablonközösség', + 'comingSoon': 'Hamarosan', + 'integration': 'Integráció', 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', - 'enabled': 'Enabled', - 'disabled': 'Disabled', - 'myVoitransDevice': 'My VOITRANS Device', - 'helpAndFeedback': 'Help & Feedback', - 'aboutVoitrans': 'About VOITRANS', - 'meetingDays': 'Days', - 'meetingHours': 'Hours', - 'voitransAiMember': 'Voitrans AI Member', - 'unlockStarterMember': 'Unlock Starter Member', - 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', - 'unlockNow': 'Unlock Now', + 'enabled': 'Engedélyezve', + 'disabled': 'Kikapcsolva', + 'myVoitransDevice': 'Saját VOITRANS eszköz', + 'helpAndFeedback': 'Súgó és visszajelzés', + 'aboutVoitrans': 'A VOITRANS-ról', + 'meetingDays': 'Napok', + 'meetingHours': 'Órák', + 'voitransAiMember': 'Voitrans AI tagság', + 'unlockStarterMember': 'Starter tagság feloldása', + 'bindDeviceToActivate': + 'Kösse össze a Voitrans eszközt a Starter tagság aktiválásához', + 'unlockNow': 'Feloldás most', // Meeting模块 - 会员与升级 - 'comparison': 'Comparison', - 'detailedInfo': 'Detailed Information', - 'monthlyTranscriptionTime': 'Monthly Transcription Time', - 'unlimited': 'Unlimited', - 'professionalTemplates': 'Professional Templates', - 'limited': 'Limited', - 'fullTemplates': 'Full Templates', - 'professionalTerms': 'Professional Terms', - 'customTemplates': 'Custom Templates', - 'visualMindMap': 'Visual Mind Map', - 'speakerIdentification': 'Speaker Identification', - 'aiVoiceEnhancement': 'AI Voice Enhancement', - 'audioImport': 'Audio Import', - 'multipleExportFormats': 'Multiple Export Formats', - 'professionalSummaryTemplates': 'Professional Summary Templates', + 'comparison': 'Összehasonlítás', + 'detailedInfo': 'Részletes információ', + 'monthlyTranscriptionTime': 'Havi átírási idő', + 'unlimited': 'Korlátlan', + 'professionalTemplates': 'Professzionális sablonok', + 'limited': 'Korlátozott', + 'fullTemplates': 'Teljes sablonkészlet', + 'professionalTerms': 'Szakmai kifejezések', + 'customTemplates': 'Egyéni sablonok', + 'visualMindMap': 'Vizuális gondolattérkép', + 'speakerIdentification': 'Beszélőazonosítás', + 'aiVoiceEnhancement': 'AI hangjavítás', + 'audioImport': 'Hang importálása', + 'multipleExportFormats': 'Több exportformátum', + 'professionalSummaryTemplates': 'Professzionális összefoglaló-sablonok', 'professionalTemplateDesc': - 'Professional template design to improve your work efficiency. Customized according to industry needs.', + 'Professzionális sablonok a hatékonyabb munkavégzéshez. Iparági igényekhez igazítva.', 'customTemplateDesc': - 'You can customize summary prompts according to your needs and use them to generate the required summaries.', + 'Az összefoglaló-prompteket igényei szerint testre szabhatja, és ezekkel generálhatja a szükséges összefoglalókat.', 'askAiDesc': - 'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.', + 'Intelligensen nyerjen ki mélyebb információt a felvételekből, és egy kattintással generáljon adattáblákat, kulcskövetkeztetéseket, teendőlistákat, jelentés e-maileket és más formázott tartalmakat.', 'visualMindMapDesc': - 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', + 'Több mint összefoglaló: rendezze és vizualizálja a kulcspontokat gondolattérképekkel a teljes szöveg jobb megértéséhez.', 'templateCommunityDesc': - 'Discover, share, and get inspiration from the template library created by users.', + 'Fedezze fel, ossza meg, és merítsen ihletet a felhasználók által létrehozott sablonkönyvtárból.', 'speakerIdentificationDesc': - 'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.', + 'Az átírás támogatja a beszélők azonosítását, így érthetőbben visszaadja a megbeszélések vagy hívások tartalmát, és az összefoglaló is pontosabb lesz.', 'privateCloudSyncDesc': - 'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.', + 'Felvételei és átírásai dedikált felhőszervereken lesznek biztonságosan tárolva, feltöltés és letöltés közben teljes titkosítással a magánszféra és biztonság érdekében.', 'aiVoiceEnhancementDesc': - 'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.', + 'Az AI hangjavítás több zajcsökkentési szintet támogat, intelligensen csökkenti a háttérzajt, növeli a beszéd tisztaságát és javítja a lejátszás minőségét.', 'audioImportDesc': - 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', + 'Könnyedén importálhat hangfájlokat a készülékről vagy külső alkalmazásokból (például Hangjegyzetek, Google Drive stb.).', 'multipleExportFormatsDesc': - 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - 'upgradeMembership': 'Upgrade Your Membership', - 'yearlySubscription': 'Yearly Subscription', - 'monthlySubscription': 'Monthly Subscription', + 'Exportálja hangfelvételeit, átírásait és összefoglalóit többféle formátumban (TXT, PDF, JPEG) az igényeinek megfelelően.', + 'upgradeMembership': 'Tagság frissítése', + 'yearlySubscription': 'Éves előfizetés', + 'monthlySubscription': 'Havi előfizetés', 'proMonthly': 'Pro ¥60/month', 'proMonthlyDesc': - '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', - 'sevenDayTrial': '7-day Free Trial', + '7 napos ingyenes próba, utána ¥800/év. A próba lejárta előtt bármikor lemondható.', + 'sevenDayTrial': '7 napos ingyenes próba', 'unlimitedMonthly': 'Unlimited ¥120/month', 'unlimitedMonthlyDesc': - '7-day free trial, then ¥1600/year. Cancel anytime before trial ends.', - 'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.', + '7 napos ingyenes próba, utána ¥1600/év. A próba lejárta előtt bármikor lemondható.', + 'trialNote': + '*7 napos ingyenes próba, utána éves díjazás; bármikor lemondható.', 'proPrice': 'Pro ¥120', 'proMonthlyPrice': '¥120/month', - 'subscribe': 'Subscribe', + 'subscribe': 'Előfizetés', 'unlimitedPrice': 'Unlimited ¥198', 'unlimitedMonthlyPrice': '¥198/month', 'upgradeNote': - '*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account', - 'buyMoreTranscriptionTime': 'Buy More Transcription Time', + '*Előfizetés frissítése után az eredeti előfizetés hátralévő napjait automatikusan kiszámítjuk és visszatérítjük a fizetési fiókjára', + 'buyMoreTranscriptionTime': 'További átírási idő vásárlása', 'sixThousandMinutes': '6,000 minutes', 'threeThousandMinutes': '3,000 minutes', 'sixHundredMinutes': '600 minutes', 'oneHundredTwentyMinutes': '120 minutes', - 'validityPeriod': '*Validity Period: ', + 'validityPeriod': '*Érvényesség: ', 'validityNote': - 'Activated immediately after purchase, valid for 2 years after activation.', - 'purchase': 'Purchase', + 'A vásárlás után azonnal aktiválódik, aktiválástól számítva 2 évig érvényes.', + 'purchase': 'Vásárlás', // Meeting模块 - 录音语言 - 'recordLanguage': 'Recording Language', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', + 'recordLanguage': 'Felvétel nyelve', + 'cantonese': 'Kantonai', + 'sichuan': 'Szecsuan dialektus', + 'shanghai': 'Sanghaji dialektus', // Meeting模块 - 错误提示 - 'meetingUnknownLanguage': 'Unknown Language', + 'meetingUnknownLanguage': 'Ismeretlen nyelv', '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', @@ -759,10 +769,10 @@ const Map huHU = { "translationRecharge": "Fordítás ponuda", "meetingAssistantRecharge": "Megbeszélés asszisztens ponuda", "cloudSync": "Synchronizációs ponuda", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "memberService": "Tagi szolgáltatás", + "bindRewardTitle": "Jutalmak", "bindRewardSimpleDesc": - "First bind device reward has been issued. Tap OK to close.", + "Az első eszközpárosítási jutalom jóváírásra került. Koppintson az OK-ra a bezáráshoz.", "joinDevice": "Csatlakoztatott eszköz:", "accountId": "Fiók azonosító:", "systemSetting": "Rendszerbeállítás", @@ -813,20 +823,20 @@ const Map huHU = { "loading": "Betöltés...", // 设备管理模块 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", - "deviceTypeSmartEye": "Smart Glasses", + "deviceTypeUnknown": "Ismeretlen eszköz", + "deviceTypeClassicBluetoothHeadset": "Klasszikus Bluetooth headset", + "deviceTypeBleBluetoothHeadset": "BLE Bluetooth headset", + "deviceTypeSmartVoiceRecorder": "Okos hangrögzítő", + "deviceTypeSmartEye": "Okos szemüveg", "unbind": "Párosítás megszüntetése", - "noDevicesBound": "No devices bound yet", - "pleaseBindDeviceFirst": "Please bind a device first to manage", - "noMacAddress": "No MAC Address", - "licenseCode": "License Code", - "confirmUnbind": "Confirm Unbind", + "noDevicesBound": "Még nincs párosított eszköz", + "pleaseBindDeviceFirst": "A kezeléshez először párosítson egy eszközt", + "noMacAddress": "Nincs MAC-cím", + "licenseCode": "Licenckód", + "confirmUnbind": "Párosítás megszüntetésének megerősítése", "confirmUnbindMessage": - "Are you sure you want to unbind device \"{deviceName}\"?", - "confirmUnbindAction": "Confirm Unbind", + "Biztosan megszünteti az eszköz párosítását: \"{deviceName}\"?", + "confirmUnbindAction": "Megerősítés", // Agent模块 - 主界面 "Lily": "Lily", @@ -857,22 +867,22 @@ const Map huHU = { "loadFailedClickRetry": "Betöltés sikertelen, kattintson az újrapróbálkozáshoz", "swipeUpForMore": "Húzza felfelé a továbbiakért", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 + "callingTool": "Segítek, kérem várjon!", // 正在帮您,请稍等! + "voice_interrupt": "Megszakítás", // 语音打断 '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", // 今日天气 - "presetNews": "Today's news", // 今日新闻 - "presetFood": "Nearby food", // 美食 - "playSomeMusic": "Play some popular music", // 播放一些流行音乐 - "navigationTo": "Please help me navigate to", // 导航到 - "todayWeather": "How's the weather today?", // 今日天气 - "todayNews": "What's the news today?", // 今日新闻 - "nearbyFood": "What delicious food is nearby?", // 美食 + "presetMusic": "Játssz le zenét", // 来点音乐 + "presetNavigation": "Navigáció ide", // 导航 + "presetWeather": "Mai időjárás", // 今日天气 + "presetNews": "Mai hírek", // 今日新闻 + "presetFood": "Étel a közelben", // 美食 + "playSomeMusic": "Játssz le népszerű zenét", // 播放一些流行音乐 + "navigationTo": "Kérlek navigálj ide", // 导航到 + "todayWeather": "Milyen idő van ma?", // 今日天气 + "todayNews": "Mik a mai hírek?", // 今日新闻 + "nearbyFood": "Milyen finom étel van a közelben?", // 美食 // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Szia! **Lily** vagyok, segíthetek neked:\n\n' @@ -944,27 +954,27 @@ const Map huHU = { "tsransit": "Tömegközlekedés", // Agent模块 - 导航选择 - 'selectNavigationApp': 'Select Navigation App', + 'selectNavigationApp': 'Navigációs app kiválasztása', 'amapMap': 'Amap', - 'useAmapNavigation': 'Navigate with Amap', + 'useAmapNavigation': 'Navigálás Amap-pel', 'baiduMap': 'Baidu Maps', - 'useBaiduNavigation': 'Navigate with Baidu Maps', + 'useBaiduNavigation': 'Navigálás Baidu Maps-szel', 'googleMap': 'Google Maps', - 'useGoogleNavigation': 'Navigate with Google Maps', + 'useGoogleNavigation': 'Navigálás Google Térképpel', 'appleMap': 'Apple Maps', - 'useAppleNavigation': 'Navigate with Apple Maps', - 'builtInNavigation': 'Built-in Navigation', - 'useBuiltInNavigation': 'Navigate with built-in map', - 'navigationStartFailed': 'Failed to start navigation', + 'useAppleNavigation': 'Navigálás Apple Térképpel', + 'builtInNavigation': 'Beépített navigáció', + 'useBuiltInNavigation': 'Navigálás beépített térképpel', + 'navigationStartFailed': 'A navigáció indítása sikertelen', 'cannotPlayMusicListRetryLater': - 'Cannot play music list, please try again later', - 'cannotPlaySong': 'Cannot play song', - 'openMapError': 'Error opening map', - 'pleaseInstallAmapApp': 'Please install the Amap app first', - 'pleaseInstallBaiduMapApp': 'Please install the Baidu Maps app first', - 'appleMapStartFailed': 'Apple Maps failed to start', - 'appleMapUnavailable': 'Apple Maps unavailable', - 'openAppleMapError': 'Error opening Apple Maps', + 'A lejátszási lista nem indítható, próbálja később', + 'cannotPlaySong': 'A szám nem játszható le', + 'openMapError': 'Hiba a térkép megnyitásakor', + 'pleaseInstallAmapApp': 'Először telepítse az Amap alkalmazást', + 'pleaseInstallBaiduMapApp': 'Először telepítse a Baidu Maps alkalmazást', + 'appleMapStartFailed': 'Az Apple Térképek indítása sikertelen', + 'appleMapUnavailable': 'Az Apple Térképek nem érhető el', + 'openAppleMapError': 'Hiba az Apple Térképek megnyitásakor', // Agent模块 - 天气卡片 'weatherQuery': 'Időjárási körülmények lekérdezése:', @@ -1018,8 +1028,8 @@ const Map huHU = { "strongWind": "Erős szél", // 翻译模块 - 中间层 - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", + "pictureTranslation": "Képek fordítása", + "textTranslation": "Szöveg fordítása", // 翻译模块 - 主页 "translationHistory": "Fordítási előzmények", @@ -1029,33 +1039,33 @@ const Map huHU = { "phoneUser": "Telefon-felhasználó", "selectSourceLanguage": "Forrásnyelv kiválasztása", "selectTargetLanguage": "Célnyelv kiválasztása", - "me": "Me", - "counterPart": "Counterpart", + "me": "Én", + "counterPart": "Beszélgetőtárs", "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - "autoDetect": "Auto Detect", // 自动检测 + "Győződjön meg róla, hogy a Bluetooth headset csatlakozik a telefonhoz és hívásban van", + "autoDetect": "Automatikus felismerés", // 自动检测 // 翻译模块 - 文本翻译 - "languageDetectionFailed": "Language detection failed", + "languageDetectionFailed": "Nyelvfelismerés sikertelen", // 翻译模块 - 悬浮窗与权限 - 'disableFloatingWindow': 'Disable Floating Window', - 'enableFloatingWindow': 'Enable Floating Window', - 'permissionTip': 'Permission Tip', + 'disableFloatingWindow': 'Lebegő ablak letiltása', + 'enableFloatingWindow': 'Lebegő ablak engedélyezése', + 'permissionTip': 'Engedélyek tipp', 'micPermissionRequiredForRecording': - 'Microphone permission is required for recording', - 'deleteTranslationRecordError': 'Error deleting translation record: @error', - "translationFailed": "Translation failed", - "translating": "Translating", - "translate": "Translate", - "pleaseInputText": "Please input text", + 'A felvételhez mikrofonengedély szükséges', + 'deleteTranslationRecordError': 'Hiba a fordítási rekord törlésekor: @error', + "translationFailed": "Fordítás sikertelen", + "translating": "Fordítás", + "translate": "Fordítás", + "pleaseInputText": "Kérjük, adjon meg szöveget", "inputTextToTranslate": "Kérjük, adja meg a lefordítandó szöveget", - "textTooLong": "Text too long, max 5000 characters", + "textTooLong": "A szöveg túl hosszú, maximum 5000 karakter", // 翻译模块 - 历史记录 "noTranslationHistory": "Még nincsenek előzmények", - "historyRecords": "History Records", - "clearResults": "Clear Results", + "historyRecords": "Előzményrekordok", + "clearResults": "Eredmények törlése", "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.", @@ -1065,55 +1075,55 @@ const Map huHU = { "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", + "selectImageSource": "Képforrás kiválasztása", + "imagePreview": "Kép előnézete", + "translationResult": "Fordítás eredménye", + "recognitionResult": "Felismerés eredménye", + "translatedImagePreview": "Fordított kép előnézete", + "translatedImageLoadFailed": "Nem sikerült betölteni a fordított képet", + "pleaseSelectImage": "Kérjük, válasszon képet", + "imageLoadFailed": "A kép betöltése sikertelen", + "imageQuality": "Képminőség", + "maxSize": "Max. méret", + "close": "Bezárás", + "setImageQuality": "Képminőség beállítása", + "currentQuality": "Jelenlegi minőség: @value%", + "setMaxSize": "Max. méret beállítása", + "currentMaxSize": "Jelenlegi: @pxpx", + "waitingForAction": "Várakozás műveletre", + "pleaseSelectImageToStart": "Kérjük, válasszon képet az indításhoz", + "chooseImage": "Kép választása", + "openingCamera": "Kamera megnyitása...", + "openingPhotoAlbum": "Fotóalbum megnyitása...", + "cancelled": "Megszakítva", + "userCancelledSelection": "A felhasználó megszakította a kiválasztást", + "translatingImage": "Kép fordítása", + "callingImageTranslateService": "Képfordítási szolgáltatás hívása...", + "savingRecord": "Rekord mentése", + "savingTranslationResult": "Fordítási eredmény mentése...", + "translationCompleted": "Fordítás befejezve", + "allStepsCompleted": "Minden lépés kész", + "processingFailed": "Feldolgozás sikertelen", "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", + "A kép feldolgozása vagy a fordítás sikertelen. Próbálja újra.\nHiba: {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", + "emptyTranslationResult": "A képfordítási API üres eredményt adott", "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", + "Képfordítás sikertelen. Hálózati probléma vagy limit. Próbálja később", "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", + "Képfordítási API kivétel. Ellenőrizze a hálózatot és próbálja újra", + "permissionRequired": "Engedély szükséges", + "cameraPermissionRequired": "A fotózáshoz kameraengedély szükséges", "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", + "Képek kiválasztásához fotóalbum-engedély szükséges", + "translationDetails": "Fordítás részletei", + "originalImage": "Eredeti kép", + "sourceLanguage": "Forrásnyelv", + "targetLanguage": "Célnyelv", + "translationTime": "Fordítás ideje", + "shareInDevelopment": "A megosztás funkció fejlesztés alatt áll", // 翻译模块 - 录音文件 "translateAudioFiles": "Hangfájlok fordítása", @@ -1165,8 +1175,8 @@ const Map huHU = { 'deleteAccount': 'Fiók törlése', 'deleteAccountTips': '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?', + 'clean': 'Gyorsítótár törlése', + 'cleanTips': 'Biztosan törli a személyes gyorsítótárat?', 'networkConnectionFailed': 'Hálózati kapcsolat sikertelen, ellenőrizze a hálózati beállításokat és próbálja újra', 'serverTemporarilyUnavailable': @@ -1212,32 +1222,32 @@ const Map huHU = { 'A fiókszolgáltatás inicializálva', // AccountService 已初始化 // 权限模块 - 'meetingStoragePermission': 'Storage', + 'meetingStoragePermission': 'Tárhely', 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', + 'A hangfájlok kiválasztásához és feltöltéséhez tárhely-hozzáférésre van szükségünk.', 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', + 'Észleltük, hogy véglegesen letiltotta a tárhely engedélyt. A folytatáshoz nyissa meg az alkalmazás beállításait, és engedélyezze kézzel a tárhely-hozzáférést.', 'getPermissionStatusFailed': 'Az engedély állapotának lekérése sikertelen', 'communicationPermissions': 'Kommunikációs engedélyek', - 'bluetoothPermissions': 'Bluetooth Permissions', - 'notificationPermissions': 'Notification Permissions', - 'storagePermissions': 'Storage Permissions', - 'microphonePermissions': 'Microphone Permissions', - 'alarmPermissions': 'Alarm Permissions', + 'bluetoothPermissions': 'Bluetooth engedélyek', + 'notificationPermissions': 'Értesítési engedélyek', + 'storagePermissions': 'Tárhely engedélyek', + 'microphonePermissions': 'Mikrofon engedélyek', + 'alarmPermissions': 'Ébresztő engedélyek', 'calendarPermissions': 'Naptár engedélyek', 'locationPermissions': 'Helymeghatározási engedélyek', 'phone': 'Telefon', 'sms': 'SMS', - 'contacts': 'Contacts', - 'notification': 'Notification', - 'alarm': 'Alarm', + 'contacts': 'Névjegyek', + 'notification': 'Értesítések', + 'alarm': 'Ébresztő', 'calendarWrite': 'Naptárba írás', 'calendarFullAccess': 'Teljes naptár-hozzáférés', 'locationInfo': 'Helyinformáció', 'phonePermissionDesc': 'A hívás funkcióhoz használatos', 'smsPermissionDesc': 'Az SMS küldési funkcióhoz használatos', 'alarmPermissionDesc': - 'Used to set exact alarms to ensure reminders trigger on time', + 'Pontos ébresztések beállításához, hogy az emlékeztetők időben működjenek', 'calendarWritePermissionDesc': 'Naptáresemények és emlékeztetők létrehozásához használatos', 'calendarFullAccessPermissionDesc': @@ -1255,72 +1265,74 @@ const Map huHU = { 'phonePermissionDetailDesc': 'A hívás funkcióhoz telefonengedély szükséges', 'smsPermissionDetailDesc': 'Az SMS küldési funkcióhoz SMS engedély szükséges', 'alarmPermissionDetailDesc': - 'This permission is required to set exact alarms and ensure reminders trigger on time', + 'Ez az engedély szükséges a pontos ébresztések beállításához és ahhoz, hogy az emlékeztetők időben működjenek', 'calendarWritePermissionDetailDesc': 'A naptáresemények létrehozásához naptárírási engedély szükséges', 'calendarFullAccessPermissionDetailDesc': 'A naptáresemények kezeléséhez teljes naptárengedély szükséges', 'locationPermissionDetailDesc': 'A helyinformációk lekéréséhez helymeghatározási engedély szükséges', - 'contactsPermissionDesc': 'Used for accessing contact information', + 'contactsPermissionDesc': 'A névjegyinformációk eléréséhez használatos', 'contactsPermissionDetailDesc': - 'Phone call and SMS functionality requires contacts permission to select contacts', + 'A hívás és SMS funkcióhoz névjegyengedély szükséges a névjegyek kiválasztásához', 'bluetoothPermissionDesc': - 'Used for connecting and managing Bluetooth devices', + 'Bluetooth eszközök csatlakoztatásához és kezeléséhez használatos', 'bluetoothPermissionDetailDesc': - 'Connecting to Bluetooth headphones and other devices requires Bluetooth permission', - 'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices', + 'Bluetooth fülhallgatók és más eszközök csatlakoztatásához Bluetooth engedély szükséges', + 'bluetoothScanPermissionDesc': + 'Közeli Bluetooth eszközök kereséséhez használatos', 'bluetoothScanPermissionDetailDesc': - 'Scanning for nearby Bluetooth devices requires Bluetooth scan permission', - 'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices', + 'A közeli Bluetooth eszközök kereséséhez Bluetooth-keresési engedély szükséges', + 'bluetoothConnectPermissionDesc': + 'Bluetooth eszközökhöz való csatlakozáshoz használatos', 'bluetoothConnectPermissionDetailDesc': - 'Connecting to Bluetooth devices requires Bluetooth connect permission', - 'notificationPermissionDesc': 'Used for sending notification messages', + 'Bluetooth eszközökhöz való csatlakozáshoz Bluetooth csatlakozási engedély szükséges', + 'notificationPermissionDesc': 'Értesítések küldéséhez használatos', 'notificationPermissionDetailDesc': - 'App needs notification permission to send you important alerts and messages', + 'Az alkalmazásnak értesítési engedélyre van szüksége, hogy fontos riasztásokat és üzeneteket küldhessen', 'appNeedsPermissionForFullFunction': 'Az alkalmazásnak szüksége van erre az engedélyre a teljes funkcionalitáshoz', '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', + 'bluetoothScan': 'Bluetooth keresés', + 'bluetoothConnect': 'Bluetooth csatlakozás', 'bluetoothScanExplanation': - 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', + 'Az alkalmazásnak Bluetooth-keresési engedély kell a közeli Bluetooth eszközök kereséséhez.', 'bluetoothConnectExplanation': - 'The app needs Bluetooth connect permission to connect to Bluetooth devices.', + 'Az alkalmazásnak Bluetooth csatlakozási engedély kell a Bluetooth eszközökhöz való csatlakozáshoz.', 'locationForBluetoothExplanation': - 'The app needs location permission to scan Bluetooth devices.', + 'Az alkalmazásnak helyengedély kell a Bluetooth eszközök kereséséhez.', 'bluetoothScanPermanentDenial': - 'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.', + 'A Bluetooth-keresési engedély véglegesen le lett tiltva, engedélyezze kézzel a beállításokban.', 'bluetoothConnectPermanentDenial': - 'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.', + 'A Bluetooth csatlakozási engedély véglegesen le lett tiltva, engedélyezze kézzel a beállításokban.', 'locationPermanentDenial': - 'Location permission has been permanently denied, please go to settings to enable it manually.', - 'notificationPermission': 'Notification', - 'locationPermission': 'Location', + 'A helyengedély véglegesen le lett tiltva, engedélyezze kézzel a beállításokban.', + 'notificationPermission': 'Értesítések', + 'locationPermission': 'Hely', 'notificationPermissionExplanation': - 'Notification permission is required to display music playback status.', + 'A zenelejátszás állapotának megjelenítéséhez értesítési engedély szükséges.', 'locationPermissionExplanation': - 'Location permission is required to get current location.', + 'Az aktuális hely meghatározásához helyengedély szükséges.', 'notificationPermissionPermanentDenial': - 'You have permanently denied notification permission, please go to settings to enable it.', + 'Véglegesen letiltotta az értesítési engedélyt, engedélyezze a beállításokban.', 'locationPermissionPermanentDenial': - 'You have permanently denied location permission, please go to settings to enable it.', - 'storagePermission': 'Storage', + 'Véglegesen letiltotta a helyengedélyt, engedélyezze a beállításokban.', + 'storagePermission': 'Tárhely', 'microphonePermissionExplanation': - 'We need microphone permission to record audio content.', + 'A hang rögzítéséhez mikrofonengedélyre van szükségünk.', 'storagePermissionExplanation': - 'We need storage permission so you can select and upload audio files.', + 'Tárhelyengedélyre van szükségünk, hogy kiválaszthassa és feltölthesse a hangfájlokat.', 'microphonePermissionPermanentDenial': - 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', + 'A mikrofonengedély véglegesen le lett tiltva. A folytatáshoz nyissa meg az alkalmazás beállításait, és engedélyezze kézzel a mikrofonhoz való hozzáférést.', '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', + 'A tárhelyengedély véglegesen le lett tiltva. A folytatáshoz nyissa meg az alkalmazás beállításait, és engedélyezze kézzel a tárhely-hozzáférést.', + 'permissionUtilNeed': 'Szükséges ', + 'permissionUtilPermission': ' engedély', + 'permissionUtilRestricted': ' engedély korlátozva', 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'Ez a funkció nem elérhető vagy korlátozott ezen az eszközön, ellenőrizze az eszköz beállításait vagy a rendszerkorlátozásokat', 'permissionUtilConfirm': 'OK', // 原生前台服务通知(Android) @@ -1411,27 +1423,27 @@ const Map huHU = { 'bleConnectionFailed': 'A BLE kapcsolat sikertelen', 'deviceAuthorizationFailedCheckCode': 'Az eszközengedélyezés sikertelen, ellenőrizze az engedélyezési kódot', - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + 'bluetoothGuideTitle': 'Bluetooth kézi bekapcsolása szükséges', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'Kövesse az alábbi lépéseket:', // 请按照以下步骤操作: 'bluetoothGuideStep1': - 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'Kapcsolja be a Bluetooth-t: Beállítások → Bluetooth → Bekapcsolás', // 开启蓝牙:设置 → 蓝牙 → 开启 'bluetoothGuideStep2': - 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'Eszköz csatlakoztatása: keresse meg az eszközt a „Saját eszközök” listában, majd koppintson a csatlakozáshoz', // 连接设备:在"我的设备"中找到您的设备并点击连接 'bluetoothGuideStep3': - 'Return to app to continue pairing process', // 返回应用继续配对流程 + 'Térjen vissza az alkalmazásba a párosítás folytatásához', // 返回应用继续配对流程 'bluetoothGuideTip': - 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': 'I Know', // 我知道了 + 'Tipp: A Vezérlőközpontban a Bluetooth ikon hosszan nyomásával gyorsan elérheti a Bluetooth beállításokat', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + 'iKnow': 'Értem', // 我知道了 // 配对模块 - 绑定奖励 - "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:", + "firstBindRewardTitle": "Üdvözlő jutalom", + "firstBindRewardDesc": "Megkapta a párosítási jutalmat.", + "vipLevelLabel": "VIP szint:", + "expiryLabel": "Lejárat:", + "notActivated": "Nincs aktiválva", + "aiChatCreditsLabel": "AI chat kreditek:", + "translationCreditsLabel": "Fordítási kreditek:", + "meetingCreditsLabel": "Megbeszélési kreditek:", "ok": "OK", // 用户反馈模块 @@ -1463,13 +1475,14 @@ const Map huHU = { "connectionFailed": "A kapcsolat sikertelen", "retryConnection": "Kapcsolat újrapróbálása", "ota_updateNow": "Frissítés most", - "otaVersionInfoFailed": "Failed to get version info. Please try again later.", + "otaVersionInfoFailed": + "Nem sikerült lekérni a verzió információit. Próbálja meg később.", "otaDeviceInfoUnavailable": - "Unable to get device info. Please check the connection and retry.", + "Nem sikerült lekérni az eszközinformációkat. Ellenőrizze a kapcsolatot és próbálja újra.", "otaProductInfoUnavailable": - "Unable to identify the device. Please reconnect and retry.", + "Nem sikerült azonosítani az eszközt. Csatlakoztassa újra és próbálja újra.", "otaFirmwareVersionInvalid": - "Firmware version is abnormal. Please reconnect and retry.", + "A firmware verzió rendellenes. Csatlakoztassa újra és próbálja újra.", "keepConnectedDontClose": "Tartsa csatlakoztatva az eszközt, ne zárja be az alkalmazást", "doNotDisconnect": "Ne szakítsa meg a kapcsolatot", @@ -1479,57 +1492,59 @@ const Map huHU = { "Vegye ki mindkét fülhallgatót, és győződjön meg róla, hogy mindkettő akkumulátora 20% felett van", // OTA升级模块 - 弹窗与对话框 - 'otaNewVersionFoundWithVersion': 'New version @version found', - 'otaConfirmUpdateNow': 'Update now?', - 'otaUpdate': 'Update', - 'otaUpgradeSuccess': 'Upgrade Successful', + 'otaNewVersionFoundWithVersion': 'Új verzió található: @version', + 'otaConfirmUpdateNow': 'Frissítsünk most?', + 'otaUpdate': 'Frissítés', + 'otaUpgradeSuccess': 'Frissítés sikeres', 'otaUpgradeCompleteRepair': - 'Firmware upgrade complete!\n\nDevice needs to be re-paired to work properly. Go to pairing page now?', - 'otaPairLater': 'Pair Later', - 'otaPairNow': 'Pair Now', + 'A firmware frissítése befejeződött!\n\nA megfelelő működéshez az eszközt újra párosítani kell. Megnyitja most a párosítási oldalt?', + 'otaPairLater': 'Párosítás később', + 'otaPairNow': 'Párosítás most', 'okConfirm': 'OK', // OTA升级模块 - 设备检查 - 'otaBleCheckErrorWithError': 'Error checking BLE connection: @error', - 'otaBleNotConnected': 'BLE Device Not Connected', + 'otaBleCheckErrorWithError': 'Hiba a BLE kapcsolat ellenőrzésekor: @error', + 'otaBleNotConnected': 'A BLE eszköz nincs csatlakoztatva', 'otaBleNeedConnection': - 'Firmware upgrade requires BLE device connection\nPlease ensure device is properly connected and try again', - 'otaDeviceInfoUnavailableTitle': 'Device Info Unavailable', + 'A firmware frissítéséhez BLE kapcsolat szükséges\nGyőződjön meg róla, hogy az eszköz megfelelően csatlakozik, majd próbálja újra', + 'otaDeviceInfoUnavailableTitle': 'Eszközinformáció nem érhető el', 'otaCannotGetDeviceInfo': - 'Cannot get device info\nPlease reconnect device or try again later', - 'otaBleCheckFailed': 'BLE Connection Check Failed', + 'Nem sikerült lekérni az eszközinformációkat\nCsatlakoztassa újra az eszközt vagy próbálja később', + 'otaBleCheckFailed': 'A BLE kapcsolat ellenőrzése sikertelen', 'otaCannotGetDeviceInfoCheckConnection': - 'Cannot get device info, please check device connection', + 'Nem sikerült lekérni az eszközinformációkat, ellenőrizze a kapcsolatot', 'otaCannotGetProductInfoWithName': - 'Cannot get product info, device name: @deviceName', - 'otaCannotGetBatteryInfo': 'Cannot get valid battery info', - 'otaLowBattery': 'Low Battery', + 'Nem sikerült lekérni a termékinformációkat, eszköznév: @deviceName', + 'otaCannotGetBatteryInfo': + 'Nem sikerült érvényes akkumulátor-információt lekérni', + 'otaLowBattery': 'Alacsony töltöttség', 'otaSingleBatteryLow': - 'Device battery too low for firmware upgrade\nRequirement: battery must be above 20%\nCurrent: @ear @battery%\nPlease charge and try again', + 'Az akkumulátor töltöttsége túl alacsony a firmware frissítéséhez\nKövetelmény: 20% felett\nJelenlegi: @ear @battery%\nTöltse fel és próbálja újra', 'otaDoubleBatteryLow': - 'Device battery too low for firmware upgrade\nRequirement: both earbuds must be above 20%\nCurrent: Left @left%, Right @right%\nPlease charge and try again', - 'otaBatteryCheckFailed': 'Battery Check Failed', + 'Az akkumulátor töltöttsége túl alacsony a firmware frissítéséhez\nKövetelmény: mindkét fülhallgató 20% felett\nJelenlegi: Bal @left%, Jobb @right%\nTöltse fel és próbálja újra', + 'otaBatteryCheckFailed': 'Akkumulátor ellenőrzése sikertelen', // OTA升级模块 - 升级状态 'otaDefaultUpdateDesc': - 'This update includes performance optimizations and bug fixes.', - 'otaGetLatestVersionFailed': 'Failed to get latest version info', - 'otaGetVersionInfoFailed': 'Failed to get version info', - 'otaCheckingDeviceStatus': 'Checking device status...', + 'Ez a frissítés teljesítményjavításokat és hibajavításokat tartalmaz.', + 'otaGetLatestVersionFailed': + 'Nem sikerült lekérni a legújabb verzió információit', + 'otaGetVersionInfoFailed': 'Nem sikerült lekérni a verzió információit', + 'otaCheckingDeviceStatus': 'Eszköz állapotának ellenőrzése...', 'otaDownloadFailedCheckNetwork': - 'Download failed, please check network connection', - 'otaDownloadFailed': 'Download Failed', - 'otaPreparingConnection': 'Preparing device connection...', - 'otaConnectingDevice': 'Connecting to device...', + 'Letöltés sikertelen, ellenőrizze a hálózati kapcsolatot', + 'otaDownloadFailed': 'Letöltés sikertelen', + 'otaPreparingConnection': 'Eszközkapcsolat előkészítése...', + 'otaConnectingDevice': 'Csatlakozás az eszközhöz...', 'otaUpgradeStarted': 'OTA upgrade started...', - 'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%', - 'otaUpgradeSuccessComplete': 'Upgrade completed successfully', - 'otaUpgradeFailedWithCode': 'Upgrade failed, error code: @code', - 'otaUpgradeFailedTitle': 'Upgrade Failed', + 'otaUpgradeProgressWithPercent': 'Frissítés állapota: @percent%', + 'otaUpgradeSuccessComplete': 'A frissítés sikeresen befejeződött', + 'otaUpgradeFailedWithCode': 'Frissítés sikertelen, hibakód: @code', + 'otaUpgradeFailedTitle': 'Frissítés sikertelen', 'otaUpgradeFailedDesc': - 'Please check device connection or update package, error code: @code', - 'otaDeviceDisconnected': 'Device disconnected', - 'otaDeviceConnected': 'Device connected', + 'Ellenőrizze az eszközkapcsolatot vagy a frissítőcsomagot, hibakód: @code', + 'otaDeviceDisconnected': 'Az eszköz lecsatlakozott', + 'otaDeviceConnected': 'Az eszköz csatlakoztatva', // 音乐模块 "noMusic": "Nincs zene", // 暂无音乐 diff --git a/lib/core/translations/language/id_id.dart b/lib/core/translations/language/id_id.dart index 07e111c38..f49d29d2e 100644 --- a/lib/core/translations/language/id_id.dart +++ b/lib/core/translations/language/id_id.dart @@ -1,3 +1,4 @@ +//印尼-印尼语 const Map idID = { // 通用 'continue': 'Lanjutkan', @@ -855,21 +856,21 @@ const Map idID = { "loadFailedClickRetry": "Gagal memuat, klik untuk mencoba lagi", "swipeUpForMore": "Geser ke atas untuk lebih banyak", "callingTool": "Saya sedang membantu Anda, harap tunggu!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 + "voice_interrupt": "Interupsi", // 语音打断 '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", // 今日天气 - "presetNews": "Today's news", // 今日新闻 - "presetFood": "Nearby food", // 美食 - "playSomeMusic": "Play some popular music", // 播放一些流行音乐 + "presetMusic": "Putar musik", // 来点音乐 + "presetNavigation": "Navigasi ke", // 导航 + "presetWeather": "Cuaca hari ini", // 今日天气 + "presetNews": "Berita hari ini", // 今日新闻 + "presetFood": "Makanan di dekat sini", // 美食 + "playSomeMusic": "Putar musik populer", // 播放一些流行音乐 "navigationTo": "Tolong bantu saya menavigasi ke", // 导航到 - "todayWeather": "How's the weather today?", // 今日天气 - "todayNews": "What's the news today?", // 今日新闻 - "nearbyFood": "What delicious food is nearby?", // 美食 + "todayWeather": "Bagaimana cuaca hari ini?", // 今日天气 + "todayNews": "Apa berita hari ini?", // 今日新闻 + "nearbyFood": "Makanan enak apa yang ada di dekat sini?", // 美食 // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Halo! Saya **Lily**, saya bisa membantu Anda:\n\n' @@ -1419,14 +1420,14 @@ const Map idID = { 'iKnow': 'Saya Mengerti', // 我知道了 // 配对模块 - 绑定奖励 - "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:", + "firstBindRewardTitle": "Pembelian Terlebih Dahulu", + "firstBindRewardDesc": "Anda telah menerima premi binding.", + "vipLevelLabel": "Level VIP:", + "expiryLabel": "Kedaluwarsa:", + "notActivated": "Belum diaktifkan", + "aiChatCreditsLabel": "Kredit Chat AI:", + "translationCreditsLabel": "Kredit Terjemahan:", + "meetingCreditsLabel": "Kredit Meeting:", "ok": "OK", // 用户反馈模块 diff --git a/lib/core/translations/language/is_is.dart b/lib/core/translations/language/is_is.dart index 0a993a6f9..8ae57f8f6 100644 --- a/lib/core/translations/language/is_is.dart +++ b/lib/core/translations/language/is_is.dart @@ -1,5 +1,5 @@ +// 冰岛-冰岛语 const Map isIS = { - // 通用 'continue': 'Halda áfram', 'confirm': 'Staðfesta', @@ -19,11 +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", + "justNow": "Núna", + "minutesAgo": "@minutes mínútur síðan", + "yesterday": "I dag", + "daysAgo": "@days dagir síðan", + "hoursAgo": "@hours tímar síðan", // 启动页 "slogan": "Að tengja heiminn, handan hljóðsins", @@ -171,12 +171,15 @@ const Map isIS = { // 蓝牙扫描模块 'bleInitFailedWithError': 'Bluetooth ræsing mistókst: @error', - 'needBluetoothAndLocationPermission': 'Bluetooth- og staðsetningarheimildir þarf til að leita að tækjum', + 'needBluetoothAndLocationPermission': + 'Bluetooth- og staðsetningarheimildir þarf til að leita að tækjum', 'permissionRequestFailedWithError': 'Heimildarbeiðni mistókst: @error', 'needPermission': 'Heimild nauðsynleg', - 'blePermissionDialogContent': 'Forritið þarf Bluetooth- og staðsetningarheimildir til að leita að tækjum. Virkjaðu þær í Stillingum.', + 'blePermissionDialogContent': + 'Forritið þarf Bluetooth- og staðsetningarheimildir til að leita að tækjum. Virkjaðu þær í Stillingum.', 'needEnableBluetooth': 'Virkja Bluetooth', - 'enableBluetoothDialogContent': 'Virkjaðu Bluetooth til að leita að og tengja tæki.', + 'enableBluetoothDialogContent': + 'Virkjaðu Bluetooth til að leita að og tengja tæki.', 'bleScanFailedWithError': 'Leit mistókst: @error', 'bleConnectionSuccess': 'Tenging tókst', 'bleConnectedToDevice': 'Tengt við @device', @@ -214,115 +217,120 @@ const Map isIS = { "scene": "Atburðarás", // 用量统计模块 - "aiChat": "AI Chat", - "translationStats": "Translation Statistics", - "meetingStats": "Meeting Statistics", - "today": "Today", - "thisWeek": "This Week", - "thisMonth": "This Month", - "history": "History", - "currentSessionStats": "Current Session Stats", - "translationCount": "Translation Count", - "sessionDuration": "Session Duration", - "characters": "Characters", - "recordingDuration": "Recording Duration", - "totalApiCalls": "Total API Calls", - "sessionCount": "Session Count", - "totalCharacters": "Total Characters", - "apiCallStats": "API Call Stats", - "translationApi": "Translation API", + "aiChat": "AI-spjall", + "translationStats": "Þýðingartölfræði", + "meetingStats": "Fundatölfræði", + "today": "Í dag", + "thisWeek": "Þessi vika", + "thisMonth": "Þessi mánuður", + "history": "Saga", + "currentSessionStats": "Tölfræði núverandi lotu", + "translationCount": "Fjöldi þýðinga", + "sessionDuration": "Lengd lotu", + "characters": "Stafir", + "recordingDuration": "Upptökulengd", + "totalApiCalls": "Heildarfjöldi API-kalla", + "sessionCount": "Fjöldi lota", + "totalCharacters": "Heildarfjöldi stafa", + "apiCallStats": "Tölfræði API-kalla", + "translationApi": "Þýðingar-API", "asr": "ASR", "tts": "TTS", - "dataVolumeStats": "Data Volume Stats", - "sourceTextCharacters": "Source Text Characters", - "ttsTextCharacters": "TTS Text Characters", - "effectiveAudioDuration": "Effective Audio Duration", - "totalSessionDuration": "Total Session Duration", - "costStats": "Cost Stats", - "estimatedCost": "Estimated Cost", - "dailyCostThreshold": "Daily Cost Threshold", - "monthlyCostThreshold": "Monthly Cost Threshold", - "usageBehaviorStats": "Usage Behavior Stats", - "mostUsedLanguagePair": "Most-used language pair", - "mostUsedMode": "Most-used mode", - "asrApiCalls": "ASR Calls", - "totalAudioDuration": "Total Audio Duration", - "audioFileSize": "Audio File Size", - "transcriptBytes": "Transcript Bytes", - "loadFailed": "Load Failed", + "dataVolumeStats": "Tölfræði gagnamagns", + "sourceTextCharacters": "Stafir í frumtexta", + "ttsTextCharacters": "Stafir í TTS-texta", + "effectiveAudioDuration": "Raunveruleg hljóðlengd", + "totalSessionDuration": "Heildarlengd lota", + "costStats": "Kostnaðartölfræði", + "estimatedCost": "Áætlaður kostnaður", + "dailyCostThreshold": "Daglegt kostnaðarþak", + "monthlyCostThreshold": "Mánaðarlegt kostnaðarþak", + "usageBehaviorStats": "Tölfræði notkunar", + "mostUsedLanguagePair": "Algengasta tungumálaparið", + "mostUsedMode": "Algengasti hamurinn", + "asrApiCalls": "ASR-köll", + "totalAudioDuration": "Heildarhljóðlengd", + "audioFileSize": "Stærð hljóðskrár", + "transcriptBytes": "Bæti í uppskrift", + "loadFailed": "Hleðsla mistókst", "statsLoadFailedTryLater": - "Statistics failed to load. Please try again later.", + "Tókst ekki að hlaða tölfræði. Reyndu aftur síðar.", "cleanupComplete": "Cleanup Complete", "cleanedOldData": "Cleaned data older than 90 days", "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", // 商品模块 - 通用 - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - '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", + 'availablePackages': 'Tiltækir pakkar', + 'remainingQuota': 'Eftirstandandi kvóti', + 'totalQuota': 'Heildarkvóti', + 'remaining': 'Eftir', + 'featureDescription': 'Lýsing á eiginleika', + '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": "Ónóg stig", "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', + 'Ónóg inneign, farðu á viðeigandi áfyllingarsíðu til að fylla á.', + "recharge": 'Fara í áfyllingu', "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + 'AI-aðild er útrunnin, farðu á áfyllingarsíðu aðildar til að endurnýja.', // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', @@ -350,37 +358,36 @@ const Map isIS = { 'templatedMessagesAndScheduleReminders': 'Template messages and schedule reminders', 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', + 'Eiginleikar fara eftir heimildum tækis, framboði þjónustu og nettengingu.', // 商品模块 - 翻译商品页 'realtimeTranscription': 'Real-time Transcription', 'sceneLexicon': 'Scenario Glossary', 'subtitleDisplay': 'Subtitles', 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'Rauntíma samtímtúlkun og textaþýðing með lágri töf í rödd.', 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', + 'translateZhEn': 'Kínversku-ensku þýðing', 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', + 'multiLangTextTranslation': 'Fjöltyng textaþýðing', '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.', + 'transDisclaimer': 'Þýðing fer eftir hljóðnema, nettöf og umhverfishávaða.', // 商品模块 - 会议商品页 - 'meetingRecording': 'Meeting Recording', + 'meetingRecording': 'Fundarupptaka', 'transcriptionAndSummary': 'Transcription & Summary', 'keywordSearch': 'Keyword Search', 'collaborationSharing': 'Collaboration & Sharing', 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'Hljóðupptaka, uppskrift, leitarorðaleit og sjálfvirkt yfirlit til að auka skilvirkni funda.', 'meetingHeaderDesc2': 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingAutoRecording': 'Sjálfvirk upptaka og skipting', 'meetingSpeakerTagging': 'Speaker labeling', 'meetingLongAudioTranscription': 'Long audio transcription', 'meetingKeyPointSummary': 'Key point extraction', @@ -389,7 +396,7 @@ const Map isIS = { 'meetingExportSummary': 'Export minutes', 'meetingMultiPlatformShare': 'Share across platforms', 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', + 'Notaðu í hljóðlátu umhverfi; afköst fara eftir hljóðnema og neti.', // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', @@ -403,7 +410,7 @@ const Map isIS = { 'longTermDiscountPlan': 'Long-term discount plan', 'generalPrivileges': 'General privileges', 'earlyAccessNewFeatures': 'Early access to new features', - 'crossDeviceSync': 'Cross-device sync', + 'crossDeviceSync': 'Samstilling milli tækja', 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', @@ -414,18 +421,18 @@ const Map isIS = { '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', + 'trans_001_name': 'Þýðing Grunn 100', + 'trans_002_name': 'Þýðing Grunn 500', + 'trans_003_name': 'Þýðing Grunn 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).', + 'meet_001_desc': 'Inniheldur 100 fundarupptökur/uppskriftir.', + 'meet_002_desc': 'Inniheldur 500 fundarupptökur/uppskriftir.', + 'meet_003_desc': 'Inniheldur 1000 fundarupptökur/uppskriftir.', + 'trans_001_desc': 'Inniheldur 100 þýðingar (rödd/texti).', + 'trans_002_desc': 'Inniheldur 500 þýðingar (rödd/texti).', + 'trans_003_desc': 'Inniheldur 1000 þýðingar (rödd/texti).', // 商品模块 - 页脚 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', @@ -481,37 +488,37 @@ const Map isIS = { 'recordingDetails': 'Upptökuupplýsingar', 'aiSummary': 'Gervigreindaryfirlit', 'meetingTranscript': 'Fundarritun', - 'files': 'Files', - 'mine': 'Mine', - 'connect': 'Connect', - 'allFiles': 'All Files', - 'searchInAllFiles': 'Search in all files', - 'from': 'From', - 'sortBy': 'Sort by', - 'creationTime': 'Creation Time', - 'bluetoothConnection': 'Bluetooth Connection', - 'meetingReconnect': 'Reconnect', - 'searching': 'Searching...', - 'searchFailed': 'Search failed, please check if Bluetooth is enabled', - 'aiPenNotFound': 'AI PEN device not found', - 'connectedToAiPen': 'Connected to AI PEN device', - 'checkingNewFiles': 'Checking for new files to import', + 'files': 'Skrár', + 'mine': 'Mínar', + 'connect': 'Tengjast', + 'allFiles': 'Allar skrár', + 'searchInAllFiles': 'Leita í öllum skrám', + 'from': 'Frá', + 'sortBy': 'Raða eftir', + 'creationTime': 'Stofnunartími', + 'bluetoothConnection': 'Bluetooth-tenging', + 'meetingReconnect': 'Tengjast aftur', + 'searching': 'Leita...', + 'searchFailed': 'Leit mistókst, athugaðu hvort Bluetooth sé virkt', + 'aiPenNotFound': 'AI PEN tæki fannst ekki', + 'connectedToAiPen': 'Tengt við AI PEN tæki', + 'checkingNewFiles': 'Athuga nýjar skrár til að flytja inn', 'startingWifi': 'Starting Wi-Fi...', 'newFilesDetected': 'New files detected, preparing to import', 'noNewFiles': 'No new files to import', - 'connectingWifi': 'Connecting to Wi-Fi...', - 'wifiConnected': 'Wi-Fi connected successfully', - 'downloadingFiles': 'Downloading files...', - 'downloadingFileProgress': 'Total {total} files, downloading file {current}', - 'downloadComplete': 'Download complete', + 'connectingWifi': 'Tengist Wi‑Fi...', + 'wifiConnected': 'Wi‑Fi tenging tókst', + 'downloadingFiles': 'Sæki skrár...', + 'downloadingFileProgress': 'Samtals {total} skrár, sæki skrá {current}', + 'downloadComplete': 'Niðurhali lokið', 'downloadCompleteInfo': - 'Download complete, {count} files in total, returning automatically in 2 seconds', + 'Niðurhali lokið, samtals {count} skrár. Fer sjálfkrafa til baka eftir 2 sekúndur', // Meeting模块 - 录音功能 - 'startRecording': 'Start Recording', - 'liveRecording': 'Live Recording', - 'audioVideoRecording': 'Audio/Video Recording', - 'callRecording': 'Call Recording', + 'startRecording': 'Hefja upptöku', + 'liveRecording': 'Bein upptaka', + 'audioVideoRecording': 'Hljóð-/myndupptaka', + 'callRecording': 'Símtalaupptaka', 'importAudio': 'Import Audio', 'meetingRecordExitTitle': 'Hætta í upptöku', // 退出录音 'meetingRecordExitMessage': @@ -560,54 +567,55 @@ const Map isIS = { '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', + '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', + 'recordingLanguage': 'Upptökutungumál', '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.', + 'AI-greining finnur lykilatburði í upptökum, svo þú getir valið mikilvæga atburði fyrir AI-úrvinnslu.', // 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', + 'importingLocalRecordings': 'Flyt inn staðbundnar upptökur...', + 'importFailed': 'Innflutningur skráar mistókst: {filePath}, villa: {error}', + 'importSuccess': 'Tókst að flytja inn {count} staðbundnar upptökur', + 'importError': 'Innflutningur mistókst: {error}', + 'pleaseSelectAudioFile': 'Veldu hljóðskrá', 'shareAudio': 'Share Meeting Audio', 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + 'shareFailed': 'Deiling mistókst: {error}', + 'fileProcessingFailed': 'Skráarvinnsla mistókst: {filePath}, villa: {error}', // Meeting模块 - 思维导图 - 'saveMindMap': 'Vista hugarkort', - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', + 'saveMindMap': 'Vista hugarkort', + 'shareMindMap': 'Deila hugarkorti', + 'shareSuccess': 'Deiling tókst', // 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', + 'askAI': 'Spyrja AI...', + 'askAIPrompt': 'Hvernig get ég hjálpað þér í dag?', + 'continueAsk': 'Halda áfram að spyrja', + 'todoList': 'Verkefnalisti', + 'extractConclusion': 'Draga út niðurstöðu', + 'generateKeyIndicators': 'Búa til lykilmælikvarða', // Meeting模块 - 分享与导出 'shareLink': 'Share Link', @@ -619,42 +627,42 @@ const Map isIS = { 'exportSummary': 'Export Summary', 'exportAs': 'Export As', 'exportingPDF': 'Exporting PDF...', - 'export': 'Flytja út', + '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', + 'nameCurrentSpeaker': 'Nefna núverandi ræðumann', + 'recentlyUsedNames': 'Nýlega notuð nöfn', + 'applyToCurrentParagraph': 'Beita á núverandi málsgrein', + 'totalTime': 'Heildartími', 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', + 'Ræðumenn í samantekt verða uppfærðir sjálfkrafa', // Meeting模块 - 云端同步 - 'syncToCloud': 'Sync to Cloud', + 'syncToCloud': 'Samstilla í skýið', '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', + 'Samstillir upptökur sjálfkrafa í skýið; þú getur spilað, stjórnað og deilt upptökum í hvaða VOITRANS appi sem er eða VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Samstilla VOITRANS app', + 'transcriptionRecord': 'Uppskriftarfærsla', // Meeting模块 - 我的页面 - 'transcriptionRecords': 'Transcription Records', - 'templateCommunity': 'Template Community', - 'comingSoon': 'Coming Soon', - 'integration': 'Integration', + 'transcriptionRecords': 'Uppskriftarfærslur', + 'templateCommunity': 'Sniðmátssamfélag', + 'comingSoon': 'Væntanlegt', + 'integration': 'Samþætting', 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', - 'enabled': 'Enabled', - 'disabled': 'Disabled', - 'myVoitransDevice': 'My VOITRANS Device', + 'enabled': 'Virkt', + 'disabled': 'Óvirkt', + 'myVoitransDevice': 'Mitt VOITRANS tæki', 'helpAndFeedback': 'Help & Feedback', 'aboutVoitrans': 'About VOITRANS', 'meetingDays': 'Days', 'meetingHours': 'Hours', 'voitransAiMember': 'Voitrans AI Member', 'unlockStarterMember': 'Unlock Starter Member', - 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', + 'bindDeviceToActivate': 'Tengdu Voitrans tæki til að virkja Starter-aðild', 'unlockNow': 'Unlock Now', // Meeting模块 - 会员与升级 @@ -678,7 +686,7 @@ const Map isIS = { 'customTemplateDesc': 'You can customize summary prompts according to your needs and use them to generate the required summaries.', 'askAiDesc': - 'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.', + 'Dregur á skynsamlegan hátt dýpri upplýsingar úr upptökum og býr til gagnatöflur, lykilniðurstöður umræðu, verkefnalista, skýrslupósta og annað sniðað efni með einum smelli.', 'visualMindMapDesc': 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', 'templateCommunityDesc': @@ -686,13 +694,13 @@ const Map isIS = { 'speakerIdentificationDesc': 'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.', 'privateCloudSyncDesc': - 'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.', + 'Upptökur og uppskriftir verða geymdar örugglega á sértækum skýjaþjónum, með fullri dulkóðun við upp- og niðurhal til að tryggja persónuvernd og öryggi.', '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.', + 'Flyttu út hljóðupptökur, uppskriftartexta og samantektir í ýmsum sniðum (TXT, PDF, JPEG) eftir þörfum.', 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -722,25 +730,25 @@ const Map isIS = { 'purchase': 'Purchase', // Meeting模块 - 录音语言 - 'recordLanguage': 'Recording Language', + 'recordLanguage': 'Upptökutungumál', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', // 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', + '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', + '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", @@ -749,10 +757,10 @@ const Map isIS = { "translationRecharge": "Þýðingsponsoring", "meetingAssistantRecharge": "Fundarasistentsponsoring", "cloudSync": "Synchronisering með skýjaraddþjónustu", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "memberService": "Meðlimþjónusta", + "bindRewardTitle": "Verðlaun", "bindRewardSimpleDesc": - "First bind device reward has been issued. Tap OK to close.", + "Verðlaun fyrir fyrstu tengingu tækis hafa verið afhent. Pikkaðu á OK til að loka.", "joinDevice": "Tengt tæki:", "accountId": "Auðkenni reiknings:", "systemSetting": "Kerfisstillingar", @@ -802,20 +810,20 @@ const Map isIS = { "loading": "Hleður...", // 设备管理模块 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", + "deviceTypeUnknown": "Óþekkt tæki", + "deviceTypeClassicBluetoothHeadset": "Klassísk Bluetooth heyrnartól", + "deviceTypeBleBluetoothHeadset": "BLE Bluetooth heyrnartól", + "deviceTypeSmartVoiceRecorder": "Snjall raddupptökutæki", "deviceTypeSmartEye": "Smart Glasses", "unbind": "Losa bindingu", - "noDevicesBound": "No devices bound yet", - "pleaseBindDeviceFirst": "Please bind a device first to manage", - "noMacAddress": "No MAC Address", - "licenseCode": "License Code", - "confirmUnbind": "Confirm Unbind", + "noDevicesBound": "Engin tæki hafa verið tengd enn", + "pleaseBindDeviceFirst": "Tengdu fyrst tæki til að stjórna", + "noMacAddress": "Ekkert MAC vistfang", + "licenseCode": "Leyfiskóði", + "confirmUnbind": "Staðfesta aftengingu", "confirmUnbindMessage": - "Are you sure you want to unbind device \"{deviceName}\"?", - "confirmUnbindAction": "Confirm Unbind", + "Ertu viss um að þú viljir aftengja tæki \"{deviceName}\"?", + "confirmUnbindAction": "Aftengja", // Agent模块 - 主界面 "Lily": "Lily", @@ -845,21 +853,22 @@ const Map isIS = { "loadMoreMessages": "Hlaða fleiri skilaboðum...", "loadFailedClickRetry": "Hleðsla mistókst, smelltu til að reyna aftur", "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ð.', + "callingTool": "Ég er að hjálpa þér, vinsamlegast bíddu!", // 正在帮您,请稍等! + "voice_interrupt": "Rjúfa", // 语音打断 + '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", // 今日天气 - "presetNews": "Today's news", // 今日新闻 - "presetFood": "Nearby food", // 美食 - "playSomeMusic": "Play some popular music", // 播放一些流行音乐 - "navigationTo": "Please help me navigate to", // 导航到 - "todayWeather": "How's the weather today?", // 今日天气 - "todayNews": "What's the news today?", // 今日新闻 - "nearbyFood": "What delicious food is nearby?", // 美食 + "presetMusic": "Spilaðu tónlist", // 来点音乐 + "presetNavigation": "Leiðsögn til", // 导航 + "presetWeather": "Veðrið í dag", // 今日天气 + "presetNews": "Fréttirnir í dag", // 今日新闻 + "presetFood": "Matvæli í nágrenninu", // 美食 + "playSomeMusic": "Spilaðu dæmigerða tónlist", // 播放一些流行音乐 + "navigationTo": "Vinsamlegast hjálpaðu mér að rata til", // 导航到(你原有这句是冰岛语,保留) + "todayWeather": "Hvernig er veðrið í dag?", // 今日天气 + "todayNews": "Hvað eru fréttirnir í dag?", // 今日新闻 + "nearbyFood": "Hvað er lyst matvæli í nágrenninu?", // 美食 // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Halló! Ég er **Lily**, ég get hjálpað þér með:\n\n' @@ -943,7 +952,8 @@ const Map isIS = { 'builtInNavigation': 'Innbyggð leiðsögn', 'useBuiltInNavigation': 'Nota innbyggða leiðsögn', 'navigationStartFailed': 'Ekki tókst að hefja leiðsögn', - 'cannotPlayMusicListRetryLater': 'Get ekki spilað tónlistalista, reyndu aftur síðar', + 'cannotPlayMusicListRetryLater': + 'Get ekki spilað tónlistalista, reyndu aftur síðar', 'cannotPlaySong': 'Get ekki spilað lag', 'openMapError': 'Villa við opnun korts', 'pleaseInstallAmapApp': 'Settu upp Amap appið fyrst', @@ -1005,8 +1015,8 @@ const Map isIS = { "strongWind": "Mikill vindur", // 翻译模块 - 中间层 - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", + "pictureTranslation": "Myndþýðing", + "textTranslation": "Textaþýðing", // 翻译模块 - 主页 "translationHistory": "Þýðingasaga", @@ -1016,14 +1026,14 @@ const Map isIS = { "phoneUser": "Notandi síma", "selectSourceLanguage": "Veldu upprunamál", "selectTargetLanguage": "Veldu markmál", - "me": "Me", - "counterPart": "Counterpart", + "me": "Ég", + "counterPart": "Viðmælandi", "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - "autoDetect": "Auto Detect", // 自动检测 + "Vinsamlegast vertu viss um að Bluetooth-heyrnartólin séu tengd við símann og að símtal sé í gangi", + "autoDetect": "Sjálfvirk greining", // 自动检测 // 翻译模块 - 文本翻译 - "languageDetectionFailed": "Language detection failed", + "languageDetectionFailed": "Tókst ekki að greina tungumál", // 翻译模块 - 悬浮窗与权限 'disableFloatingWindow': 'Slökkva á fljótandi glugga', @@ -1031,17 +1041,17 @@ const Map isIS = { 'permissionTip': 'Heimildaábending', 'micPermissionRequiredForRecording': 'Hljóðnemaheimild þarf til upptöku', 'deleteTranslationRecordError': 'Villa við eyðingu þýðingarfærslu: @error', - "translationFailed": "Translation failed", + "translationFailed": "Þýðing mistókst", "translating": "Þýði", "translate": "Þýða", - "pleaseInputText": "Please input text", + "pleaseInputText": "Vinsamlegast sláðu inn texta", "inputTextToTranslate": "Vinsamlegast sláðu inn texta til að þýða", - "textTooLong": "Text too long, max 5000 characters", + "textTooLong": "Texti er of langur, hámark 5000 stafir", // 翻译模块 - 历史记录 "noTranslationHistory": "Engin saga ennþá", - "historyRecords": "History Records", - "clearResults": "Clear Results", + "historyRecords": "Sögufærslur", + "clearResults": "Hreinsa niðurstöður", "clearHistory": "Hreinsa sögu", "clearHistoryConfirm": "Ertu viss um að þú viljir hreinsa alla þýðingasögu? Ekki er hægt að afturkalla þessa aðgerð.", @@ -1051,54 +1061,53 @@ const Map isIS = { "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", + "selectImageSource": "Veldu mynduppsprettu", + "imagePreview": "Forskoðun myndar", + "translationResult": "Þýðingarniðurstaða", + "recognitionResult": "Greiningarniðurstaða", + "translatedImagePreview": "Forskoðun þýddrar myndar", + "translatedImageLoadFailed": "Tókst ekki að hlaða þýddri mynd", + "pleaseSelectImage": "Veldu mynd", + "imageLoadFailed": "Hleðsla myndar mistókst", + "imageQuality": "Myndgæði", + "maxSize": "Hámarksstærð", + "close": "Loka", + "setImageQuality": "Stilla myndgæði", + "currentQuality": "Núverandi gæði: @value%", + "setMaxSize": "Stilla hámarksstærð", + "currentMaxSize": "Núverandi: @pxpx", + "waitingForAction": "Bíð eftir aðgerð", + "pleaseSelectImageToStart": "Veldu mynd til að byrja", + "chooseImage": "Velja mynd", + "openingCamera": "Opna myndavél...", + "openingPhotoAlbum": "Opna myndaalbúm...", + "cancelled": "Hætt við", + "userCancelledSelection": "Notandi hætti við val", + "translatingImage": "Þýði mynd", + "callingImageTranslateService": "Kalla á myndþýðingarþjónustu...", + "savingRecord": "Vistar færslu", + "savingTranslationResult": "Vistar þýðingarniðurstöðu...", + "translationCompleted": "Þýðingu lokið", + "allStepsCompleted": "Öllum skrefum lokið", + "processingFailed": "Vinnsla mistókst", "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", + "Myndvinnsla eða þýðing mistókst. Reyndu aftur.\nVilla: {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", + "emptyTranslationResult": "Myndþýðingar-API skilaði tómri niðurstöðu", "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", + "Myndþýðing mistókst. Netvandamál eða takmörk á beiðnum. Reyndu síðar", "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", + "Undantekning í myndþýðingar-API. Athugaðu netið og reyndu aftur", + "permissionRequired": "Heimild krafist", + "cameraPermissionRequired": "Myndaheimild þarf til að taka myndir", + "photoAlbumPermissionRequired": "Myndaalbúmsheimild þarf til að velja myndir", + "translationDetails": "Þýðingarupplýsingar", "originalImage": "Original Image", "sourceLanguage": "Source Language", "targetLanguage": "Target Language", - "translationTime": "Translation Time", + "translationTime": "Þýðingartími", "shareInDevelopment": "Sharing feature under development", // 翻译模块 - 录音文件 @@ -1195,25 +1204,25 @@ const Map isIS = { 'Reikningsþjónusta frumstillt', // AccountService 已初始化 // 权限模块 - 'meetingStoragePermission': 'Storage', + 'meetingStoragePermission': 'Geymsla', 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', + 'Við þurfum aðgang að geymsluheimildum svo þú getir valið og hlaðið upp hljóðskrám.', 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', + 'Þú hefur varanlega hafnað geymsluheimild. Til að halda áfram, farðu í stillingar forrits og virkjaðu geymsluheimild handvirkt.', 'getPermissionStatusFailed': 'Ekki tókst að fá stöðu heimilda', 'communicationPermissions': 'Samskiptaheimildir', - 'bluetoothPermissions': 'Bluetooth Permissions', - 'notificationPermissions': 'Notification Permissions', - 'storagePermissions': 'Storage Permissions', - 'microphonePermissions': 'Microphone Permissions', - 'alarmPermissions': 'Alarm Permissions', + 'bluetoothPermissions': 'Bluetooth-heimildir', + 'notificationPermissions': 'Tilkynningaheimildir', + 'storagePermissions': 'Geymsluheimildir', + 'microphonePermissions': 'Hljóðnemaheimildir', + 'alarmPermissions': 'Vekjaraklukkuheimildir', 'calendarPermissions': 'Dagbókarheimildir', 'locationPermissions': 'Staðsetningarheimildir', 'phone': 'Sími', 'sms': 'SMS', - 'contacts': 'Contacts', - 'notification': 'Notification', - 'alarm': 'Alarm', + 'contacts': 'Tengiliðir', + 'notification': 'Tilkynningar', + 'alarm': 'Vekjaraklukka', 'calendarWrite': 'Skrifa í dagbók', 'calendarFullAccess': 'Fullur aðgangur að dagbók', 'locationInfo': 'Staðsetningarupplýsingar', @@ -1238,86 +1247,89 @@ const Map isIS = { 'phonePermissionDetailDesc': 'Símtalsaðgerð krefst símaheimildar', 'smsPermissionDetailDesc': 'SMS sendingaraðgerð krefst SMS heimildar', 'alarmPermissionDetailDesc': - 'This permission is required to set exact alarms and ensure reminders trigger on time', + 'Þessi heimild er nauðsynleg til að stilla nákvæmar vekjaraklukkur og tryggja að áminningar virkjist á réttum tíma', 'calendarWritePermissionDetailDesc': 'Að búa til dagbókarviðburði krefst skrifheimildar í dagbók', 'calendarFullAccessPermissionDetailDesc': 'Að stjórna dagbókarviðburðum krefst fullrar dagbókarheimildar', 'locationPermissionDetailDesc': 'Að fá staðsetningarupplýsingar krefst staðsetningarheimildar', - 'contactsPermissionDesc': 'Used for accessing contact information', + 'contactsPermissionDesc': 'Notað til að fá aðgang að tengiliðaupplýsingum', 'contactsPermissionDetailDesc': - 'Phone call and SMS functionality requires contacts permission to select contacts', + 'Símtöl og SMS krefjast tengiliðaheimildar til að velja tengiliði', 'bluetoothPermissionDesc': - 'Used for connecting and managing Bluetooth devices', + 'Notað til að tengjast og stjórna Bluetooth-tækjum', 'bluetoothPermissionDetailDesc': - 'Connecting to Bluetooth headphones and other devices requires Bluetooth permission', - 'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices', + 'Til að tengjast Bluetooth-heyrnartólum og öðrum tækjum þarf Bluetooth-heimild', + 'bluetoothScanPermissionDesc': + 'Notað til að skanna Bluetooth-tæki í nágrenninu', 'bluetoothScanPermissionDetailDesc': - 'Scanning for nearby Bluetooth devices requires Bluetooth scan permission', - 'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices', + 'Skönnun á Bluetooth-tækjum í nágrenninu krefst Bluetooth-skömmunarheimildar', + 'bluetoothConnectPermissionDesc': 'Notað til að tengjast Bluetooth-tækjum', 'bluetoothConnectPermissionDetailDesc': - 'Connecting to Bluetooth devices requires Bluetooth connect permission', + 'Tenging við Bluetooth-tæki krefst Bluetooth-tengingarheimildar', 'notificationPermissionDesc': 'Used for sending notification messages', 'notificationPermissionDetailDesc': - 'App needs notification permission to send you important alerts and messages', + 'Forritið þarf tilkynningaheimild til að senda þér mikilvægar viðvaranir og skilaboð', 'appNeedsPermissionForFullFunction': 'Forritið þarf þessa heimild til að veita fulla virkni', 'permanentDenialText': 'Þú hefur varanlega hafnað {permission}-heimild, vinsamlegast farðu í forritastillingar til að virkja hana', 'goToSettings': 'Fara í stillingar', - 'bluetoothScan': 'Bluetooth Scan', - 'bluetoothConnect': 'Bluetooth Connect', + 'bluetoothScan': 'Bluetooth-skönnun', + 'bluetoothConnect': 'Bluetooth-tenging', 'bluetoothScanExplanation': - 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', + 'Forritið þarf Bluetooth-skömmunarheimild til að skanna Bluetooth-tæki í nágrenninu.', 'bluetoothConnectExplanation': - 'The app needs Bluetooth connect permission to connect to Bluetooth devices.', + 'Forritið þarf Bluetooth-tengingarheimild til að tengjast Bluetooth-tækjum.', 'locationForBluetoothExplanation': - 'The app needs location permission to scan Bluetooth devices.', + 'Forritið þarf staðsetningarheimild til að skanna Bluetooth-tæki.', 'bluetoothScanPermanentDenial': - 'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.', + 'Bluetooth-skömmunarheimild hefur verið varanlega hafnað, farðu í stillingar til að virkja hana handvirkt.', 'bluetoothConnectPermanentDenial': - 'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.', + 'Bluetooth-tengingarheimild hefur verið varanlega hafnað, farðu í stillingar til að virkja hana handvirkt.', 'locationPermanentDenial': - 'Location permission has been permanently denied, please go to settings to enable it manually.', - 'notificationPermission': 'Notification', - 'locationPermission': 'Location', + 'Staðsetningarheimild hefur verið varanlega hafnað, farðu í stillingar til að virkja hana handvirkt.', + 'notificationPermission': 'Tilkynningar', + 'locationPermission': 'Staðsetning', 'notificationPermissionExplanation': - 'Notification permission is required to display music playback status.', + 'Tilkynningaheimild er nauðsynleg til að sýna stöðu tónlistarspilunar.', 'locationPermissionExplanation': - 'Location permission is required to get current location.', + 'Staðsetningarheimild er nauðsynleg til að fá núverandi staðsetningu.', 'notificationPermissionPermanentDenial': - 'You have permanently denied notification permission, please go to settings to enable it.', + 'Þú hefur varanlega hafnað tilkynningaheimild, farðu í stillingar til að virkja hana.', 'locationPermissionPermanentDenial': - 'You have permanently denied location permission, please go to settings to enable it.', - 'storagePermission': 'Storage', + 'Þú hefur varanlega hafnað staðsetningarheimild, farðu í stillingar til að virkja hana.', + 'storagePermission': 'Geymsla', 'microphonePermissionExplanation': - 'We need microphone permission to record audio content.', + 'Við þurfum hljóðnemaheimild til að taka upp hljóð.', 'storagePermissionExplanation': - 'We need storage permission so you can select and upload audio files.', + 'Við þurfum geymsluheimild svo þú getir valið og hlaðið upp hljóðskrám.', 'microphonePermissionPermanentDenial': - 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', + 'Hljóðnemaheimild hefur verið varanlega hafnað. Til að halda áfram, farðu í stillingar forrits og virkjaðu hljóðnemaheimild handvirkt.', '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', + 'Geymsluheimild hefur verið varanlega hafnað. Til að halda áfram, farðu í stillingar forrits og virkjaðu geymsluheimild handvirkt.', + 'permissionUtilNeed': 'Þarf ', + 'permissionUtilPermission': ' heimild', + 'permissionUtilRestricted': ' Heimild takmörkuð', 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'Þessi aðgerð er ekki tiltæk eða er takmörkuð á þessu tæki. Athugaðu stillingar tækis eða kerfistakmarkanir', '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', + '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', // 版本更新对话框标题 @@ -1392,27 +1404,27 @@ const Map isIS = { 'bleConnectionFailed': 'BLE tenging mistókst', 'deviceAuthorizationFailedCheckCode': 'Tækisheimildun mistókst, athugaðu heimildarkóðann', - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + 'bluetoothGuideTitle': 'Krefst handvirkrar Bluetooth-virkjunar', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'Vinsamlegast fylgdu þessum skrefum:', // 请按照以下步骤操作: 'bluetoothGuideStep1': - 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'Virkja Bluetooth: Stillingar → Bluetooth → Kveikja', // 开启蓝牙:设置 → 蓝牙 → 开启 'bluetoothGuideStep2': - 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'Tengdu tæki: finndu tækið þitt í „Mín tæki“ og pikkaðu til að tengja', // 连接设备:在"我的设备"中找到您的设备并点击连接 'bluetoothGuideStep3': - 'Return to app to continue pairing process', // 返回应用继续配对流程 + 'Farðu aftur í appið til að halda áfram pörunarferlinu', // 返回应用继续配对流程 'bluetoothGuideTip': - 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': 'I Know', // 我知道了 + 'Ábending: Þú getur líka haldið Bluetooth-tákninu inni í Stjórnstöð til að opna Bluetooth-stillingar fljótt', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + 'iKnow': 'Skil það', // 我知道了 // 配对模块 - 绑定奖励 - "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:", + "firstBindRewardTitle": "Velkomin verðlaun", + "firstBindRewardDesc": "Þú hefur fengið verðlaun fyrir tengingu.", + "vipLevelLabel": "VIP stig:", + "expiryLabel": "Gildistími:", + "notActivated": "Ekki virkjað", + "aiChatCreditsLabel": "AI Chat inneign:", + "translationCreditsLabel": "Þýðinga inneign:", + "meetingCreditsLabel": "Fundar inneign:", "ok": "OK", // 用户反馈模块 @@ -1442,13 +1454,14 @@ const Map isIS = { "connectionFailed": "Tenging mistókst", "retryConnection": "Reyna að tengjast aftur", "ota_updateNow": "Uppfæra núna", - "otaVersionInfoFailed": "Failed to get version info. Please try again later.", + "otaVersionInfoFailed": + "Tókst ekki að sækja útgáfuupplýsingar. Reyndu aftur síðar.", "otaDeviceInfoUnavailable": - "Unable to get device info. Please check the connection and retry.", + "Ekki tókst að sækja tækisupplýsingar. Athugaðu tengingu og reyndu aftur.", "otaProductInfoUnavailable": - "Unable to identify the device. Please reconnect and retry.", + "Ekki tókst að bera kennsl á tækið. Tengdu aftur og reyndu aftur.", "otaFirmwareVersionInvalid": - "Firmware version is abnormal. Please reconnect and retry.", + "Fastbúnaðarútgáfa er óeðlileg. Tengdu aftur og reyndu aftur.", "keepConnectedDontClose": "Haltu tækinu tengdu, ekki loka forritinu", "doNotDisconnect": "Ekki aftengja", "charging": "Hleður", @@ -1461,7 +1474,8 @@ const Map isIS = { 'otaConfirmUpdateNow': 'Uppfæra núna?', 'otaUpdate': 'Uppfæra', 'otaUpgradeSuccess': 'Uppfærsla tókst', - 'otaUpgradeCompleteRepair': 'Hugbúnaðaruppfærsla lokið!\n\nTækið þarf að para aftur. Fara á pörunarsíðu?', + 'otaUpgradeCompleteRepair': + 'Hugbúnaðaruppfærsla lokið!\n\nTækið þarf að para aftur. Fara á pörunarsíðu?', 'otaPairLater': 'Para síðar', 'otaPairNow': 'Para núna', 'okConfirm': 'OK', @@ -1469,20 +1483,27 @@ const Map isIS = { // OTA升级模块 - 设备检查 'otaBleCheckErrorWithError': 'Villa í BLE-athugun: @error', 'otaBleNotConnected': 'BLE-tæki ekki tengt', - 'otaBleNeedConnection': 'Uppfærsla krefst BLE-tengingar\nGakktu úr skugga um að tækið sé tengt og reyndu aftur', + 'otaBleNeedConnection': + 'Uppfærsla krefst BLE-tengingar\nGakktu úr skugga um að tækið sé tengt og reyndu aftur', 'otaDeviceInfoUnavailableTitle': 'Tækjaupplýsingar ekki tiltækar', - 'otaCannotGetDeviceInfo': 'Get ekki sótt tækjaupplýsingar\nTengdu tækið aftur eða reyndu síðar', + 'otaCannotGetDeviceInfo': + 'Get ekki sótt tækjaupplýsingar\nTengdu tækið aftur eða reyndu síðar', 'otaBleCheckFailed': 'BLE-athugun mistókst', - 'otaCannotGetDeviceInfoCheckConnection': 'Get ekki sótt tækjaupplýsingar, athugaðu tengingu', - 'otaCannotGetProductInfoWithName': 'Get ekki sótt vöruupplýsingar, tækjanafn: @deviceName', + 'otaCannotGetDeviceInfoCheckConnection': + 'Get ekki sótt tækjaupplýsingar, athugaðu tengingu', + 'otaCannotGetProductInfoWithName': + 'Get ekki sótt vöruupplýsingar, tækjanafn: @deviceName', 'otaCannotGetBatteryInfo': 'Get ekki sótt rafhlöðuupplýsingar', 'otaLowBattery': 'Lítil rafhlaða', - 'otaSingleBatteryLow': 'Rafhlaða of lítil fyrir uppfærslu\nKrafa: rafhlaða yfir 20%\nNúverandi: @ear @battery%\nHladdu og reyndu aftur', - 'otaDoubleBatteryLow': 'Rafhlaða of lítil fyrir uppfærslu\nKrafa: báðir heyrnartólar yfir 20%\nNúverandi: Vinstri @left%, Hægri @right%\nHladdu og reyndu aftur', + 'otaSingleBatteryLow': + 'Rafhlaða of lítil fyrir uppfærslu\nKrafa: rafhlaða yfir 20%\nNúverandi: @ear @battery%\nHladdu og reyndu aftur', + 'otaDoubleBatteryLow': + 'Rafhlaða of lítil fyrir uppfærslu\nKrafa: báðir heyrnartólar yfir 20%\nNúverandi: Vinstri @left%, Hægri @right%\nHladdu og reyndu aftur', 'otaBatteryCheckFailed': 'Rafhlöðuathugun mistókst', // OTA升级模块 - 升级状态 - 'otaDefaultUpdateDesc': 'Uppfærslan inniheldur afkastabætingar og villuleiðréttingar.', + 'otaDefaultUpdateDesc': + 'Uppfærslan inniheldur afkastabætingar og villuleiðréttingar.', 'otaGetLatestVersionFailed': 'Ekki tókst að sækja nýjustu útgáfu', 'otaGetVersionInfoFailed': 'Ekki tókst að sækja útgáfuupplýsingar', 'otaCheckingDeviceStatus': 'Athuga stöðu tækis...', @@ -1495,7 +1516,8 @@ const Map isIS = { 'otaUpgradeSuccessComplete': 'Uppfærsla lokið', 'otaUpgradeFailedWithCode': 'Uppfærsla mistókst, villukóði: @code', 'otaUpgradeFailedTitle': 'Uppfærsla mistókst', - 'otaUpgradeFailedDesc': 'Athugaðu tengingu eða uppfærslupakka, villukóði: @code', + 'otaUpgradeFailedDesc': + 'Athugaðu tengingu eða uppfærslupakka, villukóði: @code', 'otaDeviceDisconnected': 'Tæki aftengt', 'otaDeviceConnected': 'Tæki tengt', diff --git a/lib/core/translations/language/it_it.dart b/lib/core/translations/language/it_it.dart index 433c4b2e9..47ca2094d 100644 --- a/lib/core/translations/language/it_it.dart +++ b/lib/core/translations/language/it_it.dart @@ -1,3 +1,4 @@ +// 意大利-意大利语 const Map itIT = { // 通用 'continue': 'Continua', @@ -18,11 +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", + "justNow": "Adesso", + "minutesAgo": "@minutes minuti fa", + "yesterday": "Ieri", + "daysAgo": "@days giorni fa", + "hoursAgo": "@hours ore fa", // 启动页 "slogan": "Connettere il mondo, oltre il suono", @@ -220,55 +221,55 @@ const Map itIT = { "scene": "Scenario", // 用量统计模块 - "aiChat": "AI Chat", - "translationStats": "Translation Statistics", - "meetingStats": "Meeting Statistics", - "today": "Today", - "thisWeek": "This Week", - "thisMonth": "This Month", - "history": "History", - "currentSessionStats": "Current Session Stats", - "translationCount": "Translation Count", - "sessionDuration": "Session Duration", - "characters": "Characters", - "recordingDuration": "Recording Duration", - "totalApiCalls": "Total API Calls", - "sessionCount": "Session Count", - "totalCharacters": "Total Characters", - "apiCallStats": "API Call Stats", - "translationApi": "Translation API", + "aiChat": "Chat AI", + "translationStats": "Statistiche di traduzione", + "meetingStats": "Statistiche riunioni", + "today": "Oggi", + "thisWeek": "Questa settimana", + "thisMonth": "Questo mese", + "history": "Cronologia", + "currentSessionStats": "Statistiche sessione corrente", + "translationCount": "Numero di traduzioni", + "sessionDuration": "Durata sessione", + "characters": "Caratteri", + "recordingDuration": "Durata registrazione", + "totalApiCalls": "Totale chiamate API", + "sessionCount": "Numero di sessioni", + "totalCharacters": "Totale caratteri", + "apiCallStats": "Statistiche chiamate API", + "translationApi": "API di traduzione", "asr": "ASR", "tts": "TTS", - "dataVolumeStats": "Data Volume Stats", - "sourceTextCharacters": "Source Text Characters", - "ttsTextCharacters": "TTS Text Characters", - "effectiveAudioDuration": "Effective Audio Duration", - "totalSessionDuration": "Total Session Duration", - "costStats": "Cost Stats", - "estimatedCost": "Estimated Cost", - "dailyCostThreshold": "Daily Cost Threshold", - "monthlyCostThreshold": "Monthly Cost Threshold", - "usageBehaviorStats": "Usage Behavior Stats", - "mostUsedLanguagePair": "Most-used language pair", - "mostUsedMode": "Most-used mode", - "asrApiCalls": "ASR Calls", - "totalAudioDuration": "Total Audio Duration", - "audioFileSize": "Audio File Size", - "transcriptBytes": "Transcript Bytes", - "loadFailed": "Load Failed", + "dataVolumeStats": "Statistiche volume dati", + "sourceTextCharacters": "Caratteri testo sorgente", + "ttsTextCharacters": "Caratteri testo TTS", + "effectiveAudioDuration": "Durata audio effettiva", + "totalSessionDuration": "Durata totale sessioni", + "costStats": "Statistiche costi", + "estimatedCost": "Costo stimato", + "dailyCostThreshold": "Soglia costi giornaliera", + "monthlyCostThreshold": "Soglia costi mensile", + "usageBehaviorStats": "Statistiche comportamento d'uso", + "mostUsedLanguagePair": "Coppia di lingue più usata", + "mostUsedMode": "Modalità più usata", + "asrApiCalls": "Chiamate ASR", + "totalAudioDuration": "Durata audio totale", + "audioFileSize": "Dimensione file audio", + "transcriptBytes": "Byte trascrizione", + "loadFailed": "Caricamento non riuscito", "statsLoadFailedTryLater": - "Statistics failed to load. Please try again later.", - "cleanupComplete": "Cleanup Complete", - "cleanedOldData": "Cleaned data older than 90 days", - "exportFeature": "Export Feature", - "exportInDevelopment": "Data export is under development", + "Impossibile caricare le statistiche. Riprova più tardi.", + "cleanupComplete": "Pulizia completata", + "cleanedOldData": "Dati più vecchi di 90 giorni rimossi", + "exportFeature": "Funzione di esportazione", + "exportInDevelopment": "L'esportazione dei dati è in sviluppo", // 商品模块 - 通用 - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', + 'availablePackages': 'Pacchetti disponibili', + 'remainingQuota': 'Quota residua', + 'totalQuota': 'Quota totale', + 'remaining': 'Rimanente', + 'featureDescription': 'Descrizione funzionalità', 'paymentSuccess': 'Pagamento riuscito', 'paymentFailed': 'Pagamento non riuscito', 'gotIt': 'Capito', @@ -328,40 +329,46 @@ const Map itIT = { 'alipayPaymentLaunchFailed': 'Impossibile avviare Alipay', 'cannotLaunchAlipayPayment': 'Impossibile avviare Alipay', 'alipayPaymentException': 'Eccezione Alipay', - "insufficientIntegral": "Insufficient integral", + "insufficientIntegral": "Punti insufficienti", "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', + 'Saldo insufficiente, vai alla pagina di ricarica corrispondente per ricaricare.', + "recharge": 'Vai alla ricarica', "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + "Abbonamento AI scaduto, vai alla pagina di ricarica dell'abbonamento per rinnovare.", // 商品模块 - AI商品页 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', + 'musicAndRecommendation': 'Musica e consigli', + 'navigationAndRoutes': 'Navigazione e percorsi', + 'nearbySearch': 'Ricerca nelle vicinanze', + 'newsInformation': 'Notizie', + 'communicationAssistant': 'Assistente di comunicazione', 'aiHeaderDesc1': - 'Longer conversation quota, more tool calls, extended context length.', + 'Quota conversazioni più ampia, più chiamate agli strumenti, contesto esteso.', 'aiHeaderDesc2': - 'Suitable for agent Q&A, summarization, analysis, and task execution.', - 'musicSearchPlaybackControl': 'Music library search and playback control', + "Adatto a domande e risposte, riepilogo, analisi ed esecuzione di attività.", + 'musicSearchPlaybackControl': + 'Ricerca nella libreria musicale e controllo riproduzione', 'smartPlaylistAndSimilarRecommendations': - 'Smart playlist and similar song recommendations', + 'Playlist intelligente e consigli di brani simili', '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', + 'Pianificazione del percorso ed evitamento del traffico', + 'voiceBroadcastAndWaypoints': + 'Annunci vocali e impostazioni dei punti di passaggio', + 'realTimeWeatherForecast': 'Meteo e previsioni in tempo reale', + 'clothingAdviceAndTravelReminders': + "Consigli sull'abbigliamento e promemoria di viaggio", + 'poiSearchFoodGasParking': + 'Ricerca POI: ristoranti / carburante / parcheggio', + 'ratingsHoursAndDirectRoutes': + 'Valutazioni, orari di apertura e navigazione diretta', + 'hotNewsAndTopicOverview': 'Notizie in evidenza e panoramica dei temi', + 'longArticleSummariesAndKeyPoints': + 'Riepiloghi di articoli lunghi e punti chiave', + 'helpCallAndSMS': 'Aiuto con chiamate e SMS', 'templatedMessagesAndScheduleReminders': - 'Template messages and schedule reminders', + 'Messaggi modello e promemoria programmati', 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', + 'Le funzionalità dipendono dalle autorizzazioni del dispositivo, dalla disponibilità del servizio e dalle condizioni di rete.', // 商品模块 - 翻译商品页 'realtimeTranscription': 'Real-time Transcription', @@ -384,24 +391,24 @@ const Map itIT = { 'Le prestazioni della traduzione dipendono dal microfono, dalla latenza di rete e dal rumore ambientale.', // 商品模块 - 会议商品页 - 'meetingRecording': 'Meeting Recording', + 'meetingRecording': 'Registrazione riunione', 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', + 'keywordSearch': 'Ricerca per parole chiave', + 'collaborationSharing': 'Collaborazione e condivisione', 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary.', + "Registrazione audio, trascrizione, ricerca per parole chiave e riepilogo automatico per aumentare l'efficienza delle riunioni.", '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', + 'Adatto a riunioni di lavoro, appunti di lezione e verbali di colloqui.', + 'meetingAutoRecording': 'Registrazione automatica e segmentazione', + 'meetingSpeakerTagging': 'Etichettatura dei parlanti', + 'meetingLongAudioTranscription': 'Trascrizione di audio lunghi', + 'meetingKeyPointSummary': 'Estrazione dei punti chiave', + 'meetingTopicNameSearch': 'Ricerca per argomento/nome', + 'meetingTimelineJump': 'Salto nella timeline', + 'meetingExportSummary': 'Esporta verbale', + 'meetingMultiPlatformShare': 'Condivisione multipiattaforma', 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', + 'Usa in ambienti silenziosi; le prestazioni dipendono da microfono e rete.', // 商品模块 - VIP会员页 'benefitsOverview': 'Panoramica dei vantaggi', @@ -432,9 +439,9 @@ const Map itIT = { '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.', + 'meet_001_desc': 'Include 100 registrazioni/trascrizioni di riunioni.', + 'meet_002_desc': 'Include 500 registrazioni/trascrizioni di riunioni.', + 'meet_003_desc': 'Include 1000 registrazioni/trascrizioni di riunioni.', 'trans_001_desc': 'Include 100 traduzioni (voce/testo).', 'trans_002_desc': 'Include 500 traduzioni (voce/testo).', 'trans_003_desc': 'Include 1000 traduzioni (voce/testo).', @@ -466,20 +473,21 @@ const Map itIT = { 'guideNavStart': "Tell Lily: “Navigate to Shenzhen Airport”", 'guideNavInput': "Navigate to Shenzhen Airport", 'guideNavSend': "Lily will plan the route", - 'guideNavEnd': "Navigation set—try other commands", + 'guideNavEnd': "Navigazione impostata: prova altri comandi", 'guideMeetingStart': - "Tell Lily: “Create a meeting reminder for 3pm tomorrow”", - 'guideMeetingInput': "Create a meeting reminder for 3pm tomorrow", - 'guideMeetingSend': "Lily will create a meeting reminder", - 'guideMeetingEnd': "Reminder created—try other commands", - 'guidePhoneStart': "Tell Lily: “Call Mom”", - 'guidePhoneInput': "Call Mom", - 'guidePhoneSend': "Lily will make the call", - 'guidePhoneEnd': "Call placed—try other commands", - 'guideSmsStart': "Tell Lily: “Send Dad a text: I’ll be home for dinner”", - 'guideSmsInput': "Text Dad: I’ll be home for dinner", - 'guideSmsSend': "Lily will send the message", - 'guideSmsEnd': "Message sent—voice control is convenient", + "Di' a Lily: “Crea un promemoria riunione per domani alle 15”", + 'guideMeetingInput': "Crea un promemoria riunione per domani alle 15", + 'guideMeetingSend': "Lily creerà un promemoria riunione", + 'guideMeetingEnd': "Promemoria creato: prova altri comandi", + 'guidePhoneStart': "Di' a Lily: “Chiama mamma”", + 'guidePhoneInput': "Chiama mamma", + 'guidePhoneSend': "Lily effettuerà la chiamata", + 'guidePhoneEnd': "Chiamata avviata: prova altri comandi", + 'guideSmsStart': + "Di' a Lily: “Invia a papà un messaggio: sarò a casa per cena”", + 'guideSmsInput': "Messaggio a papà: sarò a casa per cena", + 'guideSmsSend': "Lily invierà il messaggio", + 'guideSmsEnd': "Messaggio inviato: il controllo vocale è comodo", // Meeting模块 - 首页与导航 "startMeeting": "Inizia riunione", @@ -493,38 +501,38 @@ const Map itIT = { 'recordingDetails': 'Dettagli registrazione', 'aiSummary': 'Riepilogo AI', 'meetingTranscript': 'Trascrizione riunione', - 'files': 'Files', - 'mine': 'Mine', - 'connect': 'Connect', - 'allFiles': 'All Files', - 'searchInAllFiles': 'Search in all files', - 'from': 'From', - 'sortBy': 'Sort by', - 'creationTime': 'Creation Time', - 'bluetoothConnection': 'Bluetooth Connection', - 'meetingReconnect': 'Reconnect', - 'searching': 'Searching...', - 'searchFailed': 'Search failed, please check if Bluetooth is enabled', - 'aiPenNotFound': 'AI PEN device not found', - 'connectedToAiPen': 'Connected to AI PEN device', - 'checkingNewFiles': 'Checking for new files to import', - 'startingWifi': 'Starting Wi-Fi...', - 'newFilesDetected': 'New files detected, preparing to import', - 'noNewFiles': 'No new files to import', - 'connectingWifi': 'Connecting to Wi-Fi...', - 'wifiConnected': 'Wi-Fi connected successfully', - 'downloadingFiles': 'Downloading files...', - 'downloadingFileProgress': 'Total {total} files, downloading file {current}', - 'downloadComplete': 'Download complete', + 'files': 'File', + 'mine': 'I miei', + 'connect': 'Connetti', + 'allFiles': 'Tutti i file', + 'searchInAllFiles': 'Cerca in tutti i file', + 'from': 'Da', + 'sortBy': 'Ordina per', + 'creationTime': 'Data creazione', + 'bluetoothConnection': 'Connessione Bluetooth', + 'meetingReconnect': 'Riconnetti', + 'searching': 'Ricerca...', + 'searchFailed': 'Ricerca non riuscita, verifica che Bluetooth sia attivo', + 'aiPenNotFound': 'Dispositivo AI PEN non trovato', + 'connectedToAiPen': 'Connesso al dispositivo AI PEN', + 'checkingNewFiles': 'Controllo nuovi file da importare', + 'startingWifi': 'Avvio Wi‑Fi...', + 'newFilesDetected': 'Nuovi file rilevati, preparazione importazione', + 'noNewFiles': 'Nessun nuovo file da importare', + 'connectingWifi': 'Connessione al Wi‑Fi...', + 'wifiConnected': 'Wi‑Fi connesso con successo', + 'downloadingFiles': 'Download dei file...', + 'downloadingFileProgress': 'Totale {total} file, download file {current}', + 'downloadComplete': 'Download completato', 'downloadCompleteInfo': - 'Download complete, {count} files in total, returning automatically in 2 seconds', + 'Download completato, {count} file in totale, ritorno automatico tra 2 secondi', // Meeting模块 - 录音功能 - 'startRecording': 'Start Recording', - 'liveRecording': 'Live Recording', - 'audioVideoRecording': 'Audio/Video Recording', - 'callRecording': 'Call Recording', - 'importAudio': 'Import Audio', + 'startRecording': 'Avvia registrazione', + 'liveRecording': 'Registrazione live', + 'audioVideoRecording': 'Registrazione audio/video', + 'callRecording': 'Registrazione chiamata', + 'importAudio': 'Importa audio', 'meetingRecordExitTitle': 'Esci dalla registrazione', // 退出录音 'meetingRecordExitMessage': 'Scegli cosa fare prima di uscire', // 请选择离开后的操作 'meetingRecordEndAndSave': 'Termina e salva', // 结束录音并保存 @@ -547,30 +555,30 @@ const Map itIT = { 'Per mostrare la barra fluttuante di registrazione (timer/pausa/riprendi) durante la registrazione, ci serve l\'autorizzazione di overlay.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'overlayPermissionOpenSettingsFailed': 'Impossibile aprire automaticamente le impostazioni di sistema. Apri Impostazioni e abilita manualmente l\'autorizzazione di overlay.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'transcribing': 'Trascrizione...', + 'summarizing': 'Riepilogo...', + 'analyzing': 'Analisi...', + 'summaryComplete': 'Riepilogo completato', + 'generate': 'Genera', + 'overview': 'Panoramica', + 'transcription': 'Trascrizione', + 'summary': 'Riepilogo', + 'mindMap': 'Mappa mentale', + 'editSpeaker': 'Modifica', + 'nameSpeaker': 'Nome relatore', // Meeting模块 - 转写与总结 - 'reSummarize': 'Re-summarize', - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'reSummarize': 'Riepiloga di nuovo', + 'dateAndTime': 'Data e ora', + 'location': 'Luogo', + 'attendees': 'Partecipanti', + 'inputLocation': 'Inserisci luogo', + 'inputAttendees': 'Inserisci partecipanti', // Meeting模块 - 模版与生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', + 'selectSummaryTemplate': 'Seleziona modello di riepilogo', + 'useThisTemplate': 'Usa questo modello', + 'lastUsed': 'Ultimo usato', 'create': 'Crea', 'templateDetails': 'Dettagli del modello', 'tag': 'Etichetta', @@ -587,160 +595,163 @@ const Map itIT = { '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.', + 'viewAll': 'Vedi tutti', + 'recordingLanguage': 'Lingua di registrazione', + 'chineseSimplified': 'Cinese mandarino (semplificato)', + 'meetingGenerateNow': 'Genera ora', + 'keyEventsAnalyzed': 'Analizzati {count} eventi chiave.', 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + "L'analisi AI identifica gli eventi chiave nelle registrazioni, consentendoti di selezionare quelli importanti per la generazione 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}', + 'importing': 'Importazione...', + 'batchImporting': 'Importazione batch...', + 'importingLocalRecordings': 'Importazione registrazioni locali...', + 'importFailed': 'Importazione file fallita: {filePath}, errore: {error}', + 'importSuccess': 'Importate con successo {count} registrazioni locali', + 'importError': 'Importazione fallita: {error}', + 'pleaseSelectAudioFile': 'Seleziona un file audio', + 'shareAudio': 'Condividi audio riunione', + 'shareComplete': 'Condivisione completata!', + 'shareFailed': 'Condivisione fallita: {error}', + 'fileProcessingFailed': + 'Elaborazione file fallita: {filePath}, errore: {error}', // Meeting模块 - 思维导图 'saveMindMap': 'Salva mappa mentale', - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', + 'shareMindMap': 'Condividi mappa mentale', + 'shareSuccess': 'Condivisione riuscita', // 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', + 'askAI': "Chiedi all'AI...", + 'askAIPrompt': 'In cosa posso aiutarti oggi?', + 'continueAsk': 'Continua a chiedere', + 'todoList': 'Elenco attività', + 'extractConclusion': 'Estrai conclusione', + 'generateKeyIndicators': 'Genera indicatori chiave', // 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...', + 'shareLink': 'Condividi link', + 'copyTranscript': 'Copia trascrizione', + 'copySummary': 'Copia riepilogo', + 'exportAudio': 'Esporta audio', + 'exportTranscript': 'Esporta trascrizione', + 'shareMeetingAudio': 'Condividi audio riunione', + 'exportSummary': 'Esporta riepilogo', + 'exportAs': 'Esporta come', + 'exportingPDF': 'Esportazione 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', + 'nameCurrentSpeaker': 'Nomina relatore corrente', + 'recentlyUsedNames': 'Nomi usati di recente', + 'applyToCurrentParagraph': 'Applica al paragrafo corrente', + 'totalTime': 'Tempo totale', 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', + 'I relatori nel riepilogo verranno aggiornati automaticamente', // Meeting模块 - 云端同步 - 'syncToCloud': 'Sync to Cloud', + 'syncToCloud': 'Sincronizza nel 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', + 'Sincronizza automaticamente le tue registrazioni nel cloud; puoi riprodurre, gestire e condividere le registrazioni tramite qualsiasi app VOITRANS o VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sincronizza app VOITRANS', + 'transcriptionRecord': 'Record di trascrizione', // Meeting模块 - 我的页面 - 'transcriptionRecords': 'Transcription Records', - 'templateCommunity': 'Template Community', - 'comingSoon': 'Coming Soon', - 'integration': 'Integration', + 'transcriptionRecords': 'Record di trascrizione', + 'templateCommunity': 'Community dei modelli', + 'comingSoon': 'Prossimamente', + 'integration': 'Integrazione', 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', - 'enabled': 'Enabled', - 'disabled': 'Disabled', - 'myVoitransDevice': 'My VOITRANS Device', - 'helpAndFeedback': 'Help & Feedback', - 'aboutVoitrans': 'About VOITRANS', - 'meetingDays': 'Days', - 'meetingHours': 'Hours', - 'voitransAiMember': 'Voitrans AI Member', - 'unlockStarterMember': 'Unlock Starter Member', - 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', - 'unlockNow': 'Unlock Now', + 'enabled': 'Abilitato', + 'disabled': 'Disabilitato', + 'myVoitransDevice': 'Il mio dispositivo VOITRANS', + 'helpAndFeedback': 'Aiuto e feedback', + 'aboutVoitrans': 'Informazioni su VOITRANS', + 'meetingDays': 'Giorni', + 'meetingHours': 'Ore', + 'voitransAiMember': 'Membro AI Voitrans', + 'unlockStarterMember': 'Sblocca membro Starter', + 'bindDeviceToActivate': + "Associa dispositivo Voitrans per attivare l'abbonamento Starter", + 'unlockNow': 'Sblocca ora', // Meeting模块 - 会员与升级 - 'comparison': 'Comparison', - 'detailedInfo': 'Detailed Information', - 'monthlyTranscriptionTime': 'Monthly Transcription Time', - 'unlimited': 'Unlimited', - 'professionalTemplates': 'Professional Templates', - 'limited': 'Limited', - 'fullTemplates': 'Full Templates', - 'professionalTerms': 'Professional Terms', - 'customTemplates': 'Custom Templates', - 'visualMindMap': 'Visual Mind Map', - 'speakerIdentification': 'Speaker Identification', - 'aiVoiceEnhancement': 'AI Voice Enhancement', - 'audioImport': 'Audio Import', - 'multipleExportFormats': 'Multiple Export Formats', - 'professionalSummaryTemplates': 'Professional Summary Templates', + 'comparison': 'Confronto', + 'detailedInfo': 'Informazioni dettagliate', + 'monthlyTranscriptionTime': 'Tempo di trascrizione mensile', + 'unlimited': 'Illimitato', + 'professionalTemplates': 'Modelli professionali', + 'limited': 'Limitato', + 'fullTemplates': 'Tutti i modelli', + 'professionalTerms': 'Termini professionali', + 'customTemplates': 'Modelli personalizzati', + 'visualMindMap': 'Mappa mentale visiva', + 'speakerIdentification': 'Identificazione parlante', + 'aiVoiceEnhancement': 'Miglioramento voce AI', + 'audioImport': 'Importazione audio', + 'multipleExportFormats': 'Più formati di esportazione', + 'professionalSummaryTemplates': 'Modelli di riepilogo professionali', 'professionalTemplateDesc': - 'Professional template design to improve your work efficiency. Customized according to industry needs.', + 'Design di modelli professionali per migliorare la tua efficienza di lavoro. Personalizzati in base alle esigenze del settore.', 'customTemplateDesc': - 'You can customize summary prompts according to your needs and use them to generate the required summaries.', + 'Puoi personalizzare i prompt di riepilogo in base alle tue esigenze e usarli per generare i riepiloghi desiderati.', 'askAiDesc': - 'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.', + 'Estrai in modo intelligente informazioni più approfondite dalle registrazioni e genera con un clic tabelle di dati, conclusioni chiave, elenchi di attività, e-mail di report e altri contenuti formattati.', 'visualMindMapDesc': - 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', + 'Oltre i riepiloghi: organizza e visualizza i punti chiave con mappe mentali per comprendere meglio il testo completo.', 'templateCommunityDesc': - 'Discover, share, and get inspiration from the template library created by users.', + 'Scopri, condividi e lasciati ispirare dalla libreria di modelli creata dagli utenti.', 'speakerIdentificationDesc': - 'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.', + "La trascrizione audio supporterà l'identificazione del parlante, ricostruendo in modo più intuitivo il contenuto di riunioni o chiamate. Allo stesso tempo, il riepilogo sarà più accurato.", 'privateCloudSyncDesc': - 'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.', + 'Le tue registrazioni e trascrizioni saranno archiviate in modo sicuro su server cloud dedicati, con crittografia completa durante caricamento e download per garantire privacy e sicurezza.', 'aiVoiceEnhancementDesc': - 'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.', + 'Il miglioramento vocale AI supporta più impostazioni di riduzione del rumore, elimina in modo intelligente il rumore di fondo, migliora la chiarezza della voce e la qualità di riproduzione audio.', 'audioImportDesc': - 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', + 'Importa facilmente file audio da app locali o di terze parti, come Memo vocali, Google Drive, ecc.', 'multipleExportFormatsDesc': - 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - 'upgradeMembership': 'Upgrade Your Membership', - 'yearlySubscription': 'Yearly Subscription', - 'monthlySubscription': 'Monthly Subscription', - 'proMonthly': 'Pro ¥60/month', + 'Esporta registrazioni audio, testo trascritto e riepiloghi in vari formati (TXT, PDF, JPEG) in base alle tue esigenze.', + 'upgradeMembership': 'Aggiorna abbonamento', + 'yearlySubscription': 'Abbonamento annuale', + 'monthlySubscription': 'Abbonamento mensile', + 'proMonthly': 'Pro ¥60/mese', 'proMonthlyDesc': - '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', - 'sevenDayTrial': '7-day Free Trial', - 'unlimitedMonthly': 'Unlimited ¥120/month', + 'Prova gratuita di 7 giorni, poi ¥800/anno. Annulla in qualsiasi momento prima della fine della prova.', + 'sevenDayTrial': 'Prova gratuita di 7 giorni', + 'unlimitedMonthly': 'Illimitato ¥120/mese', 'unlimitedMonthlyDesc': - '7-day free trial, then ¥1600/year. Cancel anytime before trial ends.', - 'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.', + 'Prova gratuita di 7 giorni, poi ¥1600/anno. Annulla in qualsiasi momento prima della fine della prova.', + 'trialNote': + '*Prova gratuita per 7 giorni, poi addebito annuale, annulla in qualsiasi momento.', 'proPrice': 'Pro ¥120', - 'proMonthlyPrice': '¥120/month', - 'subscribe': 'Subscribe', + 'proMonthlyPrice': '¥120/mese', + 'subscribe': 'Abbonati', 'unlimitedPrice': 'Unlimited ¥198', - 'unlimitedMonthlyPrice': '¥198/month', + 'unlimitedMonthlyPrice': '¥198/mese', 'upgradeNote': - '*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account', - 'buyMoreTranscriptionTime': 'Buy More Transcription Time', + "Dopo l'upgrade dell'abbonamento, i giorni rimanenti dell'abbonamento originale verranno calcolati automaticamente e rimborsati sul tuo conto di pagamento", + 'buyMoreTranscriptionTime': 'Acquista altro tempo di trascrizione', 'sixThousandMinutes': '6,000 minutes', 'threeThousandMinutes': '3,000 minutes', 'sixHundredMinutes': '600 minutes', 'oneHundredTwentyMinutes': '120 minutes', - 'validityPeriod': '*Validity Period: ', + 'validityPeriod': '*Periodo di validità: ', 'validityNote': - 'Activated immediately after purchase, valid for 2 years after activation.', - 'purchase': 'Purchase', + "Attivato immediatamente dopo l'acquisto, valido per 2 anni dopo l'attivazione.", + 'purchase': 'Acquista', // Meeting模块 - 录音语言 - 'recordLanguage': 'Recording Language', + 'recordLanguage': 'Lingua di registrazione', 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', + 'sichuan': 'Dialetto del Sichuan', + 'shanghai': 'Dialetto di Shanghai', // Meeting模块 - 错误提示 - 'meetingUnknownLanguage': 'Unknown Language', + 'meetingUnknownLanguage': 'Lingua sconosciuta', 'analysisFailed': 'Analisi non riuscita, riprova più tardi', 'transcriptionFailed': 'Trascrizione non riuscita, riprova più tardi', 'summaryFailed': 'Riepilogo non riuscito, riprova più tardi', @@ -758,13 +769,13 @@ const Map itIT = { "systemSettings": "Impostazioni di sistema", "vipRecharge": "Ricarica membro Premium", "aiRecharge": "Membro Premium", - "translationRecharge": "Recharge traduzione", - "meetingAssistantRecharge": "Recharge assistente riunione", - "cloudSync": "Recharge sincronizzazione cloud", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "translationRecharge": "Ricarica traduzione", + "meetingAssistantRecharge": "Ricarica assistente riunione", + "cloudSync": "Ricarica sincronizzazione cloud", + "memberService": "Servizio membri", + "bindRewardTitle": "Ricompense", "bindRewardSimpleDesc": - "First bind device reward has been issued. Tap OK to close.", + "La ricompensa per la prima associazione del dispositivo è stata emessa. Tocca OK per chiudere.", "joinDevice": "Dispositivo connesso:", "accountId": "ID account:", "systemSetting": "Impostazioni di sistema", @@ -817,20 +828,20 @@ const Map itIT = { "loading": "Caricamento...", // 设备管理模块 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", - "deviceTypeSmartEye": "Smart Glasses", + "deviceTypeUnknown": "Dispositivo sconosciuto", + "deviceTypeClassicBluetoothHeadset": "Cuffie Bluetooth classiche", + "deviceTypeBleBluetoothHeadset": "Cuffie Bluetooth BLE", + "deviceTypeSmartVoiceRecorder": "Registratore vocale intelligente", + "deviceTypeSmartEye": "Occhiali intelligenti", "unbind": "Disassocia", - "noDevicesBound": "No devices bound yet", - "pleaseBindDeviceFirst": "Please bind a device first to manage", - "noMacAddress": "No MAC Address", - "licenseCode": "License Code", - "confirmUnbind": "Confirm Unbind", + "noDevicesBound": "Nessun dispositivo associato", + "pleaseBindDeviceFirst": "Associa prima un dispositivo da gestire", + "noMacAddress": "Nessun indirizzo MAC", + "licenseCode": "Codice licenza", + "confirmUnbind": "Conferma disassociazione", "confirmUnbindMessage": - "Are you sure you want to unbind device \"{deviceName}\"?", - "confirmUnbindAction": "Confirm Unbind", + "Sei sicuro di voler disassociare il dispositivo \"{deviceName}\"?", + "confirmUnbindAction": "Disassocia", // Agent模块 - 主界面 "Lily": "Lily", @@ -861,22 +872,22 @@ const Map itIT = { "loadMoreMessages": "Carica altri messaggi...", "loadFailedClickRetry": "Caricamento fallito, clicca per riprovare", "swipeUpForMore": "Scorri verso l'alto per vedere di più", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 + "callingTool": "Ti sto aiutando, attendi!", // 正在帮您,请稍等! + "voice_interrupt": "Interrompi", // 语音打断 '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", // 今日天气 - "presetNews": "Today's news", // 今日新闻 - "presetFood": "Nearby food", // 美食 - "playSomeMusic": "Play some popular music", // 播放一些流行音乐 - "navigationTo": "Please help me navigate to", // 导航到 - "todayWeather": "How's the weather today?", // 今日天气 - "todayNews": "What's the news today?", // 今日新闻 - "nearbyFood": "What delicious food is nearby?", // 美食 + "presetMusic": "Metti della musica", // 来点音乐 + "presetNavigation": "Naviga verso", // 导航 + "presetWeather": "Meteo di oggi", // 今日天气 + "presetNews": "Notizie di oggi", // 今日新闻 + "presetFood": "Cibo vicino", // 美食 + "playSomeMusic": "Metti della musica popolare", // 播放一些流行音乐 + "navigationTo": "Portami a", // 导航到 + "todayWeather": "Com'è il tempo oggi?", // 今日天气 + "todayNews": "Quali sono le notizie oggi?", // 今日新闻 + "nearbyFood": "Che cibo buono c'è qui vicino?", // 附近有什么好吃的 // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Ciao! Sono **Lily**, posso aiutarti a:\n\n' @@ -1025,8 +1036,8 @@ const Map itIT = { "strongWind": "Vento forte", // 翻译模块 - 中间层 - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", + "pictureTranslation": "Traduzione immagine", + "textTranslation": "Traduzione testo", // 翻译模块 - 主页 "translationHistory": "Cronologia traduzioni", @@ -1036,14 +1047,14 @@ const Map itIT = { "phoneUser": "Utente telefono", "selectSourceLanguage": "Seleziona lingua di origine", "selectTargetLanguage": "Seleziona lingua di destinazione", - "me": "Me", - "counterPart": "Counterpart", + "me": "Io", + "counterPart": "Interlocutore", "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - "autoDetect": "Auto Detect", // 自动检测 + "Assicurati che le cuffie Bluetooth siano connesse al telefono e che una chiamata sia in corso", + "autoDetect": "Rilevamento automatico", // 自动检测 // 翻译模块 - 文本翻译 - "languageDetectionFailed": "Language detection failed", + "languageDetectionFailed": "Rilevamento lingua non riuscito", // 翻译模块 - 悬浮窗与权限 'disableFloatingWindow': 'Disattiva finestra mobile', @@ -1053,17 +1064,17 @@ const Map itIT = { 'Permesso microfono necessario per la registrazione', 'deleteTranslationRecordError': 'Errore durante l eliminazione del record di traduzione: @error', - "translationFailed": "Translation failed", + "translationFailed": "Traduzione non riuscita", "translating": "Traduzione in corso", "translate": "Traduci", - "pleaseInputText": "Please input text", + "pleaseInputText": "Inserisci testo", "inputTextToTranslate": "Inserisci il testo da tradurre", - "textTooLong": "Text too long, max 5000 characters", + "textTooLong": "Testo troppo lungo, max 5000 caratteri", // 翻译模块 - 历史记录 "noTranslationHistory": "Nessuna cronologia", - "historyRecords": "History Records", - "clearResults": "Clear Results", + "historyRecords": "Record cronologia", + "clearResults": "Cancella risultati", "clearHistory": "Cancella cronologia", "clearHistoryConfirm": "Sei sicuro di voler cancellare tutta la cronologia delle traduzioni? Questa azione non può essere annullata.", @@ -1073,55 +1084,58 @@ const Map itIT = { "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", + "selectImageSource": "Seleziona origine immagine", + "imagePreview": "Anteprima immagine", + "translationResult": "Risultato traduzione", + "recognitionResult": "Risultato riconoscimento", + "translatedImagePreview": "Anteprima immagine tradotta", + "translatedImageLoadFailed": "Impossibile caricare l'immagine tradotta", + "pleaseSelectImage": "Seleziona un'immagine", + "imageLoadFailed": "Caricamento immagine non riuscito", + "imageQuality": "Qualità immagine", + "maxSize": "Dimensione massima", + "close": "Chiudi", + "setImageQuality": "Imposta qualità immagine", + "currentQuality": "Qualità corrente: @value%", + "setMaxSize": "Imposta dimensione massima", + "currentMaxSize": "Corrente: @pxpx", + "waitingForAction": "In attesa di azione", + "pleaseSelectImageToStart": "Seleziona un'immagine per iniziare", + "chooseImage": "Scegli immagine", + "openingCamera": "Apertura fotocamera...", + "openingPhotoAlbum": "Apertura galleria...", + "cancelled": "Annullato", + "userCancelledSelection": "Selezione annullata dall'utente", + "translatingImage": "Traduzione immagine", + "callingImageTranslateService": + "Chiamata al servizio di traduzione immagini...", + "savingRecord": "Salvataggio record", + "savingTranslationResult": "Salvataggio risultato traduzione...", + "translationCompleted": "Traduzione completata", + "allStepsCompleted": "Tutti i passaggi completati", + "processingFailed": "Elaborazione non riuscita", "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", + "Elaborazione immagine o traduzione non riuscita. Riprova.\nErrore: {error}", + "imageTooLarge": "La dimensione dell'immagine supera il limite di 4 MB", "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", + "La dimensione dell'immagine supera 4 MB. Riduci qualità o dimensioni e riprova", + "emptyTranslationResult": + "L'API di traduzione immagini ha restituito un risultato vuoto", "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", + "Traduzione immagine non riuscita. Problema di rete o limite richieste. Riprova più tardi", "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", + "Eccezione API traduzione immagini. Controlla la rete e riprova", + "permissionRequired": "Permesso richiesto", + "cameraPermissionRequired": + "Permesso fotocamera necessario per scattare foto", "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", + "Permesso galleria necessario per scegliere immagini", + "translationDetails": "Dettagli traduzione", + "originalImage": "Immagine originale", + "sourceLanguage": "Lingua di origine", + "targetLanguage": "Lingua di destinazione", + "translationTime": "Tempo di traduzione", + "shareInDevelopment": "Funzione di condivisione in sviluppo", // 翻译模块 - 录音文件 "translateAudioFiles": "Traduci file audio", @@ -1220,33 +1234,33 @@ const Map itIT = { 'Servizio account inizializzato', // AccountService 已初始化 // 权限模块 - 'meetingStoragePermission': 'Storage', + 'meetingStoragePermission': 'Archiviazione', 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', + "Abbiamo bisogno dell'autorizzazione di archiviazione per permetterti di selezionare e caricare file audio.", 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', + "È stato rilevato che hai negato permanentemente l'autorizzazione di archiviazione. Per continuare a usare questa funzione, vai alle impostazioni dell'app e abilitala manualmente.", 'getPermissionStatusFailed': 'Ottenimento dello stato delle autorizzazioni fallito', 'communicationPermissions': 'Autorizzazioni di comunicazione', - 'bluetoothPermissions': 'Bluetooth Permissions', - 'notificationPermissions': 'Notification Permissions', - 'storagePermissions': 'Storage Permissions', - 'microphonePermissions': 'Microphone Permissions', - 'alarmPermissions': 'Alarm Permissions', + 'bluetoothPermissions': 'Autorizzazioni Bluetooth', + 'notificationPermissions': 'Autorizzazioni notifiche', + 'storagePermissions': 'Autorizzazioni archiviazione', + 'microphonePermissions': 'Autorizzazioni microfono', + 'alarmPermissions': 'Autorizzazioni allarmi', 'calendarPermissions': 'Autorizzazioni del calendario', 'locationPermissions': 'Autorizzazioni di localizzazione', 'phone': 'Telefono', 'sms': 'SMS', - 'contacts': 'Contacts', - 'notification': 'Notification', - 'alarm': 'Alarm', + 'contacts': 'Contatti', + 'notification': 'Notifiche', + 'alarm': 'Allarme', 'calendarWrite': 'Scrivi nel calendario', 'calendarFullAccess': 'Accesso completo al calendario', 'locationInfo': 'Informazioni sulla posizione', 'phonePermissionDesc': 'Utilizzato per la funzione di chiamata', 'smsPermissionDesc': 'Utilizzato per la funzione di invio SMS', 'alarmPermissionDesc': - 'Used to set exact alarms to ensure reminders trigger on time', + 'Utilizzato per impostare allarmi precisi e garantire che i promemoria si attivino in tempo', 'calendarWritePermissionDesc': 'Utilizzato per creare eventi e promemoria nel calendario', 'calendarFullAccessPermissionDesc': @@ -1267,72 +1281,75 @@ const Map itIT = { 'smsPermissionDetailDesc': 'La funzione di invio SMS richiede l\'autorizzazione SMS', 'alarmPermissionDetailDesc': - 'This permission is required to set exact alarms and ensure reminders trigger on time', + 'Questa autorizzazione è necessaria per impostare allarmi precisi e garantire che i promemoria si attivino in tempo', 'calendarWritePermissionDetailDesc': 'La creazione di eventi nel calendario richiede l\'autorizzazione di scrittura nel calendario', 'calendarFullAccessPermissionDetailDesc': 'La gestione degli eventi del calendario richiede l\'autorizzazione completa del calendario', 'locationPermissionDetailDesc': 'L\'ottenimento di informazioni sulla posizione richiede l\'autorizzazione di localizzazione', - 'contactsPermissionDesc': 'Used for accessing contact information', + 'contactsPermissionDesc': + 'Utilizzato per accedere alle informazioni dei contatti', 'contactsPermissionDetailDesc': - 'Phone call and SMS functionality requires contacts permission to select contacts', + "Le funzioni di chiamata e SMS richiedono l'autorizzazione Contatti per selezionare i contatti", 'bluetoothPermissionDesc': - 'Used for connecting and managing Bluetooth devices', + 'Utilizzato per connettere e gestire dispositivi Bluetooth', 'bluetoothPermissionDetailDesc': - 'Connecting to Bluetooth headphones and other devices requires Bluetooth permission', - 'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices', + "La connessione a cuffie Bluetooth e ad altri dispositivi richiede l'autorizzazione Bluetooth", + 'bluetoothScanPermissionDesc': + 'Utilizzato per scansionare i dispositivi Bluetooth nelle vicinanze', 'bluetoothScanPermissionDetailDesc': - 'Scanning for nearby Bluetooth devices requires Bluetooth scan permission', - 'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices', + 'La scansione dei dispositivi Bluetooth nelle vicinanze richiede l\'autorizzazione di scansione Bluetooth', + 'bluetoothConnectPermissionDesc': + 'Utilizzato per connettersi ai dispositivi Bluetooth', 'bluetoothConnectPermissionDetailDesc': - 'Connecting to Bluetooth devices requires Bluetooth connect permission', - 'notificationPermissionDesc': 'Used for sending notification messages', + "La connessione ai dispositivi Bluetooth richiede l'autorizzazione di connessione Bluetooth", + 'notificationPermissionDesc': 'Utilizzato per inviare notifiche', 'notificationPermissionDetailDesc': - 'App needs notification permission to send you important alerts and messages', + "L'app ha bisogno dell'autorizzazione alle notifiche per inviarti avvisi e messaggi importanti", 'appNeedsPermissionForFullFunction': 'L\'app necessita di questa autorizzazione per la piena funzionalità', 'permanentDenialText': 'Hai negato permanentemente l\'autorizzazione {permission}, vai alle impostazioni dell\'app per attivarla', 'goToSettings': 'Vai alle impostazioni', - 'bluetoothScan': 'Bluetooth Scan', - 'bluetoothConnect': 'Bluetooth Connect', + 'bluetoothScan': 'Scansione Bluetooth', + 'bluetoothConnect': 'Connessione Bluetooth', 'bluetoothScanExplanation': - 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', + "L'app ha bisogno dell'autorizzazione di scansione Bluetooth per cercare dispositivi Bluetooth nelle vicinanze.", 'bluetoothConnectExplanation': - 'The app needs Bluetooth connect permission to connect to Bluetooth devices.', + "L'app ha bisogno dell'autorizzazione di connessione Bluetooth per connettersi ai dispositivi Bluetooth.", 'locationForBluetoothExplanation': - 'The app needs location permission to scan Bluetooth devices.', + "L'app ha bisogno dell'autorizzazione di posizione per scansionare i dispositivi Bluetooth.", 'bluetoothScanPermanentDenial': - 'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.', + "L'autorizzazione di scansione Bluetooth è stata negata permanentemente. Vai alle impostazioni per abilitarla manualmente.", 'bluetoothConnectPermanentDenial': - 'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.', + "L'autorizzazione di connessione Bluetooth è stata negata permanentemente. Vai alle impostazioni per abilitarla manualmente.", 'locationPermanentDenial': - 'Location permission has been permanently denied, please go to settings to enable it manually.', - 'notificationPermission': 'Notification', - 'locationPermission': 'Location', + "L'autorizzazione di posizione è stata negata permanentemente. Vai alle impostazioni per abilitarla manualmente.", + 'notificationPermission': 'Notifiche', + 'locationPermission': 'Posizione', 'notificationPermissionExplanation': - 'Notification permission is required to display music playback status.', + "L'autorizzazione alle notifiche è necessaria per mostrare lo stato della riproduzione musicale.", 'locationPermissionExplanation': - 'Location permission is required to get current location.', + "L'autorizzazione di posizione è necessaria per ottenere la posizione attuale.", 'notificationPermissionPermanentDenial': - 'You have permanently denied notification permission, please go to settings to enable it.', + "Hai negato permanentemente l'autorizzazione alle notifiche. Vai alle impostazioni per abilitarla.", 'locationPermissionPermanentDenial': - 'You have permanently denied location permission, please go to settings to enable it.', - 'storagePermission': 'Storage', + "Hai negato permanentemente l'autorizzazione di posizione. Vai alle impostazioni per abilitarla.", + 'storagePermission': 'Archiviazione', 'microphonePermissionExplanation': - 'We need microphone permission to record audio content.', + "Abbiamo bisogno dell'autorizzazione del microfono per registrare contenuti audio.", 'storagePermissionExplanation': - 'We need storage permission so you can select and upload audio files.', + "Abbiamo bisogno dell'autorizzazione di archiviazione per permetterti di selezionare e caricare file audio.", 'microphonePermissionPermanentDenial': - 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', + "L'autorizzazione del microfono è stata negata permanentemente. Per continuare a usare questa funzione, vai alle impostazioni dell'app e abilitala manualmente.", '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', + "L'autorizzazione di archiviazione è stata negata permanentemente. Per continuare a usare questa funzione, vai alle impostazioni dell'app e abilitala manualmente.", + 'permissionUtilNeed': 'Serve ', + 'permissionUtilPermission': ' autorizzazione', + 'permissionUtilRestricted': ' Autorizzazione limitata', 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'Questa funzione non è disponibile o è limitata sul dispositivo corrente. Controlla le impostazioni del dispositivo o le restrizioni di sistema', 'permissionUtilConfirm': 'OK', // 原生前台服务通知(Android) @@ -1425,27 +1442,27 @@ const Map itIT = { 'bleConnectionFailed': 'Connessione BLE fallita', 'deviceAuthorizationFailedCheckCode': 'Autorizzazione del dispositivo fallita, controlla il codice di autorizzazione', - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + 'bluetoothGuideTitle': 'Attivazione Bluetooth manuale richiesta', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'Segui questi passaggi:', // 请按照以下步骤操作: 'bluetoothGuideStep1': - 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'Abilita Bluetooth: Impostazioni → Bluetooth → Attiva', // 开启蓝牙:设置 → 蓝牙 → 开启 'bluetoothGuideStep2': - 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'Collega dispositivo: trova il tuo dispositivo in “I miei dispositivi” e tocca per collegare', // 连接设备:在"我的设备"中找到您的设备并点击连接 'bluetoothGuideStep3': - 'Return to app to continue pairing process', // 返回应用继续配对流程 + 'Torna all’app per continuare la procedura di associazione', // 返回应用继续配对流程 'bluetoothGuideTip': - 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': 'I Know', // 我知道了 + 'Suggerimento: puoi anche tenere premuta l’icona Bluetooth nel Centro di Controllo per accedere rapidamente alle impostazioni Bluetooth', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + 'iKnow': 'Ho capito', // 我知道了 // 配对模块 - 绑定奖励 - "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:", + "firstBindRewardTitle": "Ricompensa di benvenuto", + "firstBindRewardDesc": "Hai ricevuto le ricompense di associazione.", + "vipLevelLabel": "Livello VIP:", + "expiryLabel": "Scadenza:", + "notActivated": "Non attivato", + "aiChatCreditsLabel": "Crediti AI Chat:", + "translationCreditsLabel": "Crediti di traduzione:", + "meetingCreditsLabel": "Crediti riunioni:", "ok": "OK", // 用户反馈模块 @@ -1476,13 +1493,14 @@ const Map itIT = { "connectionFailed": "Connessione fallita", "retryConnection": "Riprova connessione", "ota_updateNow": "Aggiorna ora", - "otaVersionInfoFailed": "Failed to get version info. Please try again later.", + "otaVersionInfoFailed": + "Impossibile ottenere le informazioni sulla versione. Riprova più tardi.", "otaDeviceInfoUnavailable": - "Unable to get device info. Please check the connection and retry.", + "Impossibile ottenere le informazioni del dispositivo. Controlla la connessione e riprova.", "otaProductInfoUnavailable": - "Unable to identify the device. Please reconnect and retry.", + "Impossibile identificare il dispositivo. Riconnetti e riprova.", "otaFirmwareVersionInvalid": - "Firmware version is abnormal. Please reconnect and retry.", + "La versione firmware non è valida. Riconnetti e riprova.", "keepConnectedDontClose": "Mantieni il dispositivo connesso, non chiudere l'app", "doNotDisconnect": "Non disconnettere", @@ -1509,7 +1527,7 @@ const Map itIT = { 'Connessione BLE richiesta\nAssicurarsi che il dispositivo sia connesso e riprovare', 'otaDeviceInfoUnavailableTitle': 'Info dispositivo non disponibili', 'otaCannotGetDeviceInfo': - 'Cannot get device info\nPlease reconnect device or try again later', + 'Impossibile ottenere le info del dispositivo\nRiconnetti il dispositivo o riprova più tardi', 'otaBleCheckFailed': 'Verifica connessione BLE fallita', 'otaCannotGetDeviceInfoCheckConnection': 'Impossibile ottenere info dispositivo, verificare la connessione', diff --git a/lib/core/translations/language/ja_jp.dart b/lib/core/translations/language/ja_jp.dart index 203ead766..4ae48ee62 100644 --- a/lib/core/translations/language/ja_jp.dart +++ b/lib/core/translations/language/ja_jp.dart @@ -1,3 +1,4 @@ +// 日本-日本語 const Map jaJP = { // 通用 'continue': '続ける', @@ -17,11 +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", + "justNow": "たった今", + "minutesAgo": "@minutes 分前", + "yesterday": "昨日", + "daysAgo": "@days 日前", + "hoursAgo": "@hours 時間前", // 启动页 "slogan": "世界をつなぐ、音声を超えて", @@ -205,55 +206,54 @@ const Map jaJP = { "scene": "シナリオ", // 用量统计模块 - "aiChat": "AI Chat", - "translationStats": "Translation Statistics", - "meetingStats": "Meeting Statistics", - "today": "Today", - "thisWeek": "This Week", - "thisMonth": "This Month", - "history": "History", - "currentSessionStats": "Current Session Stats", - "translationCount": "Translation Count", - "sessionDuration": "Session Duration", - "characters": "Characters", - "recordingDuration": "Recording Duration", - "totalApiCalls": "Total API Calls", - "sessionCount": "Session Count", - "totalCharacters": "Total Characters", - "apiCallStats": "API Call Stats", - "translationApi": "Translation API", + "aiChat": "AIチャット", + "translationStats": "翻訳統計", + "meetingStats": "会議統計", + "today": "今日", + "thisWeek": "今週", + "thisMonth": "今月", + "history": "履歴", + "currentSessionStats": "現在のセッション統計", + "translationCount": "翻訳回数", + "sessionDuration": "セッション時間", + "characters": "文字数", + "recordingDuration": "録音時間", + "totalApiCalls": "API呼び出し総数", + "sessionCount": "セッション数", + "totalCharacters": "総文字数", + "apiCallStats": "API呼び出し統計", + "translationApi": "翻訳API", "asr": "ASR", "tts": "TTS", - "dataVolumeStats": "Data Volume Stats", - "sourceTextCharacters": "Source Text Characters", - "ttsTextCharacters": "TTS Text Characters", - "effectiveAudioDuration": "Effective Audio Duration", - "totalSessionDuration": "Total Session Duration", - "costStats": "Cost Stats", - "estimatedCost": "Estimated Cost", - "dailyCostThreshold": "Daily Cost Threshold", - "monthlyCostThreshold": "Monthly Cost Threshold", - "usageBehaviorStats": "Usage Behavior Stats", - "mostUsedLanguagePair": "Most-used language pair", - "mostUsedMode": "Most-used mode", - "asrApiCalls": "ASR Calls", - "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", - "cleanedOldData": "Cleaned data older than 90 days", - "exportFeature": "Export Feature", - "exportInDevelopment": "Data export is under development", + "dataVolumeStats": "データ量統計", + "sourceTextCharacters": "原文文字数", + "ttsTextCharacters": "TTS文字数", + "effectiveAudioDuration": "有効音声時間", + "totalSessionDuration": "セッション総時間", + "costStats": "コスト統計", + "estimatedCost": "推定コスト", + "dailyCostThreshold": "日次コスト上限", + "monthlyCostThreshold": "月次コスト上限", + "usageBehaviorStats": "利用行動統計", + "mostUsedLanguagePair": "最も使用した言語ペア", + "mostUsedMode": "最も使用したモード", + "asrApiCalls": "ASR呼び出し", + "totalAudioDuration": "総音声時間", + "audioFileSize": "音声ファイルサイズ", + "transcriptBytes": "文字起こしバイト数", + "loadFailed": "読み込み失敗", + "statsLoadFailedTryLater": "統計の読み込みに失敗しました。後でもう一度お試しください。", + "cleanupComplete": "クリーンアップ完了", + "cleanedOldData": "90日以上前のデータをクリーンアップ", + "exportFeature": "データエクスポート", + "exportInDevelopment": "データエクスポートは開発中です", // 商品模块 - 通用 - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', + 'availablePackages': '利用可能なパッケージ', + 'remainingQuota': '残りのクォータ', + 'totalQuota': '総クォータ', + 'remaining': '残り', + 'featureDescription': '機能説明', 'paymentSuccess': '支払い成功', 'paymentFailed': '支払い失敗', 'gotIt': '了解', @@ -309,95 +309,80 @@ const Map jaJP = { '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.', + "insufficientIntegral": "ポイント不足", + "insufficientBalanceDesc": '残高が不足しています。該当のチャージページでチャージしてください。', + "recharge": 'チャージへ', + "aiMemberExpiredDesc": 'AI会員の有効期限が切れています。会員チャージページで更新してください。', // 商品模块 - 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.', + 'musicAndRecommendation': 'ミュージックと推奨', + 'navigationAndRoutes': 'ナビゲーションとルート', + 'nearbySearch': '近隣検索', + 'newsInformation': 'ニュース', + 'communicationAssistant': 'コミュニケーションアシスタント', + 'aiHeaderDesc1': '長期的な会話クォータ、多くのツール呼び出し、拡張されたコンテキスト長。', + 'aiHeaderDesc2': 'エージェントQ&A、要約、分析、タスク実行に最適。', + 'musicSearchPlaybackControl': 'ミュージックライブラリの検索と再生制御', + 'smartPlaylistAndSimilarRecommendations': 'スマートプレイリストと類似のサウンドの推奨', + 'routePlanningAndCongestionAvoidance': 'ルート計画と交通量の回避', + 'voiceBroadcastAndWaypoints': '音声ブロードキャストとワイヤーポイント設定', + 'realTimeWeatherForecast': 'リアルタイム天気と予報', + 'clothingAdviceAndTravelReminders': '服のアドバイスと旅行のリマインダー', + 'poiSearchFoodGasParking': 'POI検索:飲食、ガス、パーキング', + 'ratingsHoursAndDirectRoutes': '評価、営業時間、直接ルート', + 'hotNewsAndTopicOverview': 'ホットニュースとトピック概要', + 'longArticleSummariesAndKeyPoints': '長文要約と主要なポイント', + 'helpCallAndSMS': 'ヘルプ:電話とSMS', + 'templatedMessagesAndScheduleReminders': 'テンプレートメッセージとスケジュールリマインダー', + 'aiDisclaimer': '機能はデバイスの権限、サービスの提供状況、ネットワーク環境により異なります。', // 商品模块 - 翻译商品页 - '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.', + 'realtimeTranscription': 'リアルタイム文字起こし', + 'sceneLexicon': 'シーン用語集', + 'subtitleDisplay': '字幕表示', + '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 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.', + 'meetingRecording': '会議録音', + 'transcriptionAndSummary': '文字起こしと要約', + 'keywordSearch': 'キーワード検索', + 'collaborationSharing': '共同作業と共有', + 'meetingHeaderDesc1': '音声録音、文字起こし、キーワード検索、自動要約で会議効率を向上。', + 'meetingHeaderDesc2': 'ビジネス会議、クラスノート、インタビューの要約に最適。', + 'meetingAutoRecording': '自動録音とセグメント分割', + 'meetingSpeakerTagging': '発言者ラベリング', + 'meetingLongAudioTranscription': '長音声の文字起こし', + 'meetingKeyPointSummary': '主要なポイントの要約', + 'meetingTopicNameSearch': 'トピック/名前で検索', + 'meetingTimelineJump': 'タイムラインジャンプ', + 'meetingExportSummary': '会議要約をエクスポート', + 'meetingMultiPlatformShare': 'マルチプラットフォームで共有', + 'meetingDisclaimer': '静かな環境でご利用ください。性能はマイクとネットワークに依存します。', // 商品模块 - VIP会员页 - 'benefitsOverview': 'Benefits overview', - 'higherQuota': 'Higher usage quota', - 'lowerUnitPrice': 'Lower unit price', - 'priorityService': 'Priority service', - 'exclusiveSupportChannel': 'Dedicated support channel', - 'fastResponse': 'Fast issue response', - 'eventsAndDiscounts': 'Events and discounts', - 'memberExclusiveEvents': 'Member-exclusive events', - 'longTermDiscountPlan': 'Long-term discount plan', - 'generalPrivileges': 'General privileges', - 'earlyAccessNewFeatures': 'Early access to new features', - 'crossDeviceSync': 'Cross-device sync', - 'vipDisclaimer': - 'Actual benefits depend on the package details and may change with versions.', + 'benefitsOverview': '特典概要', + 'higherQuota': 'より多い利用枠', + 'lowerUnitPrice': 'より低い単価', + 'priorityService': '優先サポート', + 'exclusiveSupportChannel': '専用サポート窓口', + 'fastResponse': '迅速な対応', + 'eventsAndDiscounts': 'イベントと割引', + 'memberExclusiveEvents': '会員限定イベント', + 'longTermDiscountPlan': '長期割引プラン', + 'generalPrivileges': '一般特典', + 'earlyAccessNewFeatures': '新機能の先行利用', + 'crossDeviceSync': 'デバイス間同期', + 'vipDisclaimer': '実際の特典はパッケージの詳細により異なり、バージョンアップにより変更される場合があります。', // 商品模块 - 商品名称与描述 'ai_001_name': 'AI Basic 100', @@ -406,18 +391,18 @@ const Map jaJP = { '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).', + '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', @@ -426,40 +411,39 @@ const Map jaJP = { // 新手引导 'skip': "スキップ", - 'next': 'Next', - 'sayLilyHint': "Say \"Lily Lily\" to the mic", - 'imHere': "I’m here~", - 'guideWelcomeWakeAI': "Welcome to Voitrans! First, wake your AI “Lily”.", - 'aiReplyCompleted': "Lily has finished the reply!", - 'aiThinking': "Lily is thinking…", - 'guideAwakenSuccess': "Great! Lily is awake—ask it to help.", - 'confirmInput': "Confirm Input", - 'guideClickSendPrefix': "Tap send, ", - 'guideWeatherStart': "Tell Lily: “What’s the weather today?”", - 'guideWeatherInput': "What’s the weather today?", - 'guideWeatherSend': "Lily will report the weather in real time", - 'guideWeatherEnd': "Lily can report weather live—try other commands", - 'guideMusicStart': "Tell Lily: “Play some rock music”", - 'guideMusicInput': "Play some rock music", - 'guideMusicSend': "Lily will find music for you", - 'guideMusicEnd': "Lily found music—try other commands", - 'guideNavStart': "Tell Lily: “Navigate to Shenzhen Airport”", - 'guideNavInput': "Navigate to Shenzhen Airport", - 'guideNavSend': "Lily will plan the route", - 'guideNavEnd': "Navigation set—try other commands", - 'guideMeetingStart': - "Tell Lily: “Create a meeting reminder for 3pm tomorrow”", - 'guideMeetingInput': "Create a meeting reminder for 3pm tomorrow", - 'guideMeetingSend': "Lily will create a meeting reminder", - 'guideMeetingEnd': "Reminder created—try other commands", - 'guidePhoneStart': "Tell Lily: “Call Mom”", - 'guidePhoneInput': "Call Mom", - 'guidePhoneSend': "Lily will make the call", - 'guidePhoneEnd': "Call placed—try other commands", - 'guideSmsStart': "Tell Lily: “Send Dad a text: I’ll be home for dinner”", - 'guideSmsInput': "Text Dad: I’ll be home for dinner", - 'guideSmsSend': "Lily will send the message", - 'guideSmsEnd': "Message sent—voice control is convenient", + 'next': '次へ', + 'sayLilyHint': "マイクに向かって「Lily Lily」と話してください", + 'imHere': "ここにいるよ~", + 'guideWelcomeWakeAI': "Voitransへようこそ!まずAI「Lily」を起こしましょう。", + 'aiReplyCompleted': "Lily が返信を完了しました!", + 'aiThinking': "Lily が考えています…", + 'guideAwakenSuccess': "素晴らしい!Lily が起きました—ヘルプを求めてください。", + 'confirmInput': "入力を確認", + 'guideClickSendPrefix': "送信をタップしてください、", + 'guideWeatherStart': "Lily に:「今日の天気は?」と話してください", + 'guideWeatherInput': "今日の天気は?", + 'guideWeatherSend': "Lily が実際の天気を報告します", + 'guideWeatherEnd': "Lily が天気をライブで報告できます—他のコマンドを試してください", + 'guideMusicStart': "Lily に:「ロックミュージックを再生して」と話してください", + 'guideMusicInput': "ロックミュージックを再生して", + 'guideMusicSend': "Lily がミュージックを探します", + 'guideMusicEnd': "Lily がミュージックを見つけました—他のコマンドを試してください", + 'guideNavStart': "Lily に:「 Shenzhen Airport に行く」と話してください", + 'guideNavInput': "Shenzhen Airport に行く", + 'guideNavSend': "Lily がルートを計画します", + 'guideNavEnd': "ナビゲーションが設定されました—他のコマンドを試してください", + 'guideMeetingStart': "Lily に:「3時に明日の会議を予定して」と話してください", + 'guideMeetingInput': "3時に明日の会議を予定して", + 'guideMeetingSend': "Lily が会議を予定します", + 'guideMeetingEnd': "会議が予定されました—他のコマンドを試してください", + 'guidePhoneStart': "Lily に:「Mom に電話をかけて」と話してください", + 'guidePhoneInput': "Mom に電話をかけて", + 'guidePhoneSend': "Lily が電話をかけます", + 'guidePhoneEnd': "電話がかかりました—他のコマンドを試してください", + 'guideSmsStart': "Lily に:「Dad にメッセージを送る:会議が終わります」と話してください", + 'guideSmsInput': "Dad にメッセージを送る:会議が終わります", + 'guideSmsSend': "Lily がメッセージを送ります", + 'guideSmsEnd': "メッセージが送られました—音声制御が便利です", // Meeting模块 - 首页与导航 "startMeeting": "会議を開始", @@ -473,38 +457,37 @@ const Map jaJP = { 'recordingDetails': '録音詳細', 'aiSummary': 'AI要約', 'meetingTranscript': '会議記録', - 'files': 'Files', - 'mine': 'Mine', - 'connect': 'Connect', - 'allFiles': 'All Files', - 'searchInAllFiles': 'Search in all files', - 'from': 'From', - 'sortBy': 'Sort by', - 'creationTime': 'Creation Time', - 'bluetoothConnection': 'Bluetooth Connection', - 'meetingReconnect': 'Reconnect', - 'searching': 'Searching...', - 'searchFailed': 'Search failed, please check if Bluetooth is enabled', - 'aiPenNotFound': 'AI PEN device not found', - 'connectedToAiPen': 'Connected to AI PEN device', - 'checkingNewFiles': 'Checking for new files to import', - 'startingWifi': 'Starting Wi-Fi...', - 'newFilesDetected': 'New files detected, preparing to import', - 'noNewFiles': 'No new files to import', - 'connectingWifi': 'Connecting to Wi-Fi...', - 'wifiConnected': 'Wi-Fi connected successfully', - 'downloadingFiles': 'Downloading files...', - 'downloadingFileProgress': 'Total {total} files, downloading file {current}', - 'downloadComplete': 'Download complete', - 'downloadCompleteInfo': - 'Download complete, {count} files in total, returning automatically in 2 seconds', + 'files': 'ファイル', + 'mine': '自分', + 'connect': '接続', + 'allFiles': 'すべてのファイル', + 'searchInAllFiles': 'すべてのファイルを検索', + 'from': 'から', + 'sortBy': '並び替え', + 'creationTime': '作成日時', + 'bluetoothConnection': 'Bluetooth接続', + 'meetingReconnect': '再接続', + 'searching': '検索中...', + 'searchFailed': '検索に失敗しました。Bluetoothが有効か確認してください', + 'aiPenNotFound': 'AI PENデバイスが見つかりません', + 'connectedToAiPen': 'AI PENデバイスに接続しました', + 'checkingNewFiles': 'インポートする新しいファイルを確認中', + 'startingWifi': 'Wi-Fiを開始中...', + 'newFilesDetected': '新しいファイルが検出されました、インポートを準備中', + 'noNewFiles': 'インポートする新しいファイルはありません', + 'connectingWifi': 'Wi‑Fiに接続中...', + 'wifiConnected': 'Wi‑Fiに接続しました', + 'downloadingFiles': 'ファイルをダウンロード中...', + 'downloadingFileProgress': '合計{total}件、{current}件目をダウンロード中', + 'downloadComplete': 'ダウンロード完了', + 'downloadCompleteInfo': 'ダウンロード完了。合計{count}件。2秒後に自動的に戻ります', // Meeting模块 - 录音功能 - 'startRecording': 'Start Recording', - 'liveRecording': 'Live Recording', - 'audioVideoRecording': 'Audio/Video Recording', - 'callRecording': 'Call Recording', - 'importAudio': 'Import Audio', + 'startRecording': '録音開始', + 'liveRecording': 'ライブ録音', + 'audioVideoRecording': '音声/動画録音', + 'callRecording': '通話録音', + 'importAudio': '音声をインポート', 'meetingRecordExitTitle': '録音を終了', // 退出录音 'meetingRecordExitMessage': '終了前に操作を選択してください', // 请选择离开后的操作 'meetingRecordEndAndSave': '終了して保存', // 结束录音并保存 @@ -523,30 +506,30 @@ const Map jaJP = { '録音中に録音フローティングバー(タイマー/一時停止/再開)を表示するため、他のアプリの上に表示する権限が必要です。', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'overlayPermissionOpenSettingsFailed': 'システム設定を自動で開けませんでした。設定を開き、手動で「他のアプリの上に表示」を有効にしてください。', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'transcribing': '音声を翻訳中...', + 'summarizing': '要約中...', + 'analyzing': '分析中...', + 'summaryComplete': '要約が完了しました', + 'generate': '生成', + 'overview': '概要', + 'transcription': '会議記録', + 'summary': '要約', + 'mindMap': 'マインドマップ', + 'editSpeaker': '編集', + 'nameSpeaker': '名前を入力', // Meeting模块 - 转写与总结 - 'reSummarize': 'Re-summarize', - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'reSummarize': '要約を再生成', + 'dateAndTime': '日付と時刻', + 'location': '会議場所', + 'attendees': '参加者', + 'inputLocation': '会議場所を入力', + 'inputAttendees': '参加者を入力', // Meeting模块 - 模版与生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', + 'selectSummaryTemplate': '要約テンプレートを選択', + 'useThisTemplate': 'このテンプレートを使用', + 'lastUsed': '最終使用', 'create': '作成', 'templateDetails': 'テンプレートの詳細', 'tag': 'タグ', @@ -564,158 +547,150 @@ const Map jaJP = { '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.', + '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}', + 'importing': '音声をインポート中...', + 'batchImporting': 'バッチインポート中...', + 'importingLocalRecordings': 'ローカル録音をインポート中...', + 'importFailed': 'ファイルのインポートに失敗しました: {filePath}、エラー: {error}', + 'importSuccess': 'ローカル録音を{count}件インポートしました', + 'importError': 'インポートに失敗しました: {error}', + 'pleaseSelectAudioFile': '音声ファイルを選択してください', + 'shareAudio': '会議音声を共有', + 'shareComplete': '共有が完了しました', + 'shareFailed': '共有に失敗しました: {error}', + 'fileProcessingFailed': 'ファイル処理に失敗しました: {filePath}、エラー: {error}', // Meeting模块 - 思维导图 'saveMindMap': 'マインドマップを保存', - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', + 'shareMindMap': 'マインドマップを共有', + 'shareSuccess': '共有に成功しました', // Meeting模块 - AI问答 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', + 'askAI': 'AIに質問 ...', + 'askAIPrompt': '今日は何をお手伝いできますか?', + 'continueAsk': '続けて質問', 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', + 'extractConclusion': '要約を抽出', + 'generateKeyIndicators': '重要指標を生成', // 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...', + 'shareLink': '共有リンクを共有', + 'copyTranscript': '文字起こしをコピー', + 'copySummary': '要約をコピー', + 'exportAudio': '音声をエクスポート', + 'exportTranscript': '文字起こしをエクスポート', + 'shareMeetingAudio': '会議音声を共有', + 'exportSummary': '要約をエクスポート', + 'exportAs': 'エクスポート形式', + 'exportingPDF': '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', + 'nameCurrentSpeaker': '名前を入力', + 'recentlyUsedNames': '最近使用した名前', + 'applyToCurrentParagraph': 'この段落に適用', + 'totalTime': '総時間', + 'summarySpeakerWillBeUpdatedAutomatically': '要約の話者はテンプレートに基づいて自動的に更新されます', // Meeting模块 - 云端同步 - 'syncToCloud': 'Sync to Cloud', + 'syncToCloud': 'クラウドに同期', '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', + '録音を自動でクラウドに同期します。VOITRANSアプリまたはVOITRANS Web (web.voitrans.com) から再生・管理・共有できます。', + 'syncToVoitransApp': 'VOITRANSアプリに同期', + 'transcriptionRecord': '文字起こし記録', // Meeting模块 - 我的页面 - 'transcriptionRecords': 'Transcription Records', - 'templateCommunity': 'Template Community', - 'comingSoon': 'Coming Soon', - 'integration': 'Integration', + 'transcriptionRecords': '文字起こし記録', + 'templateCommunity': 'テンプレートコミュニティ', + 'comingSoon': '近日公開', + 'integration': '連携', 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', - 'enabled': 'Enabled', - 'disabled': 'Disabled', - 'myVoitransDevice': 'My VOITRANS Device', - 'helpAndFeedback': 'Help & Feedback', - 'aboutVoitrans': 'About VOITRANS', - 'meetingDays': 'Days', - 'meetingHours': 'Hours', + 'enabled': '有効', + 'disabled': '無効', + 'myVoitransDevice': '私のVOITRANSデバイス', + 'helpAndFeedback': 'ヘルプとフィードバック', + 'aboutVoitrans': 'VOITRANSについて', + 'meetingDays': '日', + 'meetingHours': '時間', 'voitransAiMember': 'Voitrans AI Member', 'unlockStarterMember': 'Unlock Starter Member', - 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', - 'unlockNow': 'Unlock Now', + 'bindDeviceToActivate': 'Voitransデバイスを紐付けてStarter会員を有効化', + 'unlockNow': '今すぐ解除', // Meeting模块 - 会员与升级 - 'comparison': 'Comparison', - 'detailedInfo': 'Detailed Information', - 'monthlyTranscriptionTime': 'Monthly Transcription Time', - 'unlimited': 'Unlimited', - 'professionalTemplates': 'Professional Templates', - 'limited': 'Limited', - 'fullTemplates': 'Full Templates', - 'professionalTerms': 'Professional Terms', - 'customTemplates': 'Custom Templates', - 'visualMindMap': 'Visual Mind Map', - 'speakerIdentification': 'Speaker Identification', - 'aiVoiceEnhancement': 'AI Voice Enhancement', - 'audioImport': 'Audio Import', - 'multipleExportFormats': 'Multiple Export Formats', - 'professionalSummaryTemplates': 'Professional Summary Templates', + 'comparison': '比較', + 'detailedInfo': '詳細情報', + 'monthlyTranscriptionTime': '月次文字起こし時間', + 'unlimited': '無制限', + 'professionalTemplates': '専門テンプレート', + 'limited': '制限付き', + 'fullTemplates': '完全テンプレート', + 'professionalTerms': '専門用語', + 'customTemplates': 'カスタムテンプレート', + 'visualMindMap': 'ビジュアルマインドマップ', + 'speakerIdentification': '話者認識', + 'aiVoiceEnhancement': 'AI音声強化', + 'audioImport': 'オーディオインポート', + 'multipleExportFormats': '複数のエクスポート形式', + 'professionalSummaryTemplates': '専門要約テンプレート', 'professionalTemplateDesc': - 'Professional template design to improve your work efficiency. Customized according to industry needs.', - 'customTemplateDesc': - 'You can customize summary prompts according to your needs and use them to generate the required summaries.', + '専門用語を含む専門テンプレートを使用して、作業効率を向上させます。産業分野のニーズに合わせてカスタマイズされます。', + 'customTemplateDesc': '必要に応じて要約プロンプトをカスタマイズし、必要な要約を生成できます。', 'askAiDesc': - 'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.', - 'visualMindMapDesc': - 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', - 'templateCommunityDesc': - 'Discover, share, and get inspiration from the template library created by users.', + '録音から深い情報を賢く抽出し、データ表、議論の要点、To‑Doリスト、報告メールなどのフォーマット済み内容をワンクリックで生成します。', + 'visualMindMapDesc': '要約を超えて、マインドマップを使用して全文の重要な点を視覚的に整理し、より効果的に理解できます。', + 'templateCommunityDesc': 'ユーザーが作成したテンプレートライブラリを探索、共有、インスピレーションを得てください。', 'speakerIdentificationDesc': - 'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.', + '音声文字起こしは話者を認識し、会議や電話会話の内容をより直感的に復元します。また、要約もより正確になります。', 'privateCloudSyncDesc': - 'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.', + '録音と文字起こしは専用クラウドサーバーに安全に保存されます。アップロード/ダウンロード時は完全に暗号化され、プライバシーと安全性を確保します。', 'aiVoiceEnhancementDesc': - 'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.', + 'AI音声強化は、複数のノイズ減少設定をサポートし、背景ノイズを効果的に除去し、声のクリア性を向上させ、音声再生品質を改善します。', 'audioImportDesc': - 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', + 'ローカルまたは第三者アプリケーションから音声ファイルを簡単にインポートできます。例:ボイスメモ、Googleドライブなど。', 'multipleExportFormatsDesc': - 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - 'upgradeMembership': 'Upgrade Your Membership', - 'yearlySubscription': 'Yearly Subscription', - 'monthlySubscription': 'Monthly Subscription', + '音声録音、文字起こしテキスト、要約をさまざまな形式(TXT、PDF、JPEG)でエクスポートできます。', + 'upgradeMembership': '会員をアップグレード', + 'yearlySubscription': '年次サブスクリプション', + 'monthlySubscription': '月次サブスクリプション', 'proMonthly': 'Pro ¥60/month', 'proMonthlyDesc': '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', - 'sevenDayTrial': '7-day Free Trial', - 'unlimitedMonthly': 'Unlimited ¥120/month', - 'unlimitedMonthlyDesc': - '7-day free trial, then ¥1600/year. Cancel anytime before trial ends.', - 'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.', + 'sevenDayTrial': '7日無料試用版', + 'unlimitedMonthly': '無制限 ¥120/month', + 'unlimitedMonthlyDesc': '7日無料試用版、続き ¥1600/year. 試用版終了前にいつでもキャンセルできます。', + 'trialNote': '*7日無料試用版、続き ¥1600/year. 試用版終了前にいつでもキャンセルできます。', 'proPrice': 'Pro ¥120', 'proMonthlyPrice': '¥120/month', - 'subscribe': 'Subscribe', + 'subscribe': 'サブスクリプションを購入', 'unlimitedPrice': 'Unlimited ¥198', 'unlimitedMonthlyPrice': '¥198/month', - 'upgradeNote': - '*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account', - 'buyMoreTranscriptionTime': 'Buy More Transcription Time', + 'upgradeNote': '*会員をアップグレードすると、元のサブスクリプションの残り日数が自動的に計算され、支払いアカウントに返金されます。', + 'buyMoreTranscriptionTime': '文字起こし時間を追加購入', 'sixThousandMinutes': '6,000 minutes', 'threeThousandMinutes': '3,000 minutes', 'sixHundredMinutes': '600 minutes', 'oneHundredTwentyMinutes': '120 minutes', - 'validityPeriod': '*Validity Period: ', - 'validityNote': - 'Activated immediately after purchase, valid for 2 years after activation.', - 'purchase': 'Purchase', + 'validityPeriod': '*有効期間: ', + 'validityNote': '購入後すぐに有効になり、アクティベーション後2年間有効です。', + 'purchase': '購入', // Meeting模块 - 录音语言 - 'recordLanguage': 'Recording Language', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', + 'recordLanguage': '録音言語', + 'cantonese': 'カントーン語', + 'sichuan': '四川話', + 'shanghai': '上海話', // Meeting模块 - 错误提示 - 'meetingUnknownLanguage': 'Unknown Language', + 'meetingUnknownLanguage': '未知の言語', 'analysisFailed': '分析に失敗しました。後でもう一度お試しください', 'transcriptionFailed': '文字起こしに失敗しました。後でもう一度お試しください', 'summaryFailed': '要約に失敗しました。後でもう一度お試しください', @@ -736,10 +711,9 @@ const Map jaJP = { "translationRecharge": "翻訳料金", "meetingAssistantRecharge": "会議アシスタント料金", "cloudSync": "クラウド同期料金", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", - "bindRewardSimpleDesc": - "First bind device reward has been issued. Tap OK to close.", + "memberService": "会員サービス", + "bindRewardTitle": "特典", + "bindRewardSimpleDesc": "初回デバイス紐付けの特典が付与されました。OKをタップして閉じます。", "joinDevice": "接続デバイス:", "accountId": "アカウントID:", "systemSetting": "システム設定", @@ -785,20 +759,19 @@ const Map jaJP = { "loading": '読み込み中...', // 设备管理模块 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", - "deviceTypeSmartEye": "Smart Glasses", + "deviceTypeUnknown": "不明なデバイス", + "deviceTypeClassicBluetoothHeadset": "クラシックBluetoothヘッドセット", + "deviceTypeBleBluetoothHeadset": "BLE Bluetoothヘッドセット", + "deviceTypeSmartVoiceRecorder": "スマート音声レコーダー", + "deviceTypeSmartEye": "スマートグラス", "unbind": "バインド解除", - "noDevicesBound": "No devices bound yet", - "pleaseBindDeviceFirst": "Please bind a device first to manage", - "noMacAddress": "No MAC Address", - "licenseCode": "License Code", - "confirmUnbind": "Confirm Unbind", - "confirmUnbindMessage": - "Are you sure you want to unbind device \"{deviceName}\"?", - "confirmUnbindAction": "Confirm Unbind", + "noDevicesBound": "まだデバイスが紐付けられていません", + "pleaseBindDeviceFirst": "管理するには先にデバイスを紐付けてください", + "noMacAddress": "MACアドレスなし", + "licenseCode": "ライセンスコード", + "confirmUnbind": "紐付け解除を確認", + "confirmUnbindMessage": "デバイス「{deviceName}」の紐付けを解除しますか?", + "confirmUnbindAction": "紐付け解除", // Agent模块 - 主界面 "Lily": "Lily", @@ -828,22 +801,22 @@ const Map jaJP = { "loadMoreMessages": "さらにメッセージを読み込み...", "loadFailedClickRetry": "読み込みに失敗、クリックして再試行", "swipeUpForMore": "上にスワイプしてさらに表示", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 + "callingTool": "処理中です。しばらくお待ちください!", // 正在帮您,请稍等! + "voice_interrupt": "中断", // 语音打断 'voice_interrupt_tip': '有効にすると:AIが話している間はあなたの声で中断されず、一度に1つの会話ラウンドのみ処理できます。新しいラウンドを開始するには、ウェイクアップワードを言ってください。', // Agent模块 - 预设提示词 - "presetMusic": "Play some music", // 来点音乐 - "presetNavigation": "Navigation to", // 导航 - "presetWeather": "Today's weather", // 今日天气 - "presetNews": "Today's news", // 今日新闻 - "presetFood": "Nearby food", // 美食 - "playSomeMusic": "Play some popular music", // 播放一些流行音乐 - "navigationTo": "Please help me navigate to", // 导航到 - "todayWeather": "How's the weather today?", // 今日天气 - "todayNews": "What's the news today?", // 今日新闻 - "nearbyFood": "What delicious food is nearby?", // 美食 + "presetMusic": "音楽をかける", + "presetNavigation": "ナビゲーション", + "presetWeather": "今日の天気", + "presetNews": "今日のニュース", + "presetFood": "近くの飲食店", + "playSomeMusic": "人気の音楽をかけて", + "navigationTo": "ここへ案内", + "todayWeather": "今日の天気は?", + "todayNews": "今日のニュースは?", + "nearbyFood": "近くの美味しいお店は?", // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'こんにちは!私は**Lily**です。以下のことでお手伝いできます:\n\n' @@ -975,8 +948,8 @@ const Map jaJP = { "strongWind": "強風", // 翻译模块 - 中间层 - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", + "pictureTranslation": "画像翻訳", + "textTranslation": "テキスト翻訳", // 翻译模块 - 主页 "translationHistory": "翻訳履歴", @@ -986,11 +959,10 @@ const Map jaJP = { "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", // 自动检测 + "me": "私", + "counterPart": "相手", + "bluetoothCallStateError": "Bluetoothヘッドセットが電話に接続され、通話状態になっていることを確認してください", + "autoDetect": "自動検出", // 自动检测 // 翻译模块 - 悬浮窗与权限 'disableFloatingWindow': 'フローティングウィンドウを無効化', @@ -1000,18 +972,18 @@ const Map jaJP = { 'deleteTranslationRecordError': '翻訳記録の削除中にエラーが発生しました: @error', // 翻译模块 - 文本翻译 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", + "languageDetectionFailed": "言語の検出に失敗しました", + "translationFailed": "翻訳に失敗しました", "translating": "翻訳中", "translate": "翻訳", - "pleaseInputText": "Please input text", + "pleaseInputText": "テキストを入力してください", "inputTextToTranslate": "翻訳するテキストを入力してください", - "textTooLong": "Text too long, max 5000 characters", + "textTooLong": "テキストが長すぎます(最大5000文字)", // 翻译模块 - 历史记录 "noTranslationHistory": "翻訳履歴がありません", - "historyRecords": "History Records", - "clearResults": "Clear Results", + "historyRecords": "履歴記録", + "clearResults": "結果をクリア", "clearHistory": "履歴をクリア", "clearHistoryConfirm": "すべての翻訳履歴をクリアしてもよろしいですか?この操作は元に戻せません。", "unknownLanguage": "不明な言語", @@ -1019,55 +991,52 @@ const Map jaJP = { "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", + "selectImageSource": "画像の取得元を選択", + "imagePreview": "画像プレビュー", + "translationResult": "翻訳結果", + "recognitionResult": "認識結果", + "translatedImagePreview": "翻訳画像プレビュー", + "translatedImageLoadFailed": "翻訳画像の読み込みに失敗しました", + "pleaseSelectImage": "画像を選択してください", + "imageLoadFailed": "画像の読み込みに失敗しました", + "imageQuality": "画像品質", + "maxSize": "最大サイズ", + "close": "閉じる", + "setImageQuality": "画像品質を設定", "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", + "setMaxSize": "最大サイズを設定", "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", + "waitingForAction": "操作待ち", + "pleaseSelectImageToStart": "開始する画像を選択してください", + "chooseImage": "画像を選択", + "openingCamera": "カメラを起動中...", + "openingPhotoAlbum": "フォトアルバムを開いています...", + "cancelled": "キャンセルしました", + "userCancelledSelection": "ユーザーが選択をキャンセルしました", + "translatingImage": "画像を翻訳中", + "callingImageTranslateService": "画像翻訳サービスを呼び出し中...", + "savingRecord": "記録を保存中", + "savingTranslationResult": "翻訳結果を保存中...", + "translationCompleted": "翻訳完了", "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", + "processingFailed": "処理に失敗しました", "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", + "画像処理または翻訳に失敗しました。再試行してください。\nエラー: {error}", + "imageTooLarge": "画像サイズが4MBを超えています", + "imageTooLargeHint": "画像サイズが4MBを超えています。品質を下げるか、解像度を下げて再試行してください", + "emptyTranslationResult": "画像翻訳APIから空の結果が返されました", "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", + "画像翻訳に失敗しました。ネットワーク問題またはレート制限の可能性があります。後でもう一度お試しください", + "imageTranslationApiException": "画像翻訳APIで例外が発生しました。ネットワークを確認して再試行してください", + "permissionRequired": "権限が必要です", + "cameraPermissionRequired": "写真を撮るにはカメラ権限が必要です", + "photoAlbumPermissionRequired": "画像を選ぶには写真アルバム権限が必要です", + "translationDetails": "翻訳詳細", + "originalImage": "元の画像", + "sourceLanguage": "ソース言語", + "targetLanguage": "ターゲット言語", + "translationTime": "翻訳時間", + "shareInDevelopment": "共有機能は開発中です", // 翻译模块 - 录音文件 "translateAudioFiles": "音声ファイルを翻訳", @@ -1150,32 +1119,31 @@ const Map jaJP = { 'accountServiceInitialized': 'AccountServiceが初期化されました', // AccountService 已初始化 // 权限模块 - 'meetingStoragePermission': 'Storage', + 'meetingStoragePermission': 'ストレージ', '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', - 'notificationPermissions': 'Notification Permissions', - 'storagePermissions': 'Storage Permissions', - 'microphonePermissions': 'Microphone Permissions', - 'alarmPermissions': 'Alarm Permissions', + 'bluetoothPermissions': 'Bluetooth権限', + 'notificationPermissions': '通知権限', + 'storagePermissions': 'ストレージ権限', + 'microphonePermissions': 'マイク権限', + 'alarmPermissions': 'アラーム権限', 'calendarPermissions': 'カレンダー権限', 'locationPermissions': '位置情報権限', 'phone': '電話', 'sms': 'SMS', - 'contacts': 'Contacts', - 'notification': 'Notification', - 'alarm': 'Alarm', + 'contacts': '連絡先', + 'notification': '通知', + 'alarm': 'アラーム', 'calendarWrite': 'カレンダー書き込み', 'calendarFullAccess': 'カレンダーフルアクセス', 'locationInfo': '位置情報', 'phonePermissionDesc': '通話機能に使用', 'smsPermissionDesc': 'SMS機能に使用', - 'alarmPermissionDesc': - 'Used to set exact alarms to ensure reminders trigger on time', + 'alarmPermissionDesc': '正確なアラームを設定し、リマインダーが時間どおりに作動するようにします', 'calendarWritePermissionDesc': 'カレンダーイベントとリマインダーの作成に使用', 'calendarFullAccessPermissionDesc': 'カレンダーイベントとリマインダーの読み取りと管理に使用', 'locationPermissionDesc': '現在の位置情報の取得に使用', @@ -1189,68 +1157,56 @@ const Map jaJP = { 'permissionRequestError': '権限要求エラー', 'phonePermissionDetailDesc': '通話機能には電話権限が必要', 'smsPermissionDetailDesc': 'SMS機能にはSMS権限が必要', - 'alarmPermissionDetailDesc': - 'This permission is required to set exact alarms and ensure reminders trigger on time', + 'alarmPermissionDetailDesc': '正確なアラームを設定し、リマインダーが時間どおりに作動するために必要な権限です', 'calendarWritePermissionDetailDesc': 'カレンダーイベントの作成にはカレンダー書き込み権限が必要', 'calendarFullAccessPermissionDetailDesc': 'カレンダーイベントの管理には完全なカレンダー権限が必要', 'locationPermissionDetailDesc': '位置情報の取得には位置情報権限が必要', - 'contactsPermissionDesc': 'Used for accessing contact information', - 'contactsPermissionDetailDesc': - 'Phone call and SMS functionality requires contacts permission to select contacts', - 'bluetoothPermissionDesc': - 'Used for connecting and managing Bluetooth devices', + 'contactsPermissionDesc': '連絡先情報へのアクセスに使用', + 'contactsPermissionDetailDesc': '通話とSMS機能では、連絡先を選択するために連絡先権限が必要です', + 'bluetoothPermissionDesc': 'Bluetoothデバイスの接続と管理に使用', 'bluetoothPermissionDetailDesc': - 'Connecting to Bluetooth headphones and other devices requires Bluetooth permission', - 'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices', + 'Bluetoothヘッドホンなどのデバイスに接続するにはBluetooth権限が必要です', + 'bluetoothScanPermissionDesc': '近くのBluetoothデバイスのスキャンに使用', 'bluetoothScanPermissionDetailDesc': - 'Scanning for nearby Bluetooth devices requires Bluetooth scan permission', - 'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices', + '近くのBluetoothデバイスをスキャンするにはBluetoothスキャン権限が必要です', + 'bluetoothConnectPermissionDesc': 'Bluetoothデバイスへの接続に使用', 'bluetoothConnectPermissionDetailDesc': - 'Connecting to Bluetooth devices requires Bluetooth connect permission', - 'notificationPermissionDesc': 'Used for sending notification messages', - 'notificationPermissionDetailDesc': - 'App needs notification permission to send you important alerts and messages', + 'Bluetoothデバイスに接続するにはBluetooth接続権限が必要です', + 'notificationPermissionDesc': '通知メッセージの送信に使用', + 'notificationPermissionDetailDesc': '重要な通知やメッセージを送るために、アプリは通知権限が必要です', 'appNeedsPermissionForFullFunction': 'アプリは完全な機能のためにこの権限が必要です', 'permanentDenialText': '{permission}権限を永続的に拒否されました。アプリ設定で有効にしてください', 'goToSettings': '設定に移動', - 'bluetoothScan': 'Bluetooth Scan', - 'bluetoothConnect': 'Bluetooth Connect', + 'bluetoothScan': 'Bluetoothスキャン', + 'bluetoothConnect': 'Bluetooth接続', 'bluetoothScanExplanation': - 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', + '近くのBluetoothデバイスをスキャンするために、アプリはBluetoothスキャン権限が必要です。', 'bluetoothConnectExplanation': - 'The app needs Bluetooth connect permission to connect to Bluetooth devices.', - 'locationForBluetoothExplanation': - 'The app needs location permission to scan Bluetooth devices.', + 'Bluetoothデバイスに接続するために、アプリはBluetooth接続権限が必要です。', + 'locationForBluetoothExplanation': 'Bluetoothデバイスをスキャンするために、アプリは位置情報権限が必要です。', 'bluetoothScanPermanentDenial': - 'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.', + 'Bluetoothスキャン権限が永続的に拒否されています。設定で手動で有効にしてください。', 'bluetoothConnectPermanentDenial': - 'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.', - 'locationPermanentDenial': - 'Location permission has been permanently denied, please go to settings to enable it manually.', - 'notificationPermission': 'Notification', - 'locationPermission': 'Location', - 'notificationPermissionExplanation': - 'Notification permission is required to display music playback status.', - '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.', - 'storagePermission': 'Storage', - 'microphonePermissionExplanation': - 'We need microphone permission to record audio content.', - 'storagePermissionExplanation': - 'We need storage permission so you can select and upload audio files.', + 'Bluetooth接続権限が永続的に拒否されています。設定で手動で有効にしてください。', + 'locationPermanentDenial': '位置情報権限が永続的に拒否されています。設定で手動で有効にしてください。', + 'notificationPermission': '通知', + 'locationPermission': '位置情報', + 'notificationPermissionExplanation': '音楽の再生状態を表示するには通知権限が必要です。', + 'locationPermissionExplanation': '現在地を取得するには位置情報権限が必要です。', + 'notificationPermissionPermanentDenial': '通知権限が永続的に拒否されています。設定で有効にしてください。', + 'locationPermissionPermanentDenial': '位置情報権限が永続的に拒否されています。設定で有効にしてください。', + 'storagePermission': 'ストレージ', + 'microphonePermissionExplanation': '音声コンテンツを録音するために、マイク権限が必要です。', + 'storagePermissionExplanation': '音声ファイルを選択してアップロードできるように、ストレージ権限が必要です。', 'microphonePermissionPermanentDenial': - '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', + 'permissionUtilPermission': ' 権限', + 'permissionUtilRestricted': ' 権限が制限されています', 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'この機能は現在のデバイスでは利用できないか制限されています。デバイス設定またはシステム制限を確認してください', 'permissionUtilConfirm': 'OK', // 原生前台服务通知(Android) @@ -1329,27 +1285,26 @@ const Map jaJP = { 'blePairingStartupFailed': 'BLEペアリング開始に失敗', 'bleConnectionFailed': 'BLE接続に失敗', 'deviceAuthorizationFailedCheckCode': 'デバイス承認に失敗しました。承認コードを確認してください', - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + 'bluetoothGuideTitle': 'Bluetoothの手動有効化が必要です', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': '次の手順に従ってください:', // 请按照以下步骤操作: 'bluetoothGuideStep1': - 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'Bluetoothを有効にする: 設定 → Bluetooth → オン', // 开启蓝牙:设置 → 蓝牙 → 开启 'bluetoothGuideStep2': - 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 - 'bluetoothGuideStep3': - 'Return to app to continue pairing process', // 返回应用继续配对流程 + 'デバイスを接続: 「マイデバイス」でデバイスを見つけ、タップして接続', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'bluetoothGuideStep3': 'アプリに戻ってペアリングを続行してください', // 返回应用继续配对流程 'bluetoothGuideTip': - 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': 'I Know', // 我知道了 + 'ヒント:コントロールセンターで Bluetooth アイコンを長押しすると、Bluetooth 設定にすばやくアクセスできます', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + '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:", + "firstBindRewardTitle": "ウェルカム特典", + "firstBindRewardDesc": "バインド特典を受け取りました。", + "vipLevelLabel": "VIP レベル:", + "expiryLabel": "有効期限:", + "notActivated": "未有効", + "aiChatCreditsLabel": "AI チャットクレジット:", + "translationCreditsLabel": "翻訳クレジット:", + "meetingCreditsLabel": "会議クレジット:", "ok": "OK", // 用户反馈模块 @@ -1377,13 +1332,10 @@ const Map jaJP = { "connectionFailed": "接続に失敗", "retryConnection": "接続を再試行", "ota_updateNow": "今すぐ更新", - "otaVersionInfoFailed": "Failed to get version info. Please try again later.", - "otaDeviceInfoUnavailable": - "Unable to get device info. Please check the connection and retry.", - "otaProductInfoUnavailable": - "Unable to identify the device. Please reconnect and retry.", - "otaFirmwareVersionInvalid": - "Firmware version is abnormal. Please reconnect and retry.", + "otaVersionInfoFailed": "バージョン情報の取得に失敗しました。後でもう一度お試しください。", + "otaDeviceInfoUnavailable": "デバイス情報を取得できません。接続を確認して再試行してください。", + "otaProductInfoUnavailable": "デバイスを識別できません。再接続して再試行してください。", + "otaFirmwareVersionInvalid": "ファームウェアのバージョンが異常です。再接続して再試行してください。", "keepConnectedDontClose": "デバイスを接続したままにし、アプリを閉じないでください", "doNotDisconnect": "切断しないでください", "charging": "充電中", @@ -1590,15 +1542,15 @@ const Map jaJP = { "东帝汶": "東ティモール", "斐济": "フィジー", "所罗门群岛": "ソロモン諸島", - "刚果民主共和国": "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 55f6fe0f3..14ce02072 100644 --- a/lib/core/translations/language/ko_kr.dart +++ b/lib/core/translations/language/ko_kr.dart @@ -1,3 +1,4 @@ +// 韩国-韩语 const Map koKR = { // 通用 'continue': '계속', @@ -240,8 +241,7 @@ const Map koKR = { "audioFileSize": "오디오 파일 크기", "transcriptBytes": "전사 바이트 수", "loadFailed": "로드 실패", - "statsLoadFailedTryLater": - "통계를 불러오지 못했습니다. 나중에 다시 시도해 주세요.", + "statsLoadFailedTryLater": "통계를 불러오지 못했습니다. 나중에 다시 시도해 주세요.", "cleanupComplete": "정리 완료", "cleanedOldData": "90일 이전 데이터를 정리했습니다", "exportFeature": "내보내기 기능", @@ -309,11 +309,9 @@ const Map koKR = { 'cannotLaunchAlipayPayment': 'Alipay를 실행할 수 없습니다', 'alipayPaymentException': 'Alipay 예외', "insufficientIntegral": "포인트 부족", - "insufficientBalanceDesc": - '잔액이 부족합니다. 해당 충전 페이지에서 충전해 주세요.', + "insufficientBalanceDesc": '잔액이 부족합니다. 해당 충전 페이지에서 충전해 주세요.', "recharge": '충전하러 가기', - "aiMemberExpiredDesc": - 'AI 멤버십이 만료되었습니다. 멤버십 충전 페이지에서 갱신해 주세요.', + "aiMemberExpiredDesc": 'AI 멤버십이 만료되었습니다. 멤버십 충전 페이지에서 갱신해 주세요.', // 商品模块 - AI商品页 'musicAndRecommendation': '음악 및 추천', @@ -321,15 +319,11 @@ const Map koKR = { 'nearbySearch': '주변 검색', 'newsInformation': '뉴스', 'communicationAssistant': '커뮤니케이션 어시스턴트', - 'aiHeaderDesc1': - '더 긴 대화 한도, 더 많은 도구 호출, 확장된 컨텍스트 길이.', - 'aiHeaderDesc2': - '에이전트 Q&A, 요약, 분석 및 작업 실행에 적합합니다.', + 'aiHeaderDesc1': '더 긴 대화 한도, 더 많은 도구 호출, 확장된 컨텍스트 길이.', + 'aiHeaderDesc2': '에이전트 Q&A, 요약, 분석 및 작업 실행에 적합합니다.', 'musicSearchPlaybackControl': '음악 라이브러리 검색 및 재생 제어', - 'smartPlaylistAndSimilarRecommendations': - '스마트 재생목록 및 유사 곡 추천', - 'routePlanningAndCongestionAvoidance': - '경로 계획 및 정체 구간 우회', + 'smartPlaylistAndSimilarRecommendations': '스마트 재생목록 및 유사 곡 추천', + 'routePlanningAndCongestionAvoidance': '경로 계획 및 정체 구간 우회', 'voiceBroadcastAndWaypoints': '음성 안내 및 경유지 설정', 'realTimeWeatherForecast': '실시간 날씨 및 예보', 'clothingAdviceAndTravelReminders': '의류 조언 및 여행 알림', @@ -338,10 +332,8 @@ const Map koKR = { 'hotNewsAndTopicOverview': '인기 뉴스 및 주제 개요', 'longArticleSummariesAndKeyPoints': '긴 기사 요약 및 핵심 포인트', 'helpCallAndSMS': '전화 및 문자 도움', - 'templatedMessagesAndScheduleReminders': - '템플릿 메시지 및 일정 알림', - 'aiDisclaimer': - '기능은 기기 권한, 서비스 가용성 및 네트워크 상태에 따라 달라집니다.', + 'templatedMessagesAndScheduleReminders': '템플릿 메시지 및 일정 알림', + 'aiDisclaimer': '기능은 기기 권한, 서비스 가용성 및 네트워크 상태에 따라 달라집니다.', // 商品模块 - 翻译商品页 'realtimeTranscription': '실시간 받아쓰기', @@ -364,10 +356,8 @@ const Map koKR = { 'transcriptionAndSummary': '전사 및 요약', 'keywordSearch': '키워드 검색', 'collaborationSharing': '협업 및 공유', - 'meetingHeaderDesc1': - '오디오 녹음, 전사, 키워드 검색 및 자동 요약.', - 'meetingHeaderDesc2': - '비즈니스 회의, 수업 필기 및 인터뷰 회의록에 적합합니다.', + 'meetingHeaderDesc1': '오디오 녹음, 전사, 키워드 검색 및 자동 요약.', + 'meetingHeaderDesc2': '비즈니스 회의, 수업 필기 및 인터뷰 회의록에 적합합니다.', 'meetingAutoRecording': '자동 녹음 및 분할', 'meetingSpeakerTagging': '발언자 태깅', 'meetingLongAudioTranscription': '장시간 오디오 전사', @@ -376,8 +366,7 @@ const Map koKR = { 'meetingTimelineJump': '타임라인 이동', 'meetingExportSummary': '회의록 내보내기', 'meetingMultiPlatformShare': '멀티 플랫폼 공유', - 'meetingDisclaimer': - '조용한 환경에서 사용하세요. 성능은 마이크와 네트워크에 따라 달라집니다.', + 'meetingDisclaimer': '조용한 환경에서 사용하세요. 성능은 마이크와 네트워크에 따라 달라집니다.', // 商品模块 - VIP会员页 'benefitsOverview': '혜택 개요', @@ -442,8 +431,7 @@ const Map koKR = { 'guideNavInput': "선전 공항으로 안내해줘", 'guideNavSend': "Lily가 경로를 계획할 거예요", 'guideNavEnd': "내비게이션이 설정되었어요—다른 명령도 시도해 보세요", - 'guideMeetingStart': - "Lily에게 말하세요: “내일 오후 3시 회의 알림 만들어줘”", + 'guideMeetingStart': "Lily에게 말하세요: “내일 오후 3시 회의 알림 만들어줘”", 'guideMeetingInput': "내일 오후 3시 회의 알림 만들어줘", 'guideMeetingSend': "Lily가 회의 알림을 만들어드릴 거예요", 'guideMeetingEnd': "알림이 생성되었어요—다른 명령도 시도해 보세요", @@ -491,8 +479,7 @@ const Map koKR = { 'downloadingFiles': '파일 다운로드 중...', 'downloadingFileProgress': '총 {total}개 파일 중 {current}번째 다운로드 중', 'downloadComplete': '다운로드 완료', - 'downloadCompleteInfo': - '다운로드 완료, 총 {count}개 파일, 2초 후 자동으로 돌아갑니다', + 'downloadCompleteInfo': '다운로드 완료, 총 {count}개 파일, 2초 후 자동으로 돌아갑니다', // Meeting模块 - 录音功能 'startRecording': '녹음 시작', @@ -563,8 +550,7 @@ const Map koKR = { 'chineseSimplified': '중국어 보통화(간체)', 'meetingGenerateNow': '지금 생성', 'keyEventsAnalyzed': '{count}개의 주요 이벤트를 분석했습니다.', - 'aiAnalysisDesc': - 'AI 분석으로 녹음에서 주요 이벤트를 식별하고, 중요한 이벤트를 선택하여 AI로 생성할 수 있습니다.', + 'aiAnalysisDesc': 'AI 분석으로 녹음에서 주요 이벤트를 식별하고, 중요한 이벤트를 선택하여 AI로 생성할 수 있습니다.', // Meeting模块 - 文件操作 'importing': '가져오는 중...', @@ -611,8 +597,7 @@ const Map koKR = { 'recentlyUsedNames': '최근 사용한 이름', 'applyToCurrentParagraph': '현재 문단에 적용', 'totalTime': '총 시간', - 'summarySpeakerWillBeUpdatedAutomatically': - '요약의 발언자가 자동으로 업데이트됩니다', + 'summarySpeakerWillBeUpdatedAutomatically': '요약의 발언자가 자동으로 업데이트됩니다', // Meeting模块 - 云端同步 'syncToCloud': '클라우드에 동기화', @@ -655,52 +640,44 @@ const Map koKR = { 'audioImport': '오디오 가져오기', 'multipleExportFormats': '다양한 내보내기 형식', 'professionalSummaryTemplates': '전문 요약 템플릿', - 'professionalTemplateDesc': - '업무 효율성을 높이는 전문 템플릿 디자인. 업종별 요구에 맞춰 맞춤 제작됩니다.', - 'customTemplateDesc': - '필요에 따라 요약 프롬프트를 맞춤 설정하고, 이를 사용하여 필요한 요약을 생성할 수 있습니다.', + 'professionalTemplateDesc': '업무 효율성을 높이는 전문 템플릿 디자인. 업종별 요구에 맞춰 맞춤 제작됩니다.', + 'customTemplateDesc': '필요에 따라 요약 프롬프트를 맞춤 설정하고, 이를 사용하여 필요한 요약을 생성할 수 있습니다.', 'askAiDesc': '녹음에서 심층 정보를 지능적으로 추출하고, 데이터 표, 주요 논의 결론, 할 일 목록, 보고서 이메일 등 서식화된 콘텐츠를 원클릭으로 생성합니다.', 'visualMindMapDesc': '요약을 넘어서 마인드맵으로 핵심 사항을 정리하고 시각화하여 전체 내용을 더 효과적으로 이해할 수 있습니다.', - 'templateCommunityDesc': - '사용자들이 만든 템플릿 라이브러리에서 영감을 발견하고 공유하세요.', + 'templateCommunityDesc': '사용자들이 만든 템플릿 라이브러리에서 영감을 발견하고 공유하세요.', 'speakerIdentificationDesc': '오디오 전사에서 발언자 식별을 지원하여 회의 또는 통화 내용을 더 직관적으로 복원합니다. 동시에 요약의 정확도도 향상됩니다.', 'privateCloudSyncDesc': '녹음과 전사 내용이 전용 클라우드 서버에 안전하게 저장되며, 업로드 및 다운로드 시 완전히 암호화되어 개인정보와 보안을 보장합니다.', 'aiVoiceEnhancementDesc': 'AI 음성 향상은 다양한 노이즈 감소 설정을 지원하여 배경 소음을 지능적으로 제거하고, 음성 선명도를 높이며, 오디오 재생 품질을 향상시킵니다.', - 'audioImportDesc': - '음성 메모, Google 드라이브 등 로컬 또는 타사 앱에서 오디오 파일을 쉽게 가져올 수 있습니다.', + 'audioImportDesc': '음성 메모, Google 드라이브 등 로컬 또는 타사 앱에서 오디오 파일을 쉽게 가져올 수 있습니다.', 'multipleExportFormatsDesc': '오디오 녹음, 전사 텍스트 및 요약을 다양한 형식(TXT, PDF, JPEG)으로 내보내 필요에 맞게 활용하세요.', 'upgradeMembership': '멤버십 업그레이드', 'yearlySubscription': '연간 구독', 'monthlySubscription': '월간 구독', 'proMonthly': 'Pro ¥60/월', - 'proMonthlyDesc': - '7일 무료 체험 후 ¥800/년. 체험 기간 종료 전 언제든지 취소 가능.', + 'proMonthlyDesc': '7일 무료 체험 후 ¥800/년. 체험 기간 종료 전 언제든지 취소 가능.', 'sevenDayTrial': '7일 무료 체험', 'unlimitedMonthly': 'Unlimited ¥120/월', - 'unlimitedMonthlyDesc': - '7일 무료 체험 후 ¥1600/년. 체험 기간 종료 전 언제든지 취소 가능.', + 'unlimitedMonthlyDesc': '7일 무료 체험 후 ¥1600/년. 체험 기간 종료 전 언제든지 취소 가능.', 'trialNote': '*7일 무료 체험 후 연간 결제, 언제든지 취소 가능.', 'proPrice': 'Pro ¥120', 'proMonthlyPrice': '¥120/월', 'subscribe': '구독', 'unlimitedPrice': 'Unlimited ¥198', 'unlimitedMonthlyPrice': '¥198/월', - 'upgradeNote': - '*구독 업그레이드 시, 기존 구독의 잔여 기간이 자동으로 계산되어 결제 계정으로 환불됩니다', + 'upgradeNote': '*구독 업그레이드 시, 기존 구독의 잔여 기간이 자동으로 계산되어 결제 계정으로 환불됩니다', 'buyMoreTranscriptionTime': '전사 시간 추가 구매', 'sixThousandMinutes': '6,000분', 'threeThousandMinutes': '3,000분', 'sixHundredMinutes': '600분', 'oneHundredTwentyMinutes': '120분', 'validityPeriod': '*유효 기간: ', - 'validityNote': - '구매 후 즉시 활성화되며, 활성화 후 2년간 유효합니다.', + 'validityNote': '구매 후 즉시 활성화되며, 활성화 후 2년간 유효합니다.', 'purchase': '구매', // Meeting模块 - 录音语言 @@ -733,8 +710,7 @@ const Map koKR = { "cloudSync": "클라우드 동기화료", "memberService": "멤버 서비스", "bindRewardTitle": "리워드", - "bindRewardSimpleDesc": - "첫 기기 연결 보상이 지급되었습니다. 확인을 탭하여 닫으세요.", + "bindRewardSimpleDesc": "첫 기기 연결 보상이 지급되었습니다. 확인을 탭하여 닫으세요.", "joinDevice": "연결된 기기:", "accountId": "계정 ID:", "systemSetting": "시스템 설정", @@ -791,8 +767,7 @@ const Map koKR = { "noMacAddress": "MAC 주소 없음", "licenseCode": "라이선스 코드", "confirmUnbind": "연결 해제 확인", - "confirmUnbindMessage": - "\"{deviceName}\" 기기의 연결을 해제하시겠습니까?", + "confirmUnbindMessage": "\"{deviceName}\" 기기의 연결을 해제하시겠습니까?", "confirmUnbindAction": "연결 해제 확인", // Agent模块 - 主界面 @@ -983,8 +958,7 @@ const Map koKR = { "selectTargetLanguage": "대상 언어 선택", "me": "나", "counterPart": "상대방", - "bluetoothCallStateError": - "블루투스 헤드셋이 휴대폰에 연결되어 있고 통화 중인지 확인해 주세요", + "bluetoothCallStateError": "블루투스 헤드셋이 휴대폰에 연결되어 있고 통화 중인지 확인해 주세요", "autoDetect": "자동 감지", // 自动检测 // 翻译模块 - 悬浮窗与权限 @@ -1046,17 +1020,14 @@ const Map koKR = { "imageProcessingOrTranslationFailed": "이미지 처리 또는 번역에 실패했습니다. 다시 시도해 주세요.\nError: {error}", "imageTooLarge": "이미지 크기가 4MB 제한을 초과합니다", - "imageTooLargeHint": - "이미지 크기가 4MB를 초과합니다. 품질이나 크기를 줄인 후 다시 시도해 주세요", + "imageTooLargeHint": "이미지 크기가 4MB를 초과합니다. 품질이나 크기를 줄인 후 다시 시도해 주세요", "emptyTranslationResult": "이미지 번역 API가 빈 결과를 반환했습니다", "imageTranslationFailedTryLater": "이미지 번역 실패. 네트워크 문제 또는 요청 제한입니다. 나중에 다시 시도해 주세요", - "imageTranslationApiException": - "이미지 번역 API 예외. 네트워크를 확인하고 다시 시도해 주세요", + "imageTranslationApiException": "이미지 번역 API 예외. 네트워크를 확인하고 다시 시도해 주세요", "permissionRequired": "권한 필요", "cameraPermissionRequired": "사진 촬영에는 카메라 권한이 필요합니다", - "photoAlbumPermissionRequired": - "이미지를 선택하려면 사진 앨범 권한이 필요합니다", + "photoAlbumPermissionRequired": "이미지를 선택하려면 사진 앨범 권한이 필요합니다", "translationDetails": "번역 상세", "originalImage": "원본 이미지", "sourceLanguage": "원본 언어", @@ -1145,8 +1116,7 @@ const Map koKR = { // 权限模块 'meetingStoragePermission': '저장소', - 'meetingStoragePermissionExplanation': - '오디오 파일을 선택하고 업로드하려면 저장소 권한이 필요합니다.', + 'meetingStoragePermissionExplanation': '오디오 파일을 선택하고 업로드하려면 저장소 권한이 필요합니다.', 'meetingStoragePermissionPermanentDenial': '저장소 권한을 영구적으로 거부하셨습니다. 이 기능을 계속 사용하려면 앱 설정에서 저장소 권한을 수동으로 활성화해 주세요.', 'getPermissionStatusFailed': '권한 상태 가져오기 실패', @@ -1168,8 +1138,7 @@ const Map koKR = { 'locationInfo': '위치 정보', 'phonePermissionDesc': '전화 걸기 기능에 사용됩니다', 'smsPermissionDesc': '문자 보내기 기능에 사용됩니다', - 'alarmPermissionDesc': - '정확한 알람을 설정하여 알림이 정시에 울리도록 하는 데 사용됩니다', + 'alarmPermissionDesc': '정확한 알람을 설정하여 알림이 정시에 울리도록 하는 데 사용됩니다', 'calendarWritePermissionDesc': '캘린더 이벤트 및 알림 생성에 사용됩니다', 'calendarFullAccessPermissionDesc': '캘린더 이벤트 및 알림 읽기 및 관리에 사용됩니다', 'locationPermissionDesc': '현재 위치 정보 가져오기에 사용됩니다', @@ -1183,59 +1152,43 @@ const Map koKR = { 'permissionRequestError': '권한 요청 중 오류 발생', 'phonePermissionDetailDesc': '전화 걸기 기능에는 전화 권한이 필요합니다', 'smsPermissionDetailDesc': '문자 보내기 기능에는 문자 권한이 필요합니다', - 'alarmPermissionDetailDesc': - '정확한 알람을 설정하고 알림이 정시에 울리도록 하려면 이 권한이 필요합니다', + 'alarmPermissionDetailDesc': '정확한 알람을 설정하고 알림이 정시에 울리도록 하려면 이 권한이 필요합니다', 'calendarWritePermissionDetailDesc': '캘린더 이벤트 생성에는 캘린더 쓰기 권한이 필요합니다', 'calendarFullAccessPermissionDetailDesc': '캘린더 이벤트 관리에는 전체 캘린더 권한이 필요합니다', 'locationPermissionDetailDesc': '위치 정보 가져오기에는 위치 권한이 필요합니다', 'contactsPermissionDesc': '연락처 정보에 접근하는 데 사용됩니다', - 'contactsPermissionDetailDesc': - '전화 및 문자 기능에는 연락처를 선택하기 위해 연락처 권한이 필요합니다', - 'bluetoothPermissionDesc': - '블루투스 기기 연결 및 관리에 사용됩니다', - 'bluetoothPermissionDetailDesc': - '블루투스 헤드폰 및 기타 기기에 연결하려면 블루투스 권한이 필요합니다', + 'contactsPermissionDetailDesc': '전화 및 문자 기능에는 연락처를 선택하기 위해 연락처 권한이 필요합니다', + 'bluetoothPermissionDesc': '블루투스 기기 연결 및 관리에 사용됩니다', + 'bluetoothPermissionDetailDesc': '블루투스 헤드폰 및 기타 기기에 연결하려면 블루투스 권한이 필요합니다', 'bluetoothScanPermissionDesc': '주변 블루투스 기기 검색에 사용됩니다', - 'bluetoothScanPermissionDetailDesc': - '주변 블루투스 기기를 검색하려면 블루투스 검색 권한이 필요합니다', + 'bluetoothScanPermissionDetailDesc': '주변 블루투스 기기를 검색하려면 블루투스 검색 권한이 필요합니다', 'bluetoothConnectPermissionDesc': '블루투스 기기 연결에 사용됩니다', - 'bluetoothConnectPermissionDetailDesc': - '블루투스 기기에 연결하려면 블루투스 연결 권한이 필요합니다', + 'bluetoothConnectPermissionDetailDesc': '블루투스 기기에 연결하려면 블루투스 연결 권한이 필요합니다', 'notificationPermissionDesc': '알림 메시지 전송에 사용됩니다', - 'notificationPermissionDetailDesc': - '중요한 알림과 메시지를 보내려면 알림 권한이 필요합니다', + 'notificationPermissionDetailDesc': '중요한 알림과 메시지를 보내려면 알림 권한이 필요합니다', 'appNeedsPermissionForFullFunction': '앱이 전체 기능을 제공하려면 이 권한이 필요합니다', 'permanentDenialText': '{permission} 권한을 영구적으로 거부하셨습니다. 앱 설정에서 활성화해주세요', 'goToSettings': '설정으로 이동', 'bluetoothScan': '블루투스 검색', 'bluetoothConnect': '블루투스 연결', - 'bluetoothScanExplanation': - '앱이 주변 블루투스 기기를 검색하려면 블루투스 검색 권한이 필요합니다.', - 'bluetoothConnectExplanation': - '앱이 블루투스 기기에 연결하려면 블루투스 연결 권한이 필요합니다.', - 'locationForBluetoothExplanation': - '앱이 블루투스 기기를 검색하려면 위치 권한이 필요합니다.', + 'bluetoothScanExplanation': '앱이 주변 블루투스 기기를 검색하려면 블루투스 검색 권한이 필요합니다.', + 'bluetoothConnectExplanation': '앱이 블루투스 기기에 연결하려면 블루투스 연결 권한이 필요합니다.', + 'locationForBluetoothExplanation': '앱이 블루투스 기기를 검색하려면 위치 권한이 필요합니다.', 'bluetoothScanPermanentDenial': '블루투스 검색 권한이 영구적으로 거부되었습니다. 설정에서 수동으로 활성화해 주세요.', 'bluetoothConnectPermanentDenial': '블루투스 연결 권한이 영구적으로 거부되었습니다. 설정에서 수동으로 활성화해 주세요.', - 'locationPermanentDenial': - '위치 권한이 영구적으로 거부되었습니다. 설정에서 수동으로 활성화해 주세요.', + 'locationPermanentDenial': '위치 권한이 영구적으로 거부되었습니다. 설정에서 수동으로 활성화해 주세요.', 'notificationPermission': '알림', 'locationPermission': '위치', - 'notificationPermissionExplanation': - '음악 재생 상태를 표시하려면 알림 권한이 필요합니다.', - 'locationPermissionExplanation': - '현재 위치를 가져오려면 위치 권한이 필요합니다.', + 'notificationPermissionExplanation': '음악 재생 상태를 표시하려면 알림 권한이 필요합니다.', + 'locationPermissionExplanation': '현재 위치를 가져오려면 위치 권한이 필요합니다.', 'notificationPermissionPermanentDenial': '알림 권한을 영구적으로 거부하셨습니다. 설정에서 활성화해 주세요.', - 'locationPermissionPermanentDenial': - '위치 권한을 영구적으로 거부하셨습니다. 설정에서 활성화해 주세요.', + 'locationPermissionPermanentDenial': '위치 권한을 영구적으로 거부하셨습니다. 설정에서 활성화해 주세요.', 'storagePermission': '저장소', - 'microphonePermissionExplanation': - '오디오 콘텐츠를 녹음하려면 마이크 권한이 필요합니다.', - 'storagePermissionExplanation': - '오디오 파일을 선택하고 업로드하려면 저장소 권한이 필요합니다.', + 'microphonePermissionExplanation': '오디오 콘텐츠를 녹음하려면 마이크 권한이 필요합니다.', + 'storagePermissionExplanation': '오디오 파일을 선택하고 업로드하려면 저장소 권한이 필요합니다.', 'microphonePermissionPermanentDenial': '마이크 권한이 영구적으로 거부되었습니다. 이 기능을 계속 사용하려면 앱 설정에서 마이크 권한을 수동으로 활성화해 주세요.', 'storagePermissionPermanentDenial': @@ -1325,12 +1278,10 @@ const Map koKR = { 'deviceAuthorizationFailedCheckCode': '기기 인증 실패, 인증 코드를 확인하세요', 'bluetoothGuideTitle': '수동 블루투스 활성화 필요', // 需要手动开启蓝牙 'bluetoothGuideSteps': '다음 단계를 따라 주세요:', // 请按照以下步骤操作: - 'bluetoothGuideStep1': - '블루투스 켜기: 설정 → 블루투스 → 켜기', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'bluetoothGuideStep1': '블루투스 켜기: 설정 → 블루투스 → 켜기', // 开启蓝牙:设置 → 蓝牙 → 开启 'bluetoothGuideStep2': '기기 연결: "나의 기기"에서 기기를 찾아 탭하여 연결', // 连接设备:在"我的设备"中找到您的设备并点击连接 - 'bluetoothGuideStep3': - '앱으로 돌아와서 페어링 과정을 계속하세요', // 返回应用继续配对流程 + 'bluetoothGuideStep3': '앱으로 돌아와서 페어링 과정을 계속하세요', // 返回应用继续配对流程 'bluetoothGuideTip': '팁: 제어 센터에서 블루투스 아이콘을 길게 눌러 블루투스 설정에 빠르게 접근할 수도 있습니다', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': '알겠습니다', // 我知道了 @@ -1372,12 +1323,9 @@ const Map koKR = { "retryConnection": "연결 재시도", "ota_updateNow": "지금 업데이트", "otaVersionInfoFailed": "버전 정보를 가져오지 못했습니다. 나중에 다시 시도해 주세요.", - "otaDeviceInfoUnavailable": - "기기 정보를 가져올 수 없습니다. 연결을 확인하고 다시 시도해 주세요.", - "otaProductInfoUnavailable": - "기기를 식별할 수 없습니다. 다시 연결하고 시도해 주세요.", - "otaFirmwareVersionInvalid": - "펌웨어 버전이 비정상입니다. 다시 연결하고 시도해 주세요.", + "otaDeviceInfoUnavailable": "기기 정보를 가져올 수 없습니다. 연결을 확인하고 다시 시도해 주세요.", + "otaProductInfoUnavailable": "기기를 식별할 수 없습니다. 다시 연결하고 시도해 주세요.", + "otaFirmwareVersionInvalid": "펌웨어 버전이 비정상입니다. 다시 연결하고 시도해 주세요.", "keepConnectedDontClose": "기기를 연결된 상태로 유지하고 앱을 닫지 마세요", "doNotDisconnect": "연결을 끊지 마세요", "charging": "충전 중", diff --git a/lib/core/translations/language/lt_lt.dart b/lib/core/translations/language/lt_lt.dart index dc40a5a55..e2bdf14d4 100644 --- a/lib/core/translations/language/lt_lt.dart +++ b/lib/core/translations/language/lt_lt.dart @@ -18,11 +18,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", + "justNow": "Ką tik", + "minutesAgo": "Prieš @minutes min.", + "yesterday": "Vakar", + "daysAgo": "Prieš @days d.", + "hoursAgo": "Prieš @hours val.", // 启动页 "slogan": "Jungiantis pasaulį, anapus garso", @@ -169,27 +169,27 @@ const Map ltLT = { 'checkConnectionStatusFailed': 'Nepavyko patikrinti ryšio būsenos', // 蓝牙扫描模块 - 'bleInitFailedWithError': 'Bluetooth initialization failed: @error', + 'bleInitFailedWithError': 'Nepavyko inicijuoti Bluetooth: @error', 'needBluetoothAndLocationPermission': - 'Bluetooth and location permissions are required to scan devices', - 'permissionRequestFailedWithError': 'Permission request failed: @error', - 'needPermission': 'Permission Required', + 'Norint nuskaityti įrenginius, reikalingi Bluetooth ir vietovės leidimai', + 'permissionRequestFailedWithError': 'Nepavyko gauti leidimų: @error', + 'needPermission': 'Reikalingas leidimas', 'blePermissionDialogContent': - 'This app requires Bluetooth and location permissions to scan devices. Please enable them in Settings.', - 'needEnableBluetooth': 'Enable Bluetooth', + 'Šiai programai reikia Bluetooth ir vietovės leidimų, kad galėtų nuskaityti įrenginius. Įjunkite juos nustatymuose.', + 'needEnableBluetooth': 'Įjungti Bluetooth', 'enableBluetoothDialogContent': - 'Please enable Bluetooth to scan and connect devices.', - 'bleScanFailedWithError': 'Scan failed: @error', - 'bleConnectionSuccess': 'Connection Successful', - 'bleConnectedToDevice': 'Connected to @device', - 'bleConnectionFailedWithError': 'Connection failed: @error', - 'bleDisconnected': 'Disconnected', - 'bleDeviceDisconnected': 'Device disconnected', - 'bleDisconnectFailedWithError': 'Disconnect failed: @error', - 'signalStrong': 'Strong', - 'signalMedium': 'Medium', - 'signalWeak': 'Weak', - 'signalVeryWeak': 'Very Weak', + 'Įjunkite Bluetooth, kad galėtumėte nuskaityti ir prijungti įrenginius.', + 'bleScanFailedWithError': 'Nuskaitymas nepavyko: @error', + 'bleConnectionSuccess': 'Sėkmingai prijungta', + 'bleConnectedToDevice': 'Prisijungta prie @device', + 'bleConnectionFailedWithError': 'Prisijungimas nepavyko: @error', + 'bleDisconnected': 'Atjungta', + 'bleDeviceDisconnected': 'Įrenginys atjungtas', + 'bleDisconnectFailedWithError': 'Atjungimas nepavyko: @error', + 'signalStrong': 'Stiprus', + 'signalMedium': 'Vidutinis', + 'signalWeak': 'Silpnas', + 'signalVeryWeak': 'Labai silpnas', // 发现页 "searchAi": "Ieškoti AI funkcijų...", @@ -218,55 +218,55 @@ const Map ltLT = { "scene": "Scenarijus", // 用量统计模块 - "aiChat": "AI Chat", - "translationStats": "Translation Statistics", - "meetingStats": "Meeting Statistics", - "today": "Today", - "thisWeek": "This Week", - "thisMonth": "This Month", - "history": "History", - "currentSessionStats": "Current Session Stats", - "translationCount": "Translation Count", - "sessionDuration": "Session Duration", - "characters": "Characters", - "recordingDuration": "Recording Duration", - "totalApiCalls": "Total API Calls", - "sessionCount": "Session Count", - "totalCharacters": "Total Characters", - "apiCallStats": "API Call Stats", - "translationApi": "Translation API", + "aiChat": "AI pokalbis", + "translationStats": "Vertimo statistika", + "meetingStats": "Susitikimų statistika", + "today": "Šiandien", + "thisWeek": "Šią savaitę", + "thisMonth": "Šį mėnesį", + "history": "Istorija", + "currentSessionStats": "Dabartinės sesijos statistika", + "translationCount": "Vertimų skaičius", + "sessionDuration": "Sesijos trukmė", + "characters": "Simboliai", + "recordingDuration": "Įrašymo trukmė", + "totalApiCalls": "Iš viso API iškvietimų", + "sessionCount": "Sesijų skaičius", + "totalCharacters": "Iš viso simbolių", + "apiCallStats": "API iškvietimų statistika", + "translationApi": "Vertimo API", "asr": "ASR", "tts": "TTS", - "dataVolumeStats": "Data Volume Stats", - "sourceTextCharacters": "Source Text Characters", - "ttsTextCharacters": "TTS Text Characters", - "effectiveAudioDuration": "Effective Audio Duration", - "totalSessionDuration": "Total Session Duration", - "costStats": "Cost Stats", - "estimatedCost": "Estimated Cost", - "dailyCostThreshold": "Daily Cost Threshold", - "monthlyCostThreshold": "Monthly Cost Threshold", - "usageBehaviorStats": "Usage Behavior Stats", - "mostUsedLanguagePair": "Most-used language pair", - "mostUsedMode": "Most-used mode", - "asrApiCalls": "ASR Calls", - "totalAudioDuration": "Total Audio Duration", - "audioFileSize": "Audio File Size", - "transcriptBytes": "Transcript Bytes", - "loadFailed": "Load Failed", + "dataVolumeStats": "Duomenų kiekio statistika", + "sourceTextCharacters": "Šaltinio teksto simboliai", + "ttsTextCharacters": "TTS teksto simboliai", + "effectiveAudioDuration": "Efektyvi garso trukmė", + "totalSessionDuration": "Bendra sesijų trukmė", + "costStats": "Išlaidų statistika", + "estimatedCost": "Numatomos išlaidos", + "dailyCostThreshold": "Dienos išlaidų riba", + "monthlyCostThreshold": "Mėnesio išlaidų riba", + "usageBehaviorStats": "Naudojimo elgsenos statistika", + "mostUsedLanguagePair": "Dažniausiai naudojama kalbų pora", + "mostUsedMode": "Dažniausiai naudojamas režimas", + "asrApiCalls": "ASR iškvietimai", + "totalAudioDuration": "Bendra garso trukmė", + "audioFileSize": "Garso failo dydis", + "transcriptBytes": "Stenogramos baitai", + "loadFailed": "Nepavyko įkelti", "statsLoadFailedTryLater": - "Statistics failed to load. Please try again later.", - "cleanupComplete": "Cleanup Complete", - "cleanedOldData": "Cleaned data older than 90 days", - "exportFeature": "Export Feature", - "exportInDevelopment": "Data export is under development", + "Nepavyko įkelti statistikos. Bandykite dar kartą vėliau.", + "cleanupComplete": "Išvalymas baigtas", + "cleanedOldData": "Išvalyti duomenys, senesni nei 90 dienų", + "exportFeature": "Eksporto funkcija", + "exportInDevelopment": "Duomenų eksportas kuriamas", // 商品模块 - 通用 - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', + 'availablePackages': 'Galimi paketai', + 'remainingQuota': 'Likusi kvota', + 'totalQuota': 'Bendra kvota', + 'remaining': 'Liko', + 'featureDescription': 'Funkcijų aprašymas', 'paymentSuccess': 'Mokėjimas sėkmingas', 'paymentFailed': 'Mokėjimas nepavyko', 'gotIt': 'Supratau', @@ -326,70 +326,74 @@ const Map ltLT = { 'alipayPaymentLaunchFailed': 'Nepavyko paleisti Alipay', 'cannotLaunchAlipayPayment': 'Nepavyko paleisti Alipay', 'alipayPaymentException': 'Alipay išimtis', - "insufficientIntegral": "Insufficient integral", + "insufficientIntegral": "Nepakanka taškų", "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', + 'Nepakanka lėšų, eikite į atitinkamą papildymo puslapį ir papildykite.', + "recharge": 'Eiti papildyti', "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + 'AI narystė baigėsi, eikite į narystės papildymo puslapį ir pratęskite.', // 商品模块 - AI商品页 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', + 'musicAndRecommendation': 'Muzika ir rekomendacijos', + 'navigationAndRoutes': 'Navigacija ir maršrutai', + 'nearbySearch': 'Paieška netoliese', + 'newsInformation': 'Naujienos', + 'communicationAssistant': 'Bendravimo asistentas', 'aiHeaderDesc1': - 'Longer conversation quota, more tool calls, extended context length.', + 'Didesnė pokalbių kvota, daugiau įrankių iškvietimų, ilgesnis kontekstas.', 'aiHeaderDesc2': - 'Suitable for agent Q&A, summarization, analysis, and task execution.', - 'musicSearchPlaybackControl': 'Music library search and playback control', + 'Tinka agento klausimams/atsakymams, santraukai, analizei ir užduočių vykdymui.', + 'musicSearchPlaybackControl': + 'Muzikos bibliotekos paieška ir atkūrimo valdymas', 'smartPlaylistAndSimilarRecommendations': - 'Smart playlist and similar song recommendations', + 'Išmanus grojaraštis ir panašių dainų rekomendacijos', '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', + 'Maršruto planavimas ir spūsčių vengimas', + 'voiceBroadcastAndWaypoints': 'Balso pranešimai ir tarpinių taškų nustatymai', + 'realTimeWeatherForecast': 'Orai ir prognozė realiuoju laiku', + 'clothingAdviceAndTravelReminders': + 'Aprangos patarimai ir kelionės priminimai', + 'poiSearchFoodGasParking': 'POI paieška: maistas / degalinės / parkavimas', + 'ratingsHoursAndDirectRoutes': + 'Įvertinimai, darbo laikas ir tiesioginis maršrutas', + 'hotNewsAndTopicOverview': 'Svarbiausios naujienos ir temų apžvalga', + 'longArticleSummariesAndKeyPoints': 'Ilgų straipsnių santraukos ir esmė', + 'helpCallAndSMS': 'Pagalba skambučiams ir SMS', 'templatedMessagesAndScheduleReminders': - 'Template messages and schedule reminders', + 'Žinučių šablonai ir suplanuoti priminimai', 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', + 'Funkcijos priklauso nuo įrenginio leidimų, paslaugos prieinamumo ir tinklo sąlygų.', // 商品模块 - 翻译商品页 - 'realtimeTranscription': 'Real-time Transcription', - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', + 'realtimeTranscription': 'Transkripcija realiuoju laiku', + 'sceneLexicon': 'Scenarijų žodynėlis', + 'subtitleDisplay': 'Subtitrai', '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', + 'Sinchroninis vertimas realiuoju laiku ir teksto vertimas su mažos delsos balsu.', + 'transHeaderDesc2': 'Tinka kelionėms, verslui, kalboms ir mokymui.', + 'translateZhEn': 'Kinų–anglų vertimas', + 'lowLatencyVoiceBroadcast': 'Balso atkūrimas su maža delsa', + 'multiLangTextTranslation': 'Daugiakalbis teksto vertimas', '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', + 'Terminų optimizavimas ir konteksto išlaikymas', + 'lexiconTourBusinessLife': 'Kelionių / verslo / kasdienybės žodynai', + 'personalVocabularyMemory': 'Asmeninis žodyno įsiminimas', + 'conversationSubtitleLargeText': + 'Pokalbio subtitrai / didelio teksto režimas', + 'colorHighContrast': 'Didelis spalvų kontrastas', 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', + 'Vertimo kokybė priklauso nuo mikrofono, tinklo delsos ir aplinkos triukšmo.', // 商品模块 - 会议商品页 - 'meetingRecording': 'Meeting Recording', + 'meetingRecording': 'Susitikimų įrašymas', 'transcriptionAndSummary': 'Transcription & Summary', 'keywordSearch': 'Keyword Search', 'collaborationSharing': 'Collaboration & Sharing', 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'Garso įrašymas, transkripcija, paieška pagal raktinius žodžius ir automatinė santrauka didesniam susitikimų efektyvumui.', 'meetingHeaderDesc2': 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingAutoRecording': 'Automatinis įrašymas ir segmentavimas', 'meetingSpeakerTagging': 'Speaker labeling', 'meetingLongAudioTranscription': 'Long audio transcription', 'meetingKeyPointSummary': 'Key point extraction', @@ -398,43 +402,43 @@ const Map ltLT = { 'meetingExportSummary': 'Export minutes', 'meetingMultiPlatformShare': 'Share across platforms', 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', + 'Naudokite tyloje; kokybė priklauso nuo mikrofono ir tinklo.', // 商品模块 - VIP会员页 - 'benefitsOverview': 'Benefits overview', - 'higherQuota': 'Higher usage quota', - 'lowerUnitPrice': 'Lower unit price', - 'priorityService': 'Priority service', - 'exclusiveSupportChannel': 'Dedicated support channel', - 'fastResponse': 'Fast issue response', - 'eventsAndDiscounts': 'Events and discounts', - 'memberExclusiveEvents': 'Member-exclusive events', - 'longTermDiscountPlan': 'Long-term discount plan', - 'generalPrivileges': 'General privileges', - 'earlyAccessNewFeatures': 'Early access to new features', - 'crossDeviceSync': 'Cross-device sync', + 'benefitsOverview': 'Privalumų apžvalga', + 'higherQuota': 'Didesnė naudojimo kvota', + 'lowerUnitPrice': 'Mažesnė vieneto kaina', + 'priorityService': 'Prioritetinis aptarnavimas', + 'exclusiveSupportChannel': 'Atskiras palaikymo kanalas', + 'fastResponse': 'Greitas reagavimas į problemas', + 'eventsAndDiscounts': 'Renginiai ir nuolaidos', + 'memberExclusiveEvents': 'Tik nariams skirti renginiai', + 'longTermDiscountPlan': 'Ilgalaikis nuolaidų planas', + 'generalPrivileges': 'Bendros privilegijos', + 'earlyAccessNewFeatures': 'Ankstyva prieiga prie naujų funkcijų', + 'crossDeviceSync': 'Sinchronizacija tarp įrenginių', 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', // 商品模块 - 商品名称与描述 - '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).', + 'ai_001_name': 'AI bazinis 100', + 'ai_002_name': 'AI bazinis 500', + 'ai_003_name': 'AI bazinis 1000', + 'meet_001_name': 'Susitikimai bazinis 100', + 'meet_002_name': 'Susitikimai bazinis 500', + 'meet_003_name': 'Susitikimai bazinis 1000', + 'trans_001_name': 'Vertimas bazinis 100', + 'trans_002_name': 'Vertimas bazinis 500', + 'trans_003_name': 'Vertimas bazinis 1000', + 'ai_001_desc': 'Apima 100 naudojimų. Prieiga prie pagrindinių AI funkcijų.', + 'ai_002_desc': 'Apima 500 naudojimų. Prieiga prie pagrindinių AI funkcijų.', + 'ai_003_desc': 'Apima 1000 naudojimų. Prieiga prie pagrindinių AI funkcijų.', + 'meet_001_desc': 'Apima 100 susitikimų įrašų/transkripcijų.', + 'meet_002_desc': 'Apima 500 susitikimų įrašų/transkripcijų.', + 'meet_003_desc': 'Apima 1000 susitikimų įrašų/transkripcijų.', + 'trans_001_desc': 'Apima 100 vertimų (balsas/tekstas).', + 'trans_002_desc': 'Apima 500 vertimų (balsas/tekstas).', + 'trans_003_desc': 'Apima 1000 vertimų (balsas/tekstas).', // 商品模块 - 页脚 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', @@ -443,27 +447,29 @@ const Map ltLT = { // 新手引导 'skip': "Praleisti", - 'next': 'Next', - 'sayLilyHint': 'Say "Lily Lily" to the mic', - 'imHere': 'I’m here~', - 'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.', - 'aiReplyCompleted': 'Lily has finished the reply!', - 'aiThinking': 'Lily is thinking…', - 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', - 'confirmInput': 'Confirm Input', - 'guideClickSendPrefix': 'Tap send, ', - 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', - 'guideWeatherInput': 'What’s the weather today?', - 'guideWeatherSend': 'Lily will report the weather in real time', - 'guideWeatherEnd': 'Lily can report weather live—try other commands', - 'guideMusicStart': 'Tell Lily: “Play some rock music”', - 'guideMusicInput': 'Play some rock music', - 'guideMusicSend': 'Lily will find music for you', - 'guideMusicEnd': 'Lily found music—try other commands', - 'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”', - 'guideNavInput': 'Navigate to Shenzhen Airport', - 'guideNavSend': 'Lily will plan the route', - 'guideNavEnd': 'Navigation set—try other commands', + 'next': 'Kitas', + 'sayLilyHint': 'Pasakykite į mikrofoną „Lily Lily“', + 'imHere': 'Aš čia~', + 'guideWelcomeWakeAI': + 'Sveiki atvykę į Voitrans! Pirmiausia pažadinkite savo AI „Lily“.', + 'aiReplyCompleted': 'Lily baigė atsakymą!', + 'aiThinking': 'Lily galvoja…', + 'guideAwakenSuccess': 'Puiku! Lily pabudo — paprašykite pagalbos.', + 'confirmInput': 'Patvirtinti įvestį', + 'guideClickSendPrefix': 'Bakstelėkite siųsti, ', + 'guideWeatherStart': 'Pasakykite Lily: „Koks šiandien oras?“', + 'guideWeatherInput': 'Koks šiandien oras?', + 'guideWeatherSend': 'Lily pateiks orų informaciją realiuoju laiku', + 'guideWeatherEnd': + 'Lily gali pranešti orus tiesiogiai — išbandykite kitas komandas', + 'guideMusicStart': 'Pasakykite Lily: „Paleisk roko muzikos“', + 'guideMusicInput': 'Paleisk roko muzikos', + 'guideMusicSend': 'Lily suras jums muziką', + 'guideMusicEnd': 'Lily rado muziką — išbandykite kitas komandas', + 'guideNavStart': 'Pasakykite Lily: „Nukreipk į Šendženo oro uostą“', + 'guideNavInput': 'Nukreipk į Šendženo oro uostą', + 'guideNavSend': 'Lily suplanuos maršrutą', + 'guideNavEnd': 'Navigacija nustatyta — išbandykite kitas komandas', 'guideMeetingStart': 'Tell Lily: “Create a meeting reminder for 3pm tomorrow”', 'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow', @@ -490,38 +496,38 @@ const Map ltLT = { 'recordingDetails': 'Įrašo detalės', 'aiSummary': 'AI santrauka', 'meetingTranscript': 'Susitikimo stenograma', - 'files': 'Files', - 'mine': 'Mine', - 'connect': 'Connect', - 'allFiles': 'All Files', - 'searchInAllFiles': 'Search in all files', - 'from': 'From', - 'sortBy': 'Sort by', - 'creationTime': 'Creation Time', - 'bluetoothConnection': 'Bluetooth Connection', - 'meetingReconnect': 'Reconnect', - 'searching': 'Searching...', - 'searchFailed': 'Search failed, please check if Bluetooth is enabled', - 'aiPenNotFound': 'AI PEN device not found', - 'connectedToAiPen': 'Connected to AI PEN device', - 'checkingNewFiles': 'Checking for new files to import', - 'startingWifi': 'Starting Wi-Fi...', - 'newFilesDetected': 'New files detected, preparing to import', - 'noNewFiles': 'No new files to import', - 'connectingWifi': 'Connecting to Wi-Fi...', - 'wifiConnected': 'Wi-Fi connected successfully', - 'downloadingFiles': 'Downloading files...', - 'downloadingFileProgress': 'Total {total} files, downloading file {current}', - 'downloadComplete': 'Download complete', + 'files': 'Failai', + 'mine': 'Mano', + 'connect': 'Prisijungti', + 'allFiles': 'Visi failai', + 'searchInAllFiles': 'Ieškoti visuose failuose', + 'from': 'Nuo', + 'sortBy': 'Rūšiuoti pagal', + 'creationTime': 'Sukūrimo laikas', + 'bluetoothConnection': 'Bluetooth ryšys', + 'meetingReconnect': 'Prisijungti iš naujo', + 'searching': 'Ieškoma...', + 'searchFailed': 'Paieška nepavyko, patikrinkite, ar įjungtas Bluetooth', + 'aiPenNotFound': 'AI PEN įrenginys nerastas', + 'connectedToAiPen': 'Prisijungta prie AI PEN įrenginio', + 'checkingNewFiles': 'Tikrinami nauji failai importui', + 'startingWifi': 'Paleidžiamas Wi‑Fi...', + 'newFilesDetected': 'Rasti nauji failai, ruošiama importuoti', + 'noNewFiles': 'Nėra naujų failų importui', + 'connectingWifi': 'Jungiamasi prie Wi‑Fi...', + 'wifiConnected': 'Wi‑Fi sėkmingai prijungtas', + 'downloadingFiles': 'Atsisiunčiami failai...', + 'downloadingFileProgress': 'Iš viso {total} failų, atsisiunčiamas {current}', + 'downloadComplete': 'Atsisiuntimas baigtas', 'downloadCompleteInfo': - 'Download complete, {count} files in total, returning automatically in 2 seconds', + 'Atsisiuntimas baigtas, iš viso {count} failų, grįžtama automatiškai po 2 sek.', // Meeting模块 - 录音功能 - 'startRecording': 'Start Recording', - 'liveRecording': 'Live Recording', - 'audioVideoRecording': 'Audio/Video Recording', - 'callRecording': 'Call Recording', - 'importAudio': 'Import Audio', + 'startRecording': 'Pradėti įrašymą', + 'liveRecording': 'Tiesioginis įrašymas', + 'audioVideoRecording': 'Garso/vaizdo įrašymas', + 'callRecording': 'Skambučio įrašymas', + 'importAudio': 'Importuoti garsą', 'meetingRecordExitTitle': 'Išeiti iš įrašymo', // 退出录音 'meetingRecordExitMessage': 'Pasirinkite, ką daryti prieš išeinant', // 请选择离开后的操作 @@ -544,30 +550,30 @@ const Map ltLT = { 'Kad įrašymo metu galėtume rodyti plaukiojančią įrašymo juostą (laikmatis/pristabdyti/tęsti), mums reikia leidimo rodyti virš kitų programų.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'overlayPermissionOpenSettingsFailed': 'Nepavyko automatiškai atidaryti sistemos nustatymų. Atidarykite Nustatymus ir rankiniu būdu įjunkite leidimą rodyti virš kitų programų.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'transcribing': 'Transkribuojama...', + 'summarizing': 'Apibendrinama...', + 'analyzing': 'Analizuojama...', + 'summaryComplete': 'Santrauka paruošta', + 'generate': 'Generuoti', + 'overview': 'Apžvalga', + 'transcription': 'Transkripcija', + 'summary': 'Santrauka', + 'mindMap': 'Minčių žemėlapis', + 'editSpeaker': 'Redaguoti', + 'nameSpeaker': 'Pavadinti kalbėtoją', // Meeting模块 - 转写与总结 - 'reSummarize': 'Re-summarize', - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'reSummarize': 'Generuoti santrauką iš naujo', + 'dateAndTime': 'Data ir laikas', + 'location': 'Vieta', + 'attendees': 'Dalyviai', + 'inputLocation': 'Įveskite vietą', + 'inputAttendees': 'Įveskite dalyvius', // Meeting模块 - 模版与生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', + 'selectSummaryTemplate': 'Pasirinkti santraukos šabloną', + 'useThisTemplate': 'Naudoti šį šabloną', + 'lastUsed': 'Naudota paskutinį kartą', 'create': 'Sukurti', 'templateDetails': 'Šablono informacija', 'tag': 'Žyma', @@ -584,110 +590,112 @@ const Map ltLT = { '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.', + 'viewAll': 'Rodyti viską', + 'recordingLanguage': 'Įrašymo kalba', + 'chineseSimplified': 'Kinų mandarinų (supaprastinta)', + 'meetingGenerateNow': 'Generuoti dabar', + 'keyEventsAnalyzed': 'Išanalizuota pagrindinių įvykių: {count}.', 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + 'AI analizė nustato pagrindinius įvykius įrašuose, kad galėtumėte pasirinkti svarbius AI generavimui.', // 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', + 'importing': 'Importuojama...', + 'batchImporting': 'Importuojama paketu...', + 'importingLocalRecordings': 'Importuojami vietiniai įrašai...', + 'importFailed': 'Failo importas nepavyko: {filePath}, klaida: {error}', + 'importSuccess': 'Sėkmingai importuota vietinių įrašų: {count}', + 'importError': 'Importas nepavyko: {error}', + 'pleaseSelectAudioFile': 'Pasirinkite garso failą', 'shareAudio': 'Share Meeting Audio', 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + 'shareFailed': 'Bendrinimas nepavyko: {error}', + 'fileProcessingFailed': + 'Failo apdorojimas nepavyko: {filePath}, klaida: {error}', // Meeting模块 - 思维导图 'saveMindMap': 'Išsaugoti minčių žemėlapį', - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', + 'shareMindMap': 'Bendrinti minčių žemėlapį', + 'shareSuccess': 'Bendrinta sėkmingai', // 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', + 'askAI': 'Paklausti AI...', + 'askAIPrompt': 'Kuo galiu padėti šiandien?', + 'continueAsk': 'Tęsti klausimą', + 'todoList': 'Darbų sąrašas', + 'extractConclusion': 'Išgauti išvadas', + 'generateKeyIndicators': 'Generuoti pagrindinius rodiklius', // Meeting模块 - 分享与导出 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', + 'shareLink': 'Bendrinti nuorodą', + 'copyTranscript': 'Kopijuoti transkripciją', + 'copySummary': 'Kopijuoti santrauką', + 'exportAudio': 'Eksportuoti garsą', + 'exportTranscript': 'Eksportuoti transkripciją', 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', + 'exportSummary': 'Eksportuoti santrauką', + 'exportAs': 'Eksportuoti kaip', + 'exportingPDF': 'Eksportuojamas 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', + 'nameCurrentSpeaker': 'Pavadinti dabartinį kalbėtoją', + 'recentlyUsedNames': 'Neseniai naudoti vardai', + 'applyToCurrentParagraph': 'Taikyti dabartinei pastraipai', + 'totalTime': 'Bendras laikas', 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', + 'Santraukos kalbėtojai bus atnaujinami automatiškai', // Meeting模块 - 云端同步 - 'syncToCloud': 'Sync to Cloud', + 'syncToCloud': 'Sinchronizuoti su debesimi', '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', + 'Automatiškai sinchronizuokite įrašus su debesimi; įrašus galite leisti, tvarkyti ir bendrinti per bet kurią VOITRANS programą arba VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sinchronizuoti VOITRANS programą', + 'transcriptionRecord': 'Transkripcijos įrašas', // Meeting模块 - 我的页面 - 'transcriptionRecords': 'Transcription Records', - 'templateCommunity': 'Template Community', - 'comingSoon': 'Coming Soon', - 'integration': 'Integration', + 'transcriptionRecords': 'Transkripcijų įrašai', + 'templateCommunity': 'Šablonų bendruomenė', + 'comingSoon': 'Netrukus', + 'integration': 'Integracija', 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', - 'enabled': 'Enabled', - 'disabled': 'Disabled', - 'myVoitransDevice': 'My VOITRANS Device', + 'enabled': 'Įjungta', + 'disabled': 'Išjungta', + 'myVoitransDevice': 'Mano VOITRANS įrenginys', 'helpAndFeedback': 'Help & Feedback', 'aboutVoitrans': 'About VOITRANS', - 'meetingDays': 'Days', - 'meetingHours': 'Hours', - 'voitransAiMember': 'Voitrans AI Member', - 'unlockStarterMember': 'Unlock Starter Member', - 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', - 'unlockNow': 'Unlock Now', + 'meetingDays': 'Dienos', + 'meetingHours': 'Valandos', + 'voitransAiMember': 'Voitrans AI narystė', + 'unlockStarterMember': 'Atrakinti Starter narystę', + 'bindDeviceToActivate': + 'Susiekite Voitrans įrenginį, kad aktyvuotumėte Starter narystę', + 'unlockNow': 'Atrakinti dabar', // Meeting模块 - 会员与升级 - 'comparison': 'Comparison', - 'detailedInfo': 'Detailed Information', - 'monthlyTranscriptionTime': 'Monthly Transcription Time', - 'unlimited': 'Unlimited', - 'professionalTemplates': 'Professional Templates', - 'limited': 'Limited', - 'fullTemplates': 'Full Templates', - 'professionalTerms': 'Professional Terms', - 'customTemplates': 'Custom Templates', - 'visualMindMap': 'Visual Mind Map', - 'speakerIdentification': 'Speaker Identification', - 'aiVoiceEnhancement': 'AI Voice Enhancement', - 'audioImport': 'Audio Import', - 'multipleExportFormats': 'Multiple Export Formats', - 'professionalSummaryTemplates': 'Professional Summary Templates', + 'comparison': 'Palyginimas', + 'detailedInfo': 'Išsami informacija', + 'monthlyTranscriptionTime': 'Mėnesio transkripcijos laikas', + 'unlimited': 'Neribota', + 'professionalTemplates': 'Profesionalūs šablonai', + 'limited': 'Ribota', + 'fullTemplates': 'Pilnas šablonų rinkinys', + 'professionalTerms': 'Profesionalūs terminai', + 'customTemplates': 'Pasirinktiniai šablonai', + 'visualMindMap': 'Vizualus minčių žemėlapis', + 'speakerIdentification': 'Kalbėtojų atpažinimas', + 'aiVoiceEnhancement': 'AI balso pagerinimas', + 'audioImport': 'Garso importas', + 'multipleExportFormats': 'Keli eksporto formatai', + 'professionalSummaryTemplates': 'Profesionalūs santraukų šablonai', 'professionalTemplateDesc': 'Professional template design to improve your work efficiency. Customized according to industry needs.', 'customTemplateDesc': 'You can customize summary prompts according to your needs and use them to generate the required summaries.', 'askAiDesc': - 'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.', + 'Išmaniai išgaukite gilesnę informaciją iš įrašų, vienu paspaudimu generuokite duomenų lenteles, pagrindines diskusijų išvadas, darbų sąrašus, ataskaitų el. laiškus ir kitą suformatuotą turinį.', 'visualMindMapDesc': 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', 'templateCommunityDesc': @@ -695,49 +703,50 @@ const Map ltLT = { 'speakerIdentificationDesc': 'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.', 'privateCloudSyncDesc': - 'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.', + 'Jūsų įrašai ir transkripcijos bus saugiai saugomi dedikuotuose debesų serveriuose, visiškai šifruojant įkeliant ir atsisiunčiant, kad būtų užtikrintas privatumas ir saugumas.', '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.', - 'upgradeMembership': 'Upgrade Your Membership', - 'yearlySubscription': 'Yearly Subscription', - 'monthlySubscription': 'Monthly Subscription', + 'Eksportuokite garso įrašus, transkripcijos tekstą ir santraukas įvairiais formatais (TXT, PDF, JPEG), kad atitiktų jūsų poreikius.', + 'upgradeMembership': 'Atnaujinti narystę', + 'yearlySubscription': 'Metinė prenumerata', + 'monthlySubscription': 'Mėnesinė prenumerata', 'proMonthly': 'Pro ¥60/month', 'proMonthlyDesc': - '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', - 'sevenDayTrial': '7-day Free Trial', + '7 dienų nemokamas bandomasis laikotarpis, vėliau ¥800 per metus. Atšaukite bet kada iki bandomojo laikotarpio pabaigos.', + 'sevenDayTrial': '7 dienų nemokamas bandomasis', 'unlimitedMonthly': 'Unlimited ¥120/month', 'unlimitedMonthlyDesc': - '7-day free trial, then ¥1600/year. Cancel anytime before trial ends.', - 'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.', + '7 dienų nemokamas bandomasis laikotarpis, vėliau ¥1600 per metus. Atšaukite bet kada iki bandomojo laikotarpio pabaigos.', + 'trialNote': + '*Nemokama 7 dienas, po to mokama kasmet; atšaukti galima bet kada.', 'proPrice': 'Pro ¥120', 'proMonthlyPrice': '¥120/month', - 'subscribe': 'Subscribe', + 'subscribe': 'Prenumeruoti', 'unlimitedPrice': 'Unlimited ¥198', 'unlimitedMonthlyPrice': '¥198/month', 'upgradeNote': - '*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account', - 'buyMoreTranscriptionTime': 'Buy More Transcription Time', + '*Atnaujinus prenumeratą, likusios pradinės prenumeratos dienos bus automatiškai apskaičiuotos ir grąžintos į jūsų mokėjimo paskyrą', + 'buyMoreTranscriptionTime': 'Pirkti daugiau transkripcijos laiko', 'sixThousandMinutes': '6,000 minutes', 'threeThousandMinutes': '3,000 minutes', 'sixHundredMinutes': '600 minutes', 'oneHundredTwentyMinutes': '120 minutes', - 'validityPeriod': '*Validity Period: ', + 'validityPeriod': '*Galiojimo laikotarpis: ', 'validityNote': - 'Activated immediately after purchase, valid for 2 years after activation.', - 'purchase': 'Purchase', + 'Aktyvuojama iškart po pirkimo, galioja 2 metus po aktyvavimo.', + 'purchase': 'Pirkti', // Meeting模块 - 录音语言 - 'recordLanguage': 'Recording Language', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', + 'recordLanguage': 'Įrašymo kalba', + 'cantonese': 'Kantonų', + 'sichuan': 'Sičuano tarmė', + 'shanghai': 'Šanchajaus tarmė', // Meeting模块 - 错误提示 - 'meetingUnknownLanguage': 'Unknown Language', + 'meetingUnknownLanguage': 'Nežinoma kalba', 'analysisFailed': 'Analizė nepavyko, bandykite dar kartą vėliau', 'transcriptionFailed': 'Transkripcija nepavyko, bandykite dar kartą vėliau', 'summaryFailed': 'Santrauka nepavyko, bandykite dar kartą vėliau', @@ -758,10 +767,10 @@ const Map ltLT = { "translationRecharge": "Vertimo užsipirkimas", "meetingAssistantRecharge": "Susitikimų asistento užsipirkimas", "cloudSync": "Synchronizacijos užsipirkimas", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "memberService": "Narių paslauga", + "bindRewardTitle": "Apdovanojimai", "bindRewardSimpleDesc": - "First bind device reward has been issued. Tap OK to close.", + "Pirmosios įrenginio susiejimo premijos jau suteiktos. Bakstelėkite OK, kad uždarytumėte.", "joinDevice": "Prijungtas įrenginys:", "accountId": "Paskyros ID:", "systemSetting": "Sistemos nustatymas", @@ -812,20 +821,20 @@ const Map ltLT = { "loading": "Įkeliama...", // 设备管理模块 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", - "deviceTypeSmartEye": "Smart Glasses", + "deviceTypeUnknown": "Nežinomas įrenginys", + "deviceTypeClassicBluetoothHeadset": "Klasikinės Bluetooth ausinės", + "deviceTypeBleBluetoothHeadset": "BLE Bluetooth ausinės", + "deviceTypeSmartVoiceRecorder": "Išmanus balso įrašytuvas", + "deviceTypeSmartEye": "Išmanieji akiniai", "unbind": "Atsieti", - "noDevicesBound": "No devices bound yet", - "pleaseBindDeviceFirst": "Please bind a device first to manage", - "noMacAddress": "No MAC Address", - "licenseCode": "License Code", - "confirmUnbind": "Confirm Unbind", - "confirmUnbindMessage": - "Are you sure you want to unbind device \"{deviceName}\"?", - "confirmUnbindAction": "Confirm Unbind", + "noDevicesBound": "Dar nėra susietų įrenginių", + "pleaseBindDeviceFirst": + "Pirmiausia susiekite įrenginį, kad galėtumėte valdyti", + "noMacAddress": "Nėra MAC adreso", + "licenseCode": "Licencijos kodas", + "confirmUnbind": "Patvirtinti atsiejimą", + "confirmUnbindMessage": "Ar tikrai norite atsieti įrenginį \"{deviceName}\"?", + "confirmUnbindAction": "Patvirtinti atsiejimą", // Agent模块 - 主界面 "Lily": "Lily", @@ -856,22 +865,22 @@ const Map ltLT = { "loadFailedClickRetry": "Įkėlimas nepavyko, spustelėkite, kad bandytumėte dar kartą", "swipeUpForMore": "Braukite aukštyn, kad pamatytumėte daugiau", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 + "callingTool": "Aš jums padedu, palaukite!", // 正在帮您,请稍等! + "voice_interrupt": "Pertraukti", // 语音打断 '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", // 今日天气 - "presetNews": "Today's news", // 今日新闻 - "presetFood": "Nearby food", // 美食 - "playSomeMusic": "Play some popular music", // 播放一些流行音乐 - "navigationTo": "Please help me navigate to", // 导航到 - "todayWeather": "How's the weather today?", // 今日天气 - "todayNews": "What's the news today?", // 今日新闻 - "nearbyFood": "What delicious food is nearby?", // 美食 + "presetMusic": "Paleisk muzikos", // 来点音乐 + "presetNavigation": "Naviguoti į", // 导航 + "presetWeather": "Šiandienos oras", // 今日天气 + "presetNews": "Šiandienos naujienos", // 今日新闻 + "presetFood": "Maistas netoliese", // 美食 + "playSomeMusic": "Paleisk populiarios muzikos", // 播放一些流行音乐 + "navigationTo": "Prašau padėk man nuvykti į", // 导航到 + "todayWeather": "Koks šiandien oras?", // 今日天气 + "todayNews": "Kokios šiandien naujienos?", // 今日新闻 + "nearbyFood": "Koks skanus maistas yra netoliese?", // 美食 // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Sveiki! Aš esu **Lily**, galiu jums padėti:\n\n' @@ -916,11 +925,12 @@ const Map ltLT = { 'generatedByAi': 'Sugeneruota AI', // Agent模块 - 工具调用 - 'toolCall': 'Tool Call', - 'noResult': 'No Result', - 'noToolCallContentToCopy': 'No tool call content to copy', - 'toolCallDetails': 'Tool Call Details:', - 'toolCallContentCopied': 'Tool call content copied to clipboard', + 'toolCall': 'Įrankio iškvietimas', + 'noResult': 'Nėra rezultato', + 'noToolCallContentToCopy': 'Nėra įrankio iškvietimo turinio kopijavimui', + 'toolCallDetails': 'Įrankio iškvietimo detalės:', + 'toolCallContentCopied': + 'Įrankio iškvietimo turinys nukopijuotas į iškarpinę', // Agent模块 - 音乐卡片 'recommendedMusic': 'Štai keletas rekomenduojamų dainų:', @@ -943,27 +953,27 @@ const Map ltLT = { "tsransit": "Viešasis transportas", // Agent模块 - 导航选择 - 'selectNavigationApp': 'Select Navigation App', + 'selectNavigationApp': 'Pasirinkite navigacijos programą', 'amapMap': 'Amap', - 'useAmapNavigation': 'Navigate with Amap', + 'useAmapNavigation': 'Naviguoti su Amap', 'baiduMap': 'Baidu Maps', - 'useBaiduNavigation': 'Navigate with Baidu Maps', + 'useBaiduNavigation': 'Naviguoti su Baidu Maps', 'googleMap': 'Google Maps', - 'useGoogleNavigation': 'Navigate with Google Maps', + 'useGoogleNavigation': 'Naviguoti su Google Maps', 'appleMap': 'Apple Maps', - 'useAppleNavigation': 'Navigate with Apple Maps', - 'builtInNavigation': 'Built-in Navigation', - 'useBuiltInNavigation': 'Navigate with built-in map', - 'navigationStartFailed': 'Failed to start navigation', + 'useAppleNavigation': 'Naviguoti su Apple Maps', + 'builtInNavigation': 'Integruota navigacija', + 'useBuiltInNavigation': 'Naviguoti su integruotu žemėlapiu', + 'navigationStartFailed': 'Nepavyko pradėti navigacijos', 'cannotPlayMusicListRetryLater': - 'Cannot play music list, please try again later', - 'cannotPlaySong': 'Cannot play song', - 'openMapError': 'Error opening map', - 'pleaseInstallAmapApp': 'Please install the Amap app first', - 'pleaseInstallBaiduMapApp': 'Please install the Baidu Maps app first', - 'appleMapStartFailed': 'Apple Maps failed to start', - 'appleMapUnavailable': 'Apple Maps unavailable', - 'openAppleMapError': 'Error opening Apple Maps', + 'Nepavyko paleisti grojaraščio, bandykite dar kartą vėliau', + 'cannotPlaySong': 'Nepavyko paleisti dainos', + 'openMapError': 'Klaida atidarant žemėlapį', + 'pleaseInstallAmapApp': 'Pirmiausia įdiekite Amap programą', + 'pleaseInstallBaiduMapApp': 'Pirmiausia įdiekite Baidu Maps programą', + 'appleMapStartFailed': 'Nepavyko paleisti Apple Maps', + 'appleMapUnavailable': 'Apple Maps neprieinamas', + 'openAppleMapError': 'Klaida atidarant Apple Maps', // Agent模块 - 天气卡片 'weatherQuery': 'Užklausa apie oro sąlygas:', @@ -1018,8 +1028,8 @@ const Map ltLT = { "strongWind": "Stiprus vėjas", // 翻译模块 - 中间层 - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", + "pictureTranslation": "Nuotraukų vertimas", + "textTranslation": "Teksto vertimas", // 翻译模块 - 主页 "translationHistory": "Vertimų istorija", @@ -1029,33 +1039,33 @@ const Map ltLT = { "phoneUser": "Telefono naudotojas", "selectSourceLanguage": "Pasirinkite šaltinio kalbą", "selectTargetLanguage": "Pasirinkite tikslo kalbą", - "me": "Me", - "counterPart": "Counterpart", + "me": "Aš", + "counterPart": "Pašnekovas", "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - "autoDetect": "Auto Detect", // 自动检测 + "Įsitikinkite, kad Bluetooth ausinės prijungtos prie telefono ir vyksta skambutis", + "autoDetect": "Automatinis aptikimas", // 自动检测 // 翻译模块 - 文本翻译 - "languageDetectionFailed": "Language detection failed", + "languageDetectionFailed": "Nepavyko aptikti kalbos", // 翻译模块 - 悬浮窗与权限 - 'disableFloatingWindow': 'Disable Floating Window', - 'enableFloatingWindow': 'Enable Floating Window', - 'permissionTip': 'Permission Tip', + 'disableFloatingWindow': 'Išjungti plaukiojantį langą', + 'enableFloatingWindow': 'Įjungti plaukiojantį langą', + 'permissionTip': 'Leidimų patarimas', 'micPermissionRequiredForRecording': - 'Microphone permission is required for recording', - 'deleteTranslationRecordError': 'Error deleting translation record: @error', - "translationFailed": "Translation failed", - "translating": "Translating", - "translate": "Translate", - "pleaseInputText": "Please input text", + 'Įrašymui reikalingas mikrofono leidimas', + 'deleteTranslationRecordError': 'Klaida šalinant vertimo įrašą: @error', + "translationFailed": "Vertimas nepavyko", + "translating": "Verčiama", + "translate": "Versti", + "pleaseInputText": "Įveskite tekstą", "inputTextToTranslate": "Įveskite tekstą, kurį norite išversti", - "textTooLong": "Text too long, max 5000 characters", + "textTooLong": "Tekstas per ilgas, daugiausia 5000 simbolių", // 翻译模块 - 历史记录 "noTranslationHistory": "Dar nėra istorijos", - "historyRecords": "History Records", - "clearResults": "Clear Results", + "historyRecords": "Istorijos įrašai", + "clearResults": "Išvalyti rezultatus", "clearHistory": "Išvalyti istoriją", "clearHistoryConfirm": "Ar tikrai norite išvalyti visą vertimų istoriją? Šio veiksmo negalima atšaukti.", @@ -1065,55 +1075,56 @@ const Map ltLT = { "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", + "selectImageSource": "Pasirinkite vaizdo šaltinį", + "imagePreview": "Vaizdo peržiūra", + "translationResult": "Vertimo rezultatas", + "recognitionResult": "Atpažinimo rezultatas", + "translatedImagePreview": "Išversto vaizdo peržiūra", + "translatedImageLoadFailed": "Nepavyko įkelti išversto vaizdo", + "pleaseSelectImage": "Pasirinkite vaizdą", + "imageLoadFailed": "Vaizdo įkėlimas nepavyko", + "imageQuality": "Vaizdo kokybė", + "maxSize": "Maks. dydis", + "close": "Uždaryti", + "setImageQuality": "Nustatyti vaizdo kokybę", + "currentQuality": "Dabartinė kokybė: @value%", + "setMaxSize": "Nustatyti maks. dydį", + "currentMaxSize": "Dabartinis: @pxpx", + "waitingForAction": "Laukiama veiksmo", + "pleaseSelectImageToStart": "Pasirinkite vaizdą, kad pradėtumėte", + "chooseImage": "Pasirinkti vaizdą", + "openingCamera": "Atidaroma kamera...", + "openingPhotoAlbum": "Atidaromas albumas...", + "cancelled": "Atšaukta", + "userCancelledSelection": "Vartotojas atšaukė pasirinkimą", + "translatingImage": "Verčiamas vaizdas", + "callingImageTranslateService": "Kviečiama vaizdų vertimo paslauga...", + "savingRecord": "Išsaugomas įrašas", + "savingTranslationResult": "Išsaugomas vertimo rezultatas...", + "translationCompleted": "Vertimas baigtas", + "allStepsCompleted": "Visi veiksmai baigti", + "processingFailed": "Apdorojimas nepavyko", "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", + "Vaizdo apdorojimas arba vertimas nepavyko. Bandykite dar kartą.\nKlaida: {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", + "emptyTranslationResult": "Vaizdų vertimo API grąžino tuščią rezultatą", "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", + "Vaizdo vertimas nepavyko. Tinklo problema arba dažnio apribojimas. Bandykite vėliau", "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", + "Vaizdų vertimo API išimtis. Patikrinkite tinklą ir bandykite dar kartą", + "permissionRequired": "Reikalingas leidimas", + "cameraPermissionRequired": + "Norint fotografuoti, reikalingas kameros leidimas", "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", + "Norint pasirinkti vaizdus, reikalingas albumo leidimas", + "translationDetails": "Vertimo detalės", + "originalImage": "Originalus vaizdas", + "sourceLanguage": "Šaltinio kalba", + "targetLanguage": "Tikslo kalba", + "translationTime": "Vertimo laikas", + "shareInDevelopment": "Bendrinimo funkcija kuriama", // 翻译模块 - 录音文件 "translateAudioFiles": "Versti garso failus", @@ -1165,8 +1176,8 @@ const Map ltLT = { 'deleteAccount': 'Ištrinti paskyrą', 'deleteAccountTips': '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?', + 'clean': 'Išvalyti talpyklą', + 'cleanTips': 'Ar tikrai norite išvalyti asmeninę talpyklą?', 'networkConnectionFailed': 'Tinklo ryšio klaida, patikrinkite tinklo nustatymus ir bandykite dar kartą', 'serverTemporarilyUnavailable': @@ -1211,32 +1222,32 @@ const Map ltLT = { 'Paskyros paslauga inicijuota', // AccountService 已初始化 // 权限模块 - 'meetingStoragePermission': 'Storage', + 'meetingStoragePermission': 'Saugykla', 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', + 'Mums reikia prieigos prie saugyklos, kad galėtumėte pasirinkti ir įkelti garso failus.', 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', + 'Nustatyta, kad visam laikui atmetėte saugyklos leidimą. Norėdami toliau naudoti šią funkciją, eikite į programos nustatymus ir rankiniu būdu įjunkite saugyklos leidimą.', 'getPermissionStatusFailed': 'Nepavyko gauti leidimo būsenos', 'communicationPermissions': 'Komunikacijos leidimai', - 'bluetoothPermissions': 'Bluetooth Permissions', - 'notificationPermissions': 'Notification Permissions', - 'storagePermissions': 'Storage Permissions', - 'microphonePermissions': 'Microphone Permissions', - 'alarmPermissions': 'Alarm Permissions', + 'bluetoothPermissions': 'Bluetooth leidimai', + 'notificationPermissions': 'Pranešimų leidimai', + 'storagePermissions': 'Saugyklos leidimai', + 'microphonePermissions': 'Mikrofono leidimai', + 'alarmPermissions': 'Žadintuvo leidimai', 'calendarPermissions': 'Kalendoriaus leidimai', 'locationPermissions': 'Vietovės leidimai', 'phone': 'Telefonas', 'sms': 'SMS', - 'contacts': 'Contacts', - 'notification': 'Notification', - 'alarm': 'Alarm', + 'contacts': 'Kontaktai', + 'notification': 'Pranešimai', + 'alarm': 'Žadintuvas', 'calendarWrite': 'Rašyti į kalendorių', 'calendarFullAccess': 'Visiškas priėjimas prie kalendoriaus', 'locationInfo': 'Vietovės informacija', 'phonePermissionDesc': 'Naudojama skambinimo funkcijai', 'smsPermissionDesc': 'Naudojama SMS siuntimo funkcijai', 'alarmPermissionDesc': - 'Used to set exact alarms to ensure reminders trigger on time', + 'Naudojama tiksliai nustatyti žadintuvus, kad priminimai suveiktų laiku', 'calendarWritePermissionDesc': 'Naudojama kuriant kalendoriaus įvykius ir priminimus', 'calendarFullAccessPermissionDesc': @@ -1254,72 +1265,73 @@ const Map ltLT = { 'Skambinimo funkcijai reikalingas telefono leidimas', 'smsPermissionDetailDesc': 'SMS siuntimo funkcijai reikalingas SMS leidimas', 'alarmPermissionDetailDesc': - 'This permission is required to set exact alarms and ensure reminders trigger on time', + 'Šis leidimas reikalingas tiksliai nustatyti žadintuvus ir užtikrinti, kad priminimai suveiktų laiku', 'calendarWritePermissionDetailDesc': 'Kalendoriaus įvykių kūrimui reikalingas rašymo į kalendorių leidimas', 'calendarFullAccessPermissionDetailDesc': 'Kalendoriaus įvykių valdymui reikalingas visiškas kalendoriaus leidimas', 'locationPermissionDetailDesc': 'Vietovės informacijos gavimui reikalingas vietovės leidimas', - 'contactsPermissionDesc': 'Used for accessing contact information', + 'contactsPermissionDesc': 'Naudojama kontaktų informacijai pasiekti', 'contactsPermissionDetailDesc': - 'Phone call and SMS functionality requires contacts permission to select contacts', + 'Skambučių ir SMS funkcijoms reikia kontaktų leidimo, kad būtų galima pasirinkti kontaktus', 'bluetoothPermissionDesc': - 'Used for connecting and managing Bluetooth devices', + 'Naudojama Bluetooth įrenginiams prijungti ir valdyti', 'bluetoothPermissionDetailDesc': - 'Connecting to Bluetooth headphones and other devices requires Bluetooth permission', - 'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices', + 'Norint prijungti Bluetooth ausines ir kitus įrenginius, reikalingas Bluetooth leidimas', + 'bluetoothScanPermissionDesc': + 'Naudojama netoliese esančių Bluetooth įrenginių nuskaitymui', 'bluetoothScanPermissionDetailDesc': - 'Scanning for nearby Bluetooth devices requires Bluetooth scan permission', - 'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices', + 'Norint nuskaityti netoliese esančius Bluetooth įrenginius, reikalingas Bluetooth nuskaitymo leidimas', + 'bluetoothConnectPermissionDesc': 'Naudojama Bluetooth įrenginiams prijungti', 'bluetoothConnectPermissionDetailDesc': - 'Connecting to Bluetooth devices requires Bluetooth connect permission', - 'notificationPermissionDesc': 'Used for sending notification messages', + 'Norint prijungti Bluetooth įrenginius, reikalingas Bluetooth prisijungimo leidimas', + 'notificationPermissionDesc': 'Naudojama pranešimams siųsti', 'notificationPermissionDetailDesc': - 'App needs notification permission to send you important alerts and messages', + 'Programai reikia pranešimų leidimo, kad galėtų siųsti jums svarbius perspėjimus ir žinutes', 'appNeedsPermissionForFullFunction': 'Programai reikalingas šis leidimas, kad veiktų visa funkcionalumas', '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', + 'bluetoothScan': 'Bluetooth nuskaitymas', + 'bluetoothConnect': 'Bluetooth prisijungimas', 'bluetoothScanExplanation': - 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', + 'Programai reikia Bluetooth nuskaitymo leidimo, kad nuskaitytų netoliese esančius Bluetooth įrenginius.', 'bluetoothConnectExplanation': - 'The app needs Bluetooth connect permission to connect to Bluetooth devices.', + 'Programai reikia Bluetooth prisijungimo leidimo, kad prisijungtų prie Bluetooth įrenginių.', 'locationForBluetoothExplanation': - 'The app needs location permission to scan Bluetooth devices.', + 'Programai reikia vietovės leidimo, kad nuskaitytų Bluetooth įrenginius.', 'bluetoothScanPermanentDenial': - 'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.', + 'Bluetooth nuskaitymo leidimas visam laikui atmestas, eikite į nustatymus ir įjunkite jį rankiniu būdu.', 'bluetoothConnectPermanentDenial': - 'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.', + 'Bluetooth prisijungimo leidimas visam laikui atmestas, eikite į nustatymus ir įjunkite jį rankiniu būdu.', 'locationPermanentDenial': - 'Location permission has been permanently denied, please go to settings to enable it manually.', - 'notificationPermission': 'Notification', - 'locationPermission': 'Location', + 'Vietovės leidimas visam laikui atmestas, eikite į nustatymus ir įjunkite jį rankiniu būdu.', + 'notificationPermission': 'Pranešimai', + 'locationPermission': 'Vietovė', 'notificationPermissionExplanation': - 'Notification permission is required to display music playback status.', + 'Pranešimų leidimas reikalingas, kad būtų rodomas muzikos atkūrimo statusas.', 'locationPermissionExplanation': - 'Location permission is required to get current location.', + 'Vietovės leidimas reikalingas, kad būtų gauta dabartinė vieta.', 'notificationPermissionPermanentDenial': - 'You have permanently denied notification permission, please go to settings to enable it.', + 'Visam laikui atmetėte pranešimų leidimą, eikite į nustatymus ir įjunkite jį.', 'locationPermissionPermanentDenial': - 'You have permanently denied location permission, please go to settings to enable it.', - 'storagePermission': 'Storage', + 'Visam laikui atmetėte vietovės leidimą, eikite į nustatymus ir įjunkite jį.', + 'storagePermission': 'Saugykla', 'microphonePermissionExplanation': - 'We need microphone permission to record audio content.', + 'Mums reikia mikrofono leidimo garso įrašymui.', 'storagePermissionExplanation': - 'We need storage permission so you can select and upload audio files.', + 'Mums reikia saugyklos leidimo, kad galėtumėte pasirinkti ir įkelti garso failus.', 'microphonePermissionPermanentDenial': - 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', + 'Mikrofono leidimas visam laikui atmestas. Norėdami toliau naudoti šią funkciją, eikite į programos nustatymus ir rankiniu būdu įjunkite mikrofono leidimą.', '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', + 'Saugyklos leidimas visam laikui atmestas. Norėdami toliau naudoti šią funkciją, eikite į programos nustatymus ir rankiniu būdu įjunkite saugyklos leidimą.', + 'permissionUtilNeed': 'Reikia ', + 'permissionUtilPermission': ' leidimo', + 'permissionUtilRestricted': ' leidimas apribotas', 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'Ši funkcija neprieinama arba apribota šiame įrenginyje. Patikrinkite įrenginio nustatymus arba sistemos apribojimus', 'permissionUtilConfirm': 'OK', // 原生前台服务通知(Android) @@ -1410,27 +1422,27 @@ const Map ltLT = { 'bleConnectionFailed': 'BLE ryšys nepavyko', 'deviceAuthorizationFailedCheckCode': 'Įrenginio autorizacija nepavyko, patikrinkite autorizacijos kodą', - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + 'bluetoothGuideTitle': 'Reikalingas rankinis Bluetooth įjungimas', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'Atlikite šiuos veiksmus:', // 请按照以下步骤操作: 'bluetoothGuideStep1': - 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'Įjunkite Bluetooth: Nustatymai → Bluetooth → Įjungti', // 开启蓝牙:设置 → 蓝牙 → 开启 'bluetoothGuideStep2': - 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'Prijunkite įrenginį: raskite jį skiltyje „Mano įrenginiai“ ir bakstelėkite, kad prisijungtumėte', // 连接设备:在"我的设备"中找到您的设备并点击连接 'bluetoothGuideStep3': - 'Return to app to continue pairing process', // 返回应用继续配对流程 + 'Grįžkite į programą ir tęskite susiejimą', // 返回应用继续配对流程 'bluetoothGuideTip': - 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': 'I Know', // 我知道了 + 'Patarimas: galite ilgai paspausti Bluetooth ikoną Valdymo centre, kad greitai atidarytumėte Bluetooth nustatymus', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + 'iKnow': 'Supratau', // 我知道了 // 配对模块 - 绑定奖励 - "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:", + "firstBindRewardTitle": "Sveikinimo dovana", + "firstBindRewardDesc": "Gavote susiejimo apdovanojimą.", + "vipLevelLabel": "VIP lygis:", + "expiryLabel": "Galioja iki:", + "notActivated": "Neaktyvuota", + "aiChatCreditsLabel": "AI pokalbio kreditai:", + "translationCreditsLabel": "Vertimo kreditai:", + "meetingCreditsLabel": "Susitikimų kreditai:", "ok": "OK", // 用户反馈模块 @@ -1462,13 +1474,14 @@ const Map ltLT = { "connectionFailed": "Ryšys nepavyko", "retryConnection": "Bandyti prisijungti dar kartą", "ota_updateNow": "Atnaujinti dabar", - "otaVersionInfoFailed": "Failed to get version info. Please try again later.", + "otaVersionInfoFailed": + "Nepavyko gauti versijos informacijos. Bandykite dar kartą vėliau.", "otaDeviceInfoUnavailable": - "Unable to get device info. Please check the connection and retry.", + "Nepavyko gauti įrenginio informacijos. Patikrinkite ryšį ir bandykite dar kartą.", "otaProductInfoUnavailable": - "Unable to identify the device. Please reconnect and retry.", + "Nepavyko atpažinti įrenginio. Prisijunkite iš naujo ir bandykite dar kartą.", "otaFirmwareVersionInvalid": - "Firmware version is abnormal. Please reconnect and retry.", + "Programinės įrangos versija neteisinga. Prisijunkite iš naujo ir bandykite dar kartą.", "keepConnectedDontClose": "Laikykite įrenginį prijungtą, neuždarykite programos", "doNotDisconnect": "Neatjunkite", @@ -1478,57 +1491,58 @@ const Map ltLT = { "Išimkite abi ausines ir įsitikinkite, kad abiejų baterijos lygis yra didesnis nei 20%", // OTA升级模块 - 弹窗与对话框 - 'otaNewVersionFoundWithVersion': 'New version @version found', - 'otaConfirmUpdateNow': 'Update now?', - 'otaUpdate': 'Update', - 'otaUpgradeSuccess': 'Upgrade Successful', + 'otaNewVersionFoundWithVersion': 'Rasta nauja versija @version', + 'otaConfirmUpdateNow': 'Atnaujinti dabar?', + 'otaUpdate': 'Atnaujinti', + 'otaUpgradeSuccess': 'Atnaujinimas sėkmingas', 'otaUpgradeCompleteRepair': - 'Firmware upgrade complete!\n\nDevice needs to be re-paired to work properly. Go to pairing page now?', - 'otaPairLater': 'Pair Later', - 'otaPairNow': 'Pair Now', + 'Programinės įrangos atnaujinimas baigtas!\n\nKad įrenginys veiktų tinkamai, jį reikia susieti iš naujo. Eiti į susiejimo puslapį dabar?', + 'otaPairLater': 'Susieti vėliau', + 'otaPairNow': 'Susieti dabar', 'okConfirm': 'OK', // OTA升级模块 - 设备检查 - 'otaBleCheckErrorWithError': 'Error checking BLE connection: @error', - 'otaBleNotConnected': 'BLE Device Not Connected', + 'otaBleCheckErrorWithError': 'Klaida tikrinant BLE ryšį: @error', + 'otaBleNotConnected': 'BLE įrenginys neprijungtas', 'otaBleNeedConnection': - 'Firmware upgrade requires BLE device connection\nPlease ensure device is properly connected and try again', - 'otaDeviceInfoUnavailableTitle': 'Device Info Unavailable', + 'Programinės įrangos atnaujinimui reikia BLE įrenginio ryšio\nĮsitikinkite, kad įrenginys prijungtas tinkamai, ir bandykite dar kartą', + 'otaDeviceInfoUnavailableTitle': 'Įrenginio informacija neprieinama', 'otaCannotGetDeviceInfo': - 'Cannot get device info\nPlease reconnect device or try again later', - 'otaBleCheckFailed': 'BLE Connection Check Failed', + 'Nepavyko gauti įrenginio informacijos\nPrisijunkite iš naujo arba bandykite vėliau', + 'otaBleCheckFailed': 'BLE ryšio patikra nepavyko', 'otaCannotGetDeviceInfoCheckConnection': - 'Cannot get device info, please check device connection', + 'Nepavyko gauti įrenginio informacijos, patikrinkite ryšį', 'otaCannotGetProductInfoWithName': - 'Cannot get product info, device name: @deviceName', - 'otaCannotGetBatteryInfo': 'Cannot get valid battery info', - 'otaLowBattery': 'Low Battery', + 'Nepavyko gauti produkto informacijos, įrenginio pavadinimas: @deviceName', + 'otaCannotGetBatteryInfo': 'Nepavyko gauti tinkamos baterijos informacijos', + 'otaLowBattery': 'Mažas įkrovos lygis', 'otaSingleBatteryLow': - 'Device battery too low for firmware upgrade\nRequirement: battery must be above 20%\nCurrent: @ear @battery%\nPlease charge and try again', + 'Įrenginio baterijos lygis per žemas programinės įrangos atnaujinimui\nReikalavimas: baterija turi būti daugiau nei 20%\nDabartinis: @ear @battery%\nĮkraukite ir bandykite dar kartą', 'otaDoubleBatteryLow': - 'Device battery too low for firmware upgrade\nRequirement: both earbuds must be above 20%\nCurrent: Left @left%, Right @right%\nPlease charge and try again', - 'otaBatteryCheckFailed': 'Battery Check Failed', + 'Įrenginio baterijos lygis per žemas programinės įrangos atnaujinimui\nReikalavimas: abi ausinės turi būti daugiau nei 20%\nDabartinis: Kairė @left%, Dešinė @right%\nĮkraukite ir bandykite dar kartą', + 'otaBatteryCheckFailed': 'Baterijos patikra nepavyko', // OTA升级模块 - 升级状态 'otaDefaultUpdateDesc': - 'This update includes performance optimizations and bug fixes.', - 'otaGetLatestVersionFailed': 'Failed to get latest version info', - 'otaGetVersionInfoFailed': 'Failed to get version info', - 'otaCheckingDeviceStatus': 'Checking device status...', + 'Šis atnaujinimas apima našumo optimizavimus ir klaidų taisymus.', + 'otaGetLatestVersionFailed': + 'Nepavyko gauti naujausios versijos informacijos', + 'otaGetVersionInfoFailed': 'Nepavyko gauti versijos informacijos', + 'otaCheckingDeviceStatus': 'Tikrinama įrenginio būsena...', 'otaDownloadFailedCheckNetwork': - 'Download failed, please check network connection', - 'otaDownloadFailed': 'Download Failed', - 'otaPreparingConnection': 'Preparing device connection...', - 'otaConnectingDevice': 'Connecting to device...', + 'Atsisiuntimas nepavyko, patikrinkite tinklo ryšį', + 'otaDownloadFailed': 'Atsisiuntimas nepavyko', + 'otaPreparingConnection': 'Ruošiamas įrenginio ryšys...', + 'otaConnectingDevice': 'Jungiamasi prie įrenginio...', 'otaUpgradeStarted': 'OTA upgrade started...', - 'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%', - 'otaUpgradeSuccessComplete': 'Upgrade completed successfully', - 'otaUpgradeFailedWithCode': 'Upgrade failed, error code: @code', - 'otaUpgradeFailedTitle': 'Upgrade Failed', + 'otaUpgradeProgressWithPercent': 'Atnaujinimo eiga: @percent%', + 'otaUpgradeSuccessComplete': 'Atnaujinimas sėkmingai baigtas', + 'otaUpgradeFailedWithCode': 'Atnaujinimas nepavyko, klaidos kodas: @code', + 'otaUpgradeFailedTitle': 'Atnaujinimas nepavyko', 'otaUpgradeFailedDesc': - 'Please check device connection or update package, error code: @code', - 'otaDeviceDisconnected': 'Device disconnected', - 'otaDeviceConnected': 'Device connected', + 'Patikrinkite įrenginio ryšį arba atnaujinimo paketą, klaidos kodas: @code', + 'otaDeviceDisconnected': 'Įrenginys atjungtas', + 'otaDeviceConnected': 'Įrenginys prijungtas', // 音乐模块 "noMusic": "Nėra muzikos", // 暂无音乐 diff --git a/lib/core/translations/language/lv_lv.dart b/lib/core/translations/language/lv_lv.dart index 01c222374..955e1d695 100644 --- a/lib/core/translations/language/lv_lv.dart +++ b/lib/core/translations/language/lv_lv.dart @@ -658,95 +658,97 @@ const Map lvLV = { 'transcriptionRecord': 'Transkripcijas ieraksts', // Meeting模块 - 我的页面 - 'transcriptionRecords': 'Transcription Records', - 'templateCommunity': 'Template Community', - 'comingSoon': 'Coming Soon', - 'integration': 'Integration', + 'transcriptionRecords': 'Transkripciju ieraksti', + 'templateCommunity': 'Veidņu kopiena', + 'comingSoon': 'Drīzumā', + 'integration': 'Integrācija', 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', - 'enabled': 'Enabled', - 'disabled': 'Disabled', - 'myVoitransDevice': 'My VOITRANS Device', - 'helpAndFeedback': 'Help & Feedback', - 'aboutVoitrans': 'About VOITRANS', - 'meetingDays': 'Days', - 'meetingHours': 'Hours', - 'voitransAiMember': 'Voitrans AI Member', - 'unlockStarterMember': 'Unlock Starter Member', - 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', - 'unlockNow': 'Unlock Now', + 'enabled': 'Ieslēgts', + 'disabled': 'Izslēgts', + 'myVoitransDevice': 'Mana VOITRANS ierīce', + 'helpAndFeedback': 'Palīdzība un atsauksmes', + 'aboutVoitrans': 'Par VOITRANS', + 'meetingDays': 'Dienas', + 'meetingHours': 'Stundas', + 'voitransAiMember': 'Voitrans AI dalība', + 'unlockStarterMember': 'Atbloķēt Starter dalību', + 'bindDeviceToActivate': + 'Saistiet Voitrans ierīci, lai aktivizētu Starter dalību', + 'unlockNow': 'Atbloķēt tagad', // Meeting模块 - 会员与升级 - 'comparison': 'Comparison', - 'detailedInfo': 'Detailed Information', - 'monthlyTranscriptionTime': 'Monthly Transcription Time', - 'unlimited': 'Unlimited', - 'professionalTemplates': 'Professional Templates', - 'limited': 'Limited', - 'fullTemplates': 'Full Templates', - 'professionalTerms': 'Professional Terms', - 'customTemplates': 'Custom Templates', - 'visualMindMap': 'Visual Mind Map', - 'speakerIdentification': 'Speaker Identification', - 'aiVoiceEnhancement': 'AI Voice Enhancement', - 'audioImport': 'Audio Import', - 'multipleExportFormats': 'Multiple Export Formats', - 'professionalSummaryTemplates': 'Professional Summary Templates', + 'comparison': 'Salīdzinājums', + 'detailedInfo': 'Detalizēta informācija', + 'monthlyTranscriptionTime': 'Mēneša transkripcijas laiks', + 'unlimited': 'Neierobežots', + 'professionalTemplates': 'Profesionālas veidnes', + 'limited': 'Ierobežots', + 'fullTemplates': 'Pilnas veidnes', + 'professionalTerms': 'Profesionāli termini', + 'customTemplates': 'Pielāgotas veidnes', + 'visualMindMap': 'Vizuāla prāta karte', + 'speakerIdentification': 'Runātāju atpazīšana', + 'aiVoiceEnhancement': 'AI balss uzlabošana', + 'audioImport': 'Audio importēšana', + 'multipleExportFormats': 'Vairāki eksporta formāti', + 'professionalSummaryTemplates': 'Profesionālas kopsavilkuma veidnes', 'professionalTemplateDesc': - 'Professional template design to improve your work efficiency. Customized according to industry needs.', + 'Profesionāls veidņu dizains, lai uzlabotu jūsu darba efektivitāti. Pielāgots nozares vajadzībām.', 'customTemplateDesc': - 'You can customize summary prompts according to your needs and use them to generate the required summaries.', + 'Jūs varat pielāgot kopsavilkuma uzvednes atbilstoši savām vajadzībām un izmantot tās, lai ģenerētu nepieciešamos kopsavilkumus.', 'askAiDesc': - 'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.', + 'Gudri izvelciet dziļāku informāciju no ierakstiem, ģenerējiet datu tabulas, galvenos diskusiju secinājumus, uzdevumu sarakstus, atskaišu e‑pastus un citu formatētu saturu ar vienu klikšķi.', 'visualMindMapDesc': - 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', + 'Vairāk nekā kopsavilkumi — organizējiet un vizualizējiet galvenos punktus prāta kartēs, lai efektīvāk izprastu visu tekstu.', 'templateCommunityDesc': - 'Discover, share, and get inspiration from the template library created by users.', + 'Atklājiet, kopīgojiet un smelieties iedvesmu no lietotāju veidoto veidņu bibliotēkas.', 'speakerIdentificationDesc': - 'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.', + 'Audio transkripcija atbalstīs runātāju atpazīšanu, intuitīvāk atjaunojot sapulces vai telefona zvana saturu. Tajā pašā laikā kopsavilkums būs precīzāks.', 'privateCloudSyncDesc': - 'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.', + 'Jūsu ieraksti un transkripcijas tiks droši glabāti īpašos mākoņserveros ar pilnīgu šifrēšanu augšupielādes un lejupielādes laikā, lai nodrošinātu privātumu un drošību.', 'aiVoiceEnhancementDesc': - 'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.', + 'AI balss uzlabošana atbalsta vairākus trokšņu slāpēšanas iestatījumus, gudri novērš fona troksni, uzlabo balss skaidrību un uzlabo audio atskaņošanas kvalitāti.', 'audioImportDesc': - 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', + 'Viegli importējiet audio failus no ierīces vai trešo pušu lietotnēm, piemēram, balss piezīmēm, Google Drive u.c.', 'multipleExportFormatsDesc': - 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - 'upgradeMembership': 'Upgrade Your Membership', - 'yearlySubscription': 'Yearly Subscription', - 'monthlySubscription': 'Monthly Subscription', + 'Eksportējiet audio ierakstus, transkripciju tekstu un kopsavilkumus dažādos formātos (TXT, PDF, JPEG), lai atbilstu jūsu vajadzībām.', + 'upgradeMembership': 'Jaunināt dalību', + 'yearlySubscription': 'Gada abonements', + 'monthlySubscription': 'Mēneša abonements', 'proMonthly': 'Pro ¥60/month', 'proMonthlyDesc': - '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', - 'sevenDayTrial': '7-day Free Trial', + '7 dienu bezmaksas izmēģinājums, pēc tam ¥800/gadā. Atceliet jebkurā laikā pirms izmēģinājuma beigām.', + 'sevenDayTrial': '7 dienu bezmaksas izmēģinājums', 'unlimitedMonthly': 'Unlimited ¥120/month', 'unlimitedMonthlyDesc': - '7-day free trial, then ¥1600/year. Cancel anytime before trial ends.', - 'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.', + '7 dienu bezmaksas izmēģinājums, pēc tam ¥1600/gadā. Atceliet jebkurā laikā pirms izmēģinājuma beigām.', + 'trialNote': + '*Bezmaksas izmēģinājums 7 dienas, pēc tam rēķins reizi gadā; var atcelt jebkurā laikā.', 'proPrice': 'Pro ¥120', 'proMonthlyPrice': '¥120/month', - 'subscribe': 'Subscribe', + 'subscribe': 'Abonēt', 'unlimitedPrice': 'Unlimited ¥198', 'unlimitedMonthlyPrice': '¥198/month', 'upgradeNote': - '*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account', - 'buyMoreTranscriptionTime': 'Buy More Transcription Time', + '*Pēc abonementa jaunināšanas atlikušās dienas no iepriekšējā abonementa tiks automātiski aprēķinātas un atmaksātas jūsu maksājumu kontā', + 'buyMoreTranscriptionTime': 'Pirkt vairāk transkripcijas laika', 'sixThousandMinutes': '6,000 minutes', 'threeThousandMinutes': '3,000 minutes', 'sixHundredMinutes': '600 minutes', 'oneHundredTwentyMinutes': '120 minutes', - 'validityPeriod': '*Validity Period: ', + 'validityPeriod': '*Derīguma termiņš: ', 'validityNote': - 'Activated immediately after purchase, valid for 2 years after activation.', - 'purchase': 'Purchase', + 'Aktivizējas uzreiz pēc iegādes, derīgs 2 gadus pēc aktivizēšanas.', + 'purchase': 'Iegādāties', // Meeting模块 - 录音语言 - 'recordLanguage': 'Recording Language', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', + 'recordLanguage': 'Ieraksta valoda', + 'cantonese': 'Kantoniešu', + 'sichuan': 'Sičuaņas dialekts', + 'shanghai': 'Šanhajas dialekts', // Meeting模块 - 错误提示 - 'meetingUnknownLanguage': 'Unknown Language', + 'meetingUnknownLanguage': 'Nezināma valoda', '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', @@ -768,10 +770,10 @@ const Map lvLV = { "translationRecharge": "Tulkošanas pārrakstīšana", "meetingAssistantRecharge": "Sapulces palīgs pārrakstīšana", "cloudSync": "Tīkla sincronizācijas pārrakstīšana", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "memberService": "Dalībnieku pakalpojums", + "bindRewardTitle": "Atlīdzības", "bindRewardSimpleDesc": - "First bind device reward has been issued. Tap OK to close.", + "Pirmās ierīces piesaistes atlīdzība ir piešķirta. Pieskarieties OK, lai aizvērtu.", "joinDevice": "Savienotā ierīce:", "accountId": "Konta ID:", "systemSetting": "Sistēmas iestatījumi", @@ -822,20 +824,21 @@ const Map lvLV = { "loading": "Ielādē...", // 设备管理模块 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", - "deviceTypeSmartEye": "Smart Glasses", + "deviceTypeUnknown": "Nezināma ierīce", + "deviceTypeClassicBluetoothHeadset": "Klasiskās Bluetooth austiņas", + "deviceTypeBleBluetoothHeadset": "BLE Bluetooth austiņas", + "deviceTypeSmartVoiceRecorder": "Viedais balss ierakstītājs", + "deviceTypeSmartEye": "Viedās brilles", "unbind": "Atsaistīt", - "noDevicesBound": "No devices bound yet", - "pleaseBindDeviceFirst": "Please bind a device first to manage", - "noMacAddress": "No MAC Address", - "licenseCode": "License Code", - "confirmUnbind": "Confirm Unbind", + "noDevicesBound": "Vēl nav piesaistītu ierīču", + "pleaseBindDeviceFirst": + "Lūdzu, vispirms piesaistiet ierīci, lai to pārvaldītu", + "noMacAddress": "Nav MAC adreses", + "licenseCode": "Licences kods", + "confirmUnbind": "Apstiprināt atsaisti", "confirmUnbindMessage": - "Are you sure you want to unbind device \"{deviceName}\"?", - "confirmUnbindAction": "Confirm Unbind", + "Vai tiešām vēlaties atsaitīt ierīci \"{deviceName}\"?", + "confirmUnbindAction": "Apstiprināt atsaisti", // Agent模块 - 主界面 "Lily": "Lily", @@ -866,22 +869,22 @@ const Map lvLV = { "loadFailedClickRetry": "Ielāde neizdevās, noklikšķiniet, lai mēģinātu vēlreiz", "swipeUpForMore": "Velciet uz augšu, lai redzētu vairāk", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 + "callingTool": "Es jums palīdzu, lūdzu, uzgaidiet!", // 正在帮您,请稍等! + "voice_interrupt": "Pārtraukt", // 语音打断 '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", // 今日天气 - "presetNews": "Today's news", // 今日新闻 - "presetFood": "Nearby food", // 美食 - "playSomeMusic": "Play some popular music", // 播放一些流行音乐 - "navigationTo": "Please help me navigate to", // 导航到 - "todayWeather": "How's the weather today?", // 今日天气 - "todayNews": "What's the news today?", // 今日新闻 - "nearbyFood": "What delicious food is nearby?", // 美食 + "presetMusic": "Uzliec mūziku", // 来点音乐 + "presetNavigation": "Navigēt uz", // 导航 + "presetWeather": "Šodienas laikapstākļi", // 今日天气 + "presetNews": "Šodienas ziņas", // 今日新闻 + "presetFood": "Ēdiens tuvumā", // 美食 + "playSomeMusic": "Atskaņo populāru mūziku", // 播放一些流行音乐 + "navigationTo": "Lūdzu, palīdzi man nokļūt uz", // 导航到 + "todayWeather": "Kādi šodien ir laikapstākļi?", // 今日天气 + "todayNews": "Kādas ir šodienas ziņas?", // 今日新闻 + "nearbyFood": "Kāds garšīgs ēdiens ir tuvumā?", // 美食 // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Sveiki! Esmu **SjaoJaņ**, es varu jums palīdzēt:\n\n' @@ -954,27 +957,27 @@ const Map lvLV = { "tsransit": "Sabiedriskais transports", // Agent模块 - 导航选择 - 'selectNavigationApp': 'Select Navigation App', + 'selectNavigationApp': 'Izvēlēties navigācijas lietotni', 'amapMap': 'Amap', - 'useAmapNavigation': 'Navigate with Amap', + 'useAmapNavigation': 'Navigēt ar Amap', 'baiduMap': 'Baidu Maps', - 'useBaiduNavigation': 'Navigate with Baidu Maps', + 'useBaiduNavigation': 'Navigēt ar Baidu Maps', 'googleMap': 'Google Maps', - 'useGoogleNavigation': 'Navigate with Google Maps', + 'useGoogleNavigation': 'Navigēt ar Google Maps', 'appleMap': 'Apple Maps', - 'useAppleNavigation': 'Navigate with Apple Maps', - 'builtInNavigation': 'Built-in Navigation', - 'useBuiltInNavigation': 'Navigate with built-in map', - 'navigationStartFailed': 'Failed to start navigation', + 'useAppleNavigation': 'Navigēt ar Apple Maps', + 'builtInNavigation': 'Iebūvētā navigācija', + 'useBuiltInNavigation': 'Navigēt ar iebūvēto karti', + 'navigationStartFailed': 'Neizdevās sākt navigāciju', 'cannotPlayMusicListRetryLater': - 'Cannot play music list, please try again later', - 'cannotPlaySong': 'Cannot play song', - 'openMapError': 'Error opening map', - 'pleaseInstallAmapApp': 'Please install the Amap app first', - 'pleaseInstallBaiduMapApp': 'Please install the Baidu Maps app first', - 'appleMapStartFailed': 'Apple Maps failed to start', - 'appleMapUnavailable': 'Apple Maps unavailable', - 'openAppleMapError': 'Error opening Apple Maps', + 'Nevar atskaņot mūzikas sarakstu, lūdzu, mēģiniet vēlāk', + 'cannotPlaySong': 'Nevar atskaņot dziesmu', + 'openMapError': 'Kļūda, atverot karti', + 'pleaseInstallAmapApp': 'Lūdzu, vispirms instalējiet Amap lietotni', + 'pleaseInstallBaiduMapApp': 'Lūdzu, vispirms instalējiet Baidu Maps lietotni', + 'appleMapStartFailed': 'Apple Maps neizdevās palaist', + 'appleMapUnavailable': 'Apple Maps nav pieejams', + 'openAppleMapError': 'Kļūda, atverot Apple Maps', // Agent模块 - 天气卡片 'weatherQuery': 'Laikapstākļu pieprasījums:', @@ -1029,8 +1032,8 @@ const Map lvLV = { "strongWind": "Stiprs vējš", // 翻译模块 - 中间层 - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", + "pictureTranslation": "Attēlu tulkošana", + "textTranslation": "Teksta tulkošana", // 翻译模块 - 主页 "translationHistory": "Tulkošanas vēsture", @@ -1040,33 +1043,33 @@ const Map lvLV = { "phoneUser": "Tālruņa lietotājs", "selectSourceLanguage": "Izvēlēties avota valodu", "selectTargetLanguage": "Izvēlēties mērķa valodu", - "me": "Me", - "counterPart": "Counterpart", + "me": "Es", + "counterPart": "Sarunu biedrs", "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - "autoDetect": "Auto Detect", // 自动检测 + "Lūdzu, pārliecinieties, ka Bluetooth austiņas ir pievienotas tālrunim un notiek zvans", + "autoDetect": "Automātiska noteikšana", // 自动检测 // 翻译模块 - 文本翻译 - "languageDetectionFailed": "Language detection failed", + "languageDetectionFailed": "Neizdevās noteikt valodu", // 翻译模块 - 悬浮窗与权限 - 'disableFloatingWindow': 'Disable Floating Window', - 'enableFloatingWindow': 'Enable Floating Window', - 'permissionTip': 'Permission Tip', + 'disableFloatingWindow': 'Atspējot peldošo logu', + 'enableFloatingWindow': 'Iespējot peldošo logu', + 'permissionTip': 'Atļauju padoms', 'micPermissionRequiredForRecording': - 'Microphone permission is required for recording', - 'deleteTranslationRecordError': 'Error deleting translation record: @error', - "translationFailed": "Translation failed", - "translating": "Translating", - "translate": "Translate", - "pleaseInputText": "Please input text", + 'Ierakstīšanai nepieciešama mikrofona atļauja', + 'deleteTranslationRecordError': 'Kļūda, dzēšot tulkošanas ierakstu: @error', + "translationFailed": "Tulkošana neizdevās", + "translating": "Tulko...", + "translate": "Tulkot", + "pleaseInputText": "Lūdzu, ievadiet tekstu", "inputTextToTranslate": "Lūdzu, ievadiet tulkojamo tekstu", - "textTooLong": "Text too long, max 5000 characters", + "textTooLong": "Teksts ir pārāk garš, maksimums 5000 rakstzīmes", // 翻译模块 - 历史记录 "noTranslationHistory": "Vēl nav vēstures", - "historyRecords": "History Records", - "clearResults": "Clear Results", + "historyRecords": "Vēstures ieraksti", + "clearResults": "Notīrīt rezultātus", "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.", @@ -1076,55 +1079,56 @@ const Map lvLV = { "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", + "selectImageSource": "Izvēlēties attēla avotu", + "imagePreview": "Attēla priekšskatījums", + "translationResult": "Tulkošanas rezultāts", + "recognitionResult": "Atpazīšanas rezultāts", + "translatedImagePreview": "Tulkotā attēla priekšskatījums", + "translatedImageLoadFailed": "Neizdevās ielādēt tulkoto attēlu", + "pleaseSelectImage": "Lūdzu, izvēlieties attēlu", + "imageLoadFailed": "Attēla ielāde neizdevās", + "imageQuality": "Attēla kvalitāte", + "maxSize": "Maksimālais izmērs", + "close": "Aizvērt", + "setImageQuality": "Iestatīt attēla kvalitāti", + "currentQuality": "Pašreizējā kvalitāte: @value%", + "setMaxSize": "Iestatīt maksimālo izmēru", + "currentMaxSize": "Pašreizējais: @pxpx", + "waitingForAction": "Gaida darbību", + "pleaseSelectImageToStart": "Lūdzu, izvēlieties attēlu, lai sāktu", + "chooseImage": "Izvēlēties attēlu", + "openingCamera": "Atver kameru...", + "openingPhotoAlbum": "Atver fotoalbumu...", + "cancelled": "Atcelts", + "userCancelledSelection": "Lietotājs atcēla izvēli", + "translatingImage": "Tulko attēlu", + "callingImageTranslateService": "Izsauc attēlu tulkošanas pakalpojumu...", + "savingRecord": "Saglabā ierakstu", + "savingTranslationResult": "Saglabā tulkošanas rezultātu...", + "translationCompleted": "Tulkošana pabeigta", + "allStepsCompleted": "Visas darbības pabeigtas", + "processingFailed": "Apstrāde neizdevās", "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", + "Attēla apstrāde vai tulkošana neizdevās. Lūdzu, mēģiniet vēlreiz.\nKļūda: {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", + "emptyTranslationResult": "Attēlu tulkošanas API atgrieza tukšu rezultātu", "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", + "Attēla tulkošana neizdevās. Tīkla problēma vai ātruma ierobežojums. Lūdzu, mēģiniet vēlāk", "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", + "Attēlu tulkošanas API izņēmums. Pārbaudiet tīklu un mēģiniet vēlreiz", + "permissionRequired": "Nepieciešama atļauja", + "cameraPermissionRequired": + "Lai uzņemtu fotoattēlus, nepieciešama kameras atļauja", "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", + "Lai izvēlētos attēlus, nepieciešama fotoalbuma atļauja", + "translationDetails": "Tulkošanas detaļas", + "originalImage": "Oriģinālais attēls", + "sourceLanguage": "Avota valoda", + "targetLanguage": "Mērķa valoda", + "translationTime": "Tulkošanas laiks", + "shareInDevelopment": "Kopīgošanas funkcija tiek izstrādāta", // 翻译模块 - 录音文件 "translateAudioFiles": "Tulkot audio failus", @@ -1222,32 +1226,32 @@ const Map lvLV = { 'Konta pakalpojums ir inicializēts', // AccountService 已初始化 // 权限模块 - 'meetingStoragePermission': 'Storage', + 'meetingStoragePermission': 'Glabātuve', 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', + 'Mums ir nepieciešama glabātuves atļauja, lai jūs varētu izvēlēties un augšupielādēt audio failus.', 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', + 'Konstatēts, ka jūs esat neatgriezeniski atteicis glabātuves atļauju. Lai turpinātu izmantot šo funkciju, atveriet lietotnes iestatījumus un manuāli iespējojiet glabātuves atļauju.', 'getPermissionStatusFailed': 'Neizdevās iegūt atļaujas statusu', 'communicationPermissions': 'Komunikācijas atļaujas', - 'bluetoothPermissions': 'Bluetooth Permissions', - 'notificationPermissions': 'Notification Permissions', - 'storagePermissions': 'Storage Permissions', - 'microphonePermissions': 'Microphone Permissions', - 'alarmPermissions': 'Alarm Permissions', + 'bluetoothPermissions': 'Bluetooth atļaujas', + 'notificationPermissions': 'Paziņojumu atļaujas', + 'storagePermissions': 'Glabātuves atļaujas', + 'microphonePermissions': 'Mikrofona atļaujas', + 'alarmPermissions': 'Modinātāja atļaujas', 'calendarPermissions': 'Kalendāra atļaujas', 'locationPermissions': 'Atrašanās vietas atļaujas', 'phone': 'Tālrunis', 'sms': 'SMS', - 'contacts': 'Contacts', - 'notification': 'Notification', - 'alarm': 'Alarm', + 'contacts': 'Kontakti', + 'notification': 'Paziņojumi', + 'alarm': 'Modinātājs', 'calendarWrite': 'Rakstīt kalendārā', 'calendarFullAccess': 'Pilna piekļuve kalendāram', 'locationInfo': 'Atrašanās vietas informācija', 'phonePermissionDesc': 'Izmanto zvanīšanas funkcijai', 'smsPermissionDesc': 'Izmanto SMS sūtīšanas funkcijai', 'alarmPermissionDesc': - 'Used to set exact alarms to ensure reminders trigger on time', + 'Izmanto precīzu modinātāju iestatīšanai, lai atgādinājumi ieslēgtos laikā', 'calendarWritePermissionDesc': 'Izmanto kalendāra notikumu un atgādinājumu izveidei', 'calendarFullAccessPermissionDesc': @@ -1266,72 +1270,73 @@ const Map lvLV = { 'Zvanīšanas funkcijai nepieciešama tālruņa atļauja', 'smsPermissionDetailDesc': 'SMS sūtīšanas funkcijai nepieciešama SMS atļauja', 'alarmPermissionDetailDesc': - 'This permission is required to set exact alarms and ensure reminders trigger on time', + 'Šī atļauja ir nepieciešama precīzu modinātāju iestatīšanai, lai atgādinājumi ieslēgtos laikā', 'calendarWritePermissionDetailDesc': 'Kalendāra notikumu izveidei nepieciešama kalendāra rakstīšanas atļauja', 'calendarFullAccessPermissionDetailDesc': 'Kalendāra notikumu pārvaldībai nepieciešama pilna kalendāra atļauja', 'locationPermissionDetailDesc': 'Atrašanās vietas informācijas iegūšanai nepieciešama atrašanās vietas atļauja', - 'contactsPermissionDesc': 'Used for accessing contact information', + 'contactsPermissionDesc': 'Izmanto kontaktinformācijas piekļuvei', 'contactsPermissionDetailDesc': - 'Phone call and SMS functionality requires contacts permission to select contacts', + 'Zvanīšanas un SMS funkcijām ir nepieciešama kontaktu atļauja, lai izvēlētos kontaktus', 'bluetoothPermissionDesc': - 'Used for connecting and managing Bluetooth devices', + 'Izmanto Bluetooth ierīču savienošanai un pārvaldībai', 'bluetoothPermissionDetailDesc': - 'Connecting to Bluetooth headphones and other devices requires Bluetooth permission', - 'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices', + 'Lai savienotos ar Bluetooth austiņām un citām ierīcēm, nepieciešama Bluetooth atļauja', + 'bluetoothScanPermissionDesc': + 'Izmanto tuvumā esošo Bluetooth ierīču skenēšanai', 'bluetoothScanPermissionDetailDesc': - 'Scanning for nearby Bluetooth devices requires Bluetooth scan permission', - 'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices', + 'Tuvumā esošo Bluetooth ierīču skenēšanai nepieciešama Bluetooth skenēšanas atļauja', + 'bluetoothConnectPermissionDesc': 'Izmanto savienošanai ar Bluetooth ierīcēm', 'bluetoothConnectPermissionDetailDesc': - 'Connecting to Bluetooth devices requires Bluetooth connect permission', - 'notificationPermissionDesc': 'Used for sending notification messages', + 'Savienošanai ar Bluetooth ierīcēm nepieciešama Bluetooth savienošanas atļauja', + 'notificationPermissionDesc': 'Izmanto paziņojumu ziņojumu sūtīšanai', 'notificationPermissionDetailDesc': - 'App needs notification permission to send you important alerts and messages', + 'Lietotnei ir nepieciešama paziņojumu atļauja, lai nosūtītu jums svarīgus brīdinājumus un ziņas', 'appNeedsPermissionForFullFunction': 'Lietotnei ir nepieciešama šī atļauja pilnai funkcionalitātei', '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', + 'bluetoothScan': 'Bluetooth skenēšana', + 'bluetoothConnect': 'Bluetooth savienošana', 'bluetoothScanExplanation': - 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', + 'Lietotnei ir nepieciešama Bluetooth skenēšanas atļauja, lai skenētu tuvumā esošās Bluetooth ierīces.', 'bluetoothConnectExplanation': - 'The app needs Bluetooth connect permission to connect to Bluetooth devices.', + 'Lietotnei ir nepieciešama Bluetooth savienošanas atļauja, lai savienotos ar Bluetooth ierīcēm.', 'locationForBluetoothExplanation': - 'The app needs location permission to scan Bluetooth devices.', + 'Lietotnei ir nepieciešama atrašanās vietas atļauja, lai skenētu Bluetooth ierīces.', 'bluetoothScanPermanentDenial': - 'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.', + 'Bluetooth skenēšanas atļauja ir neatgriezeniski atteikta; atveriet iestatījumus un manuāli to iespējojiet.', 'bluetoothConnectPermanentDenial': - 'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.', + 'Bluetooth savienošanas atļauja ir neatgriezeniski atteikta; atveriet iestatījumus un manuāli to iespējojiet.', 'locationPermanentDenial': - 'Location permission has been permanently denied, please go to settings to enable it manually.', - 'notificationPermission': 'Notification', - 'locationPermission': 'Location', + 'Atrašanās vietas atļauja ir neatgriezeniski atteikta; atveriet iestatījumus un manuāli to iespējojiet.', + 'notificationPermission': 'Paziņojumi', + 'locationPermission': 'Atrašanās vieta', 'notificationPermissionExplanation': - 'Notification permission is required to display music playback status.', + 'Paziņojumu atļauja ir nepieciešama, lai parādītu mūzikas atskaņošanas statusu.', 'locationPermissionExplanation': - 'Location permission is required to get current location.', + 'Atrašanās vietas atļauja ir nepieciešama, lai iegūtu pašreizējo atrašanās vietu.', 'notificationPermissionPermanentDenial': - 'You have permanently denied notification permission, please go to settings to enable it.', + 'Jūs esat neatgriezeniski atteicis paziņojumu atļauju; atveriet iestatījumus un to iespējojiet.', 'locationPermissionPermanentDenial': - 'You have permanently denied location permission, please go to settings to enable it.', - 'storagePermission': 'Storage', + 'Jūs esat neatgriezeniski atteicis atrašanās vietas atļauju; atveriet iestatījumus un to iespējojiet.', + 'storagePermission': 'Glabātuve', 'microphonePermissionExplanation': - 'We need microphone permission to record audio content.', + 'Mums ir nepieciešama mikrofona atļauja, lai ierakstītu audio.', 'storagePermissionExplanation': - 'We need storage permission so you can select and upload audio files.', + 'Mums ir nepieciešama glabātuves atļauja, lai jūs varētu izvēlēties un augšupielādēt audio failus.', 'microphonePermissionPermanentDenial': - 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', + 'Mikrofona atļauja ir neatgriezeniski atteikta. Lai turpinātu izmantot šo funkciju, atveriet lietotnes iestatījumus un manuāli iespējojiet mikrofona atļauju.', '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', + 'Glabātuves atļauja ir neatgriezeniski atteikta. Lai turpinātu izmantot šo funkciju, atveriet lietotnes iestatījumus un manuāli iespējojiet glabātuves atļauju.', + 'permissionUtilNeed': 'Nepieciešama ', + 'permissionUtilPermission': ' atļauja', + 'permissionUtilRestricted': ' atļauja ir ierobežota', 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'Šī funkcija pašreizējā ierīcē nav pieejama vai ir ierobežota; pārbaudiet ierīces iestatījumus vai sistēmas ierobežojumus', 'permissionUtilConfirm': 'OK', // 原生前台服务通知(Android) @@ -1422,27 +1427,28 @@ const Map lvLV = { 'bleConnectionFailed': 'BLE savienojums neizdevās', 'deviceAuthorizationFailedCheckCode': 'Ierīces autorizācija neizdevās, lūdzu, pārbaudiet autorizācijas kodu', - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + 'bluetoothGuideTitle': + 'Nepieciešama manuāla Bluetooth aktivizēšana', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'Lūdzu, sekojiet šiem soļiem:', // 请按照以下步骤操作: 'bluetoothGuideStep1': - 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'Ieslēdziet Bluetooth: Iestatījumi → Bluetooth → Ieslēgt', // 开启蓝牙:设置 → 蓝牙 → 开启 'bluetoothGuideStep2': - 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'Savienojiet ierīci: sadaļā "Manas ierīces" atrodiet savu ierīci un pieskarieties, lai savienotu', // 连接设备:在"我的设备"中找到您的设备并点击连接 'bluetoothGuideStep3': - 'Return to app to continue pairing process', // 返回应用继续配对流程 + 'Atgriezieties lietotnē, lai turpinātu savienošanas pārī procesu', // 返回应用继续配对流程 'bluetoothGuideTip': - 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': 'I Know', // 我知道了 + 'Padoms: varat arī turēt nospiestu Bluetooth ikonu Vadības centrā, lai ātri atvērtu Bluetooth iestatījumus', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + 'iKnow': 'Sapratu', // 我知道了 // 配对模块 - 绑定奖励 - "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:", + "firstBindRewardTitle": "Pirmā saistīšana", + "firstBindRewardDesc": "Jūs esat saistīts ar kontu.", + "vipLevelLabel": "VIP Nivēls:", + "expiryLabel": "Apmēr:", + "notActivated": "Nepieciešama aktivizācija", + "aiChatCreditsLabel": "AI Pieslēgšanas kredīti:", + "translationCreditsLabel": "Tulkošanas kredīti:", + "meetingCreditsLabel": "Mēnešēšanas kredīti:", "ok": "OK", // 用户反馈模块 @@ -1474,13 +1480,14 @@ const Map lvLV = { "connectionFailed": "Savienojums neizdevās", "retryConnection": "Mēģināt savienot vēlreiz", "ota_updateNow": "Atjaunināt tagad", - "otaVersionInfoFailed": "Failed to get version info. Please try again later.", + "otaVersionInfoFailed": + "Neizdevās iegūt versijas informāciju. Lūdzu, mēģiniet vēlāk.", "otaDeviceInfoUnavailable": - "Unable to get device info. Please check the connection and retry.", + "Nevar iegūt ierīces informāciju. Pārbaudiet savienojumu un mēģiniet vēlreiz.", "otaProductInfoUnavailable": - "Unable to identify the device. Please reconnect and retry.", + "Nevar identificēt ierīci. Lūdzu, pievienojiet no jauna un mēģiniet vēlreiz.", "otaFirmwareVersionInvalid": - "Firmware version is abnormal. Please reconnect and retry.", + "Programmaparatūras versija ir nepareiza. Lūdzu, pievienojiet no jauna un mēģiniet vēlreiz.", "keepConnectedDontClose": "Turiet ierīci savienotu, neaizveriet lietotni", "doNotDisconnect": "Neatvienojiet", "charging": "Uzlādējas", @@ -1489,57 +1496,57 @@ const Map lvLV = { "Izņemiet abas austiņas un pārliecinieties, ka abu baterijas līmenis ir virs 20%", // OTA升级模块 - 弹窗与对话框 - 'otaNewVersionFoundWithVersion': 'New version @version found', - 'otaConfirmUpdateNow': 'Update now?', - 'otaUpdate': 'Update', - 'otaUpgradeSuccess': 'Upgrade Successful', + 'otaNewVersionFoundWithVersion': 'Atrasta jauna versija @version', + 'otaConfirmUpdateNow': 'Atjaunināt tagad?', + 'otaUpdate': 'Atjaunināt', + 'otaUpgradeSuccess': 'Jaunināšana veiksmīga', 'otaUpgradeCompleteRepair': - 'Firmware upgrade complete!\n\nDevice needs to be re-paired to work properly. Go to pairing page now?', - 'otaPairLater': 'Pair Later', - 'otaPairNow': 'Pair Now', + 'Programmaparatūras jaunināšana pabeigta!\n\nIerīce jāsavieno pārī no jauna, lai tā darbotos pareizi. Vai doties uz savienošanas lapu tagad?', + 'otaPairLater': 'Savienot vēlāk', + 'otaPairNow': 'Savienot tagad', 'okConfirm': 'OK', // OTA升级模块 - 设备检查 - 'otaBleCheckErrorWithError': 'Error checking BLE connection: @error', - 'otaBleNotConnected': 'BLE Device Not Connected', + 'otaBleCheckErrorWithError': 'Kļūda, pārbaudot BLE savienojumu: @error', + 'otaBleNotConnected': 'BLE ierīce nav savienota', 'otaBleNeedConnection': - 'Firmware upgrade requires BLE device connection\nPlease ensure device is properly connected and try again', - 'otaDeviceInfoUnavailableTitle': 'Device Info Unavailable', + 'Programmaparatūras jaunināšanai nepieciešams BLE savienojums\nLūdzu, pārliecinieties, ka ierīce ir pareizi savienota, un mēģiniet vēlreiz', + 'otaDeviceInfoUnavailableTitle': 'Ierīces informācija nav pieejama', 'otaCannotGetDeviceInfo': - 'Cannot get device info\nPlease reconnect device or try again later', - 'otaBleCheckFailed': 'BLE Connection Check Failed', + 'Nevar iegūt ierīces informāciju\nLūdzu, pievienojiet ierīci no jauna vai mēģiniet vēlāk', + 'otaBleCheckFailed': 'BLE savienojuma pārbaude neizdevās', 'otaCannotGetDeviceInfoCheckConnection': - 'Cannot get device info, please check device connection', + 'Nevar iegūt ierīces informāciju, lūdzu, pārbaudiet ierīces savienojumu', 'otaCannotGetProductInfoWithName': - 'Cannot get product info, device name: @deviceName', + 'Nevar iegūt produkta informāciju, ierīces nosaukums: @deviceName', 'otaCannotGetBatteryInfo': 'Cannot get valid battery info', 'otaLowBattery': 'Low Battery', 'otaSingleBatteryLow': - 'Device battery too low for firmware upgrade\nRequirement: battery must be above 20%\nCurrent: @ear @battery%\nPlease charge and try again', + 'Ierīces baterija ir pārāk zema programmaparatūras jaunināšanai\nPrasība: baterijai jābūt virs 20%\nPašlaik: @ear @battery%\nLūdzu, uzlādējiet un mēģiniet vēlreiz', 'otaDoubleBatteryLow': - 'Device battery too low for firmware upgrade\nRequirement: both earbuds must be above 20%\nCurrent: Left @left%, Right @right%\nPlease charge and try again', - 'otaBatteryCheckFailed': 'Battery Check Failed', + 'Ierīces baterija ir pārāk zema programmaparatūras jaunināšanai\nPrasība: abām austiņām jābūt virs 20%\nPašlaik: Kreisā @left%, Labā @right%\nLūdzu, uzlādējiet un mēģiniet vēlreiz', + 'otaBatteryCheckFailed': 'Baterijas pārbaude neizdevās', // OTA升级模块 - 升级状态 'otaDefaultUpdateDesc': - 'This update includes performance optimizations and bug fixes.', - 'otaGetLatestVersionFailed': 'Failed to get latest version info', - 'otaGetVersionInfoFailed': 'Failed to get version info', - 'otaCheckingDeviceStatus': 'Checking device status...', + 'Šajā atjauninājumā ir veiktas veiktspējas optimizācijas un kļūdu labojumi.', + 'otaGetLatestVersionFailed': 'Neizdevās iegūt jaunākās versijas informāciju', + 'otaGetVersionInfoFailed': 'Neizdevās iegūt versijas informāciju', + 'otaCheckingDeviceStatus': 'Pārbauda ierīces statusu...', 'otaDownloadFailedCheckNetwork': - 'Download failed, please check network connection', - 'otaDownloadFailed': 'Download Failed', - 'otaPreparingConnection': 'Preparing device connection...', - 'otaConnectingDevice': 'Connecting to device...', + 'Lejupielāde neizdevās, lūdzu, pārbaudiet tīkla savienojumu', + 'otaDownloadFailed': 'Lejupielāde neizdevās', + 'otaPreparingConnection': 'Sagatavo ierīces savienojumu...', + 'otaConnectingDevice': 'Savienojas ar ierīci...', 'otaUpgradeStarted': 'OTA upgrade started...', 'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%', - 'otaUpgradeSuccessComplete': 'Upgrade completed successfully', - 'otaUpgradeFailedWithCode': 'Upgrade failed, error code: @code', - 'otaUpgradeFailedTitle': 'Upgrade Failed', + 'otaUpgradeSuccessComplete': 'Jaunināšana pabeigta veiksmīgi', + 'otaUpgradeFailedWithCode': 'Jaunināšana neizdevās, kļūdas kods: @code', + 'otaUpgradeFailedTitle': 'Jaunināšana neizdevās', 'otaUpgradeFailedDesc': - 'Please check device connection or update package, error code: @code', - 'otaDeviceDisconnected': 'Device disconnected', - 'otaDeviceConnected': 'Device connected', + 'Lūdzu, pārbaudiet ierīces savienojumu vai atjauninājuma pakotni, kļūdas kods: @code', + 'otaDeviceDisconnected': 'Ierīce atvienota', + 'otaDeviceConnected': 'Ierīce savienota', // 音乐模块 "noMusic": "Nav mūzikas", // 暂无音乐 diff --git a/lib/core/translations/language/ms_my.dart b/lib/core/translations/language/ms_my.dart index cd30995de..4abf1cd6f 100644 --- a/lib/core/translations/language/ms_my.dart +++ b/lib/core/translations/language/ms_my.dart @@ -1,3 +1,4 @@ +// 马来西亚-马来语 const Map msMY = { // 通用 'continue': 'Teruskan', @@ -701,42 +702,43 @@ const Map msMY = { 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Eksport rakaman audio, teks transkripsi dan ringkasan anda dalam pelbagai format (TXT, PDF, JPEG) mengikut keperluan.', - 'upgradeMembership': 'Upgrade Your Membership', - 'yearlySubscription': 'Yearly Subscription', - 'monthlySubscription': 'Monthly Subscription', - 'proMonthly': 'Pro ¥60/month', + 'upgradeMembership': 'Naik taraf keahlian', + 'yearlySubscription': 'Langganan tahunan', + 'monthlySubscription': 'Langganan bulanan', + 'proMonthly': 'Pro ¥60/bulan', 'proMonthlyDesc': - '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', - 'sevenDayTrial': '7-day Free Trial', - 'unlimitedMonthly': 'Unlimited ¥120/month', + 'Percubaan percuma 7 hari, kemudian ¥800/tahun. Batal bila-bila masa sebelum percubaan tamat.', + 'sevenDayTrial': 'Percubaan percuma 7 hari', + 'unlimitedMonthly': 'Tanpa had ¥120/bulan', 'unlimitedMonthlyDesc': - '7-day free trial, then ¥1600/year. Cancel anytime before trial ends.', - 'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.', + 'Percubaan percuma 7 hari, kemudian ¥1600/tahun. Batal bila-bila masa sebelum percubaan tamat.', + 'trialNote': + '*Percubaan percuma 7 hari, kemudian dikenakan caj tahunan; boleh dibatalkan bila-bila masa.', 'proPrice': 'Pro ¥120', - 'proMonthlyPrice': '¥120/month', - 'subscribe': 'Subscribe', + 'proMonthlyPrice': '¥120/bulan', + 'subscribe': 'Langgan', 'unlimitedPrice': 'Unlimited ¥198', - 'unlimitedMonthlyPrice': '¥198/month', + 'unlimitedMonthlyPrice': '¥198/bulan', 'upgradeNote': - '*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account', - 'buyMoreTranscriptionTime': 'Buy More Transcription Time', - 'sixThousandMinutes': '6,000 minutes', - 'threeThousandMinutes': '3,000 minutes', - 'sixHundredMinutes': '600 minutes', - 'oneHundredTwentyMinutes': '120 minutes', - 'validityPeriod': '*Validity Period: ', + '*Selepas menaik taraf langganan, baki hari langganan asal akan dikira secara automatik dan dipulangkan ke akaun pembayaran anda', + 'buyMoreTranscriptionTime': 'Beli lebih masa transkripsi', + 'sixThousandMinutes': '6,000 minit', + 'threeThousandMinutes': '3,000 minit', + 'sixHundredMinutes': '600 minit', + 'oneHundredTwentyMinutes': '120 minit', + 'validityPeriod': '*Tempoh sah: ', 'validityNote': - 'Activated immediately after purchase, valid for 2 years after activation.', - 'purchase': 'Purchase', + 'Diaktifkan serta-merta selepas pembelian, sah selama 2 tahun selepas pengaktifan.', + 'purchase': 'Beli', // Meeting模块 - 录音语言 'recordLanguage': 'Bahasa Rakaman', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', + 'cantonese': 'Kantonis', + 'sichuan': 'Dialek Sichuan', + 'shanghai': 'Dialek Shanghai', // Meeting模块 - 错误提示 - 'meetingUnknownLanguage': 'Unknown Language', + 'meetingUnknownLanguage': 'Bahasa tidak diketahui', 'analysisFailed': 'Analisis gagal, sila cuba lagi kemudian', 'transcriptionFailed': 'Transkripsi gagal, sila cuba lagi kemudian', 'summaryFailed': 'Ringkasan gagal, sila cuba lagi kemudian', @@ -853,21 +855,21 @@ const Map msMY = { "loadFailedClickRetry": "Gagal memuatkan, klik untuk cuba lagi", "swipeUpForMore": "Leret ke atas untuk lebih banyak", "callingTool": "Saya sedang membantu anda, sila tunggu!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 + "voice_interrupt": "Hentikan", // 语音打断 '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", // 今日天气 - "presetNews": "Today's news", // 今日新闻 - "presetFood": "Nearby food", // 美食 - "playSomeMusic": "Play some popular music", // 播放一些流行音乐 + "presetMusic": "Mainkan muzik", // 来点音乐 + "presetNavigation": "Navigasi ke", // 导航 + "presetWeather": "Cuaca hari ini", // 今日天气 + "presetNews": "Berita hari ini", // 今日新闻 + "presetFood": "Makanan berdekatan", // 美食 + "playSomeMusic": "Mainkan muzik popular", // 播放一些流行音乐 "navigationTo": "Tolong bantu saya menavigasi ke", // 导航到 - "todayWeather": "How's the weather today?", // 今日天气 - "todayNews": "What's the news today?", // 今日新闻 - "nearbyFood": "What delicious food is nearby?", // 美食 + "todayWeather": "Bagaimana cuaca hari ini?", // 今日天气 + "todayNews": "Apakah berita hari ini?", // 今日新闻 + "nearbyFood": "Apa makanan sedap yang berdekatan?", // 附近有什么好吃的 // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Helo! Saya **Lily**, saya boleh bantu anda:\n\n' @@ -1417,14 +1419,14 @@ const Map msMY = { 'iKnow': 'Saya Faham', // 我知道了 // 配对模块 - 绑定奖励 - "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:", + "firstBindRewardTitle": "Pembelian Terlebih Dahulu", + "firstBindRewardDesc": "Anda telah menerima premi binding.", + "vipLevelLabel": "Level VIP:", + "expiryLabel": "Tamat tempoh:", + "notActivated": "Belum diaktifkan", + "aiChatCreditsLabel": "Kredit Chat AI:", + "translationCreditsLabel": "Kredit Terjemahan:", + "meetingCreditsLabel": "Kredit Meeting:", "ok": "OK", // 用户反馈模块 diff --git a/lib/core/translations/language/nb_no.dart b/lib/core/translations/language/nb_no.dart index a7909ad5f..823b4981a 100644 --- a/lib/core/translations/language/nb_no.dart +++ b/lib/core/translations/language/nb_no.dart @@ -1,5 +1,5 @@ +// 挪威-挪威语 const Map nbNO = { - // 通用 'continue': 'Fortsett', 'confirm': 'Bekreft', @@ -171,12 +171,16 @@ const Map nbNO = { // 蓝牙扫描模块 'bleInitFailedWithError': 'Bluetooth-initialisering mislyktes: @error', - 'needBluetoothAndLocationPermission': 'Bluetooth- og plasseringstillatelser kreves for å skanne enheter', - 'permissionRequestFailedWithError': 'Tillatelsesforespørsel mislyktes: @error', + 'needBluetoothAndLocationPermission': + 'Bluetooth- og plasseringstillatelser kreves for å skanne enheter', + 'permissionRequestFailedWithError': + 'Tillatelsesforespørsel mislyktes: @error', 'needPermission': 'Tillatelse kreves', - 'blePermissionDialogContent': 'Appen trenger Bluetooth- og plasseringstillatelser for å skanne enheter. Aktiver dem i Innstillinger.', + 'blePermissionDialogContent': + 'Appen trenger Bluetooth- og plasseringstillatelser for å skanne enheter. Aktiver dem i Innstillinger.', 'needEnableBluetooth': 'Aktiver Bluetooth', - 'enableBluetoothDialogContent': 'Aktiver Bluetooth for å skanne og koble til enheter.', + 'enableBluetoothDialogContent': + 'Aktiver Bluetooth for å skanne og koble til enheter.', 'bleScanFailedWithError': 'Skanning mislyktes: @error', 'bleConnectionSuccess': 'Tilkobling vellykket', 'bleConnectedToDevice': 'Koblet til @device', @@ -215,115 +219,116 @@ const Map nbNO = { "scene": "Scenario", // 用量统计模块 - "aiChat": "AI Chat", - "translationStats": "Translation Statistics", - "meetingStats": "Meeting Statistics", - "today": "Today", - "thisWeek": "This Week", - "thisMonth": "This Month", - "history": "History", - "currentSessionStats": "Current Session Stats", - "translationCount": "Translation Count", - "sessionDuration": "Session Duration", - "characters": "Characters", - "recordingDuration": "Recording Duration", - "totalApiCalls": "Total API Calls", - "sessionCount": "Session Count", - "totalCharacters": "Total Characters", - "apiCallStats": "API Call Stats", - "translationApi": "Translation API", + "aiChat": "AI-chat", + "translationStats": "Oversettelsesstatistikk", + "meetingStats": "Møtestatistikk", + "today": "I dag", + "thisWeek": "Denne uken", + "thisMonth": "Denne måneden", + "history": "Historikk", + "currentSessionStats": "Statistikk for gjeldende økt", + "translationCount": "Antall oversettelser", + "sessionDuration": "Øktvarighet", + "characters": "Tegn", + "recordingDuration": "Opptaksvarighet", + "totalApiCalls": "Totalt antall API-kall", + "sessionCount": "Antall økter", + "totalCharacters": "Totalt antall tegn", + "apiCallStats": "Statistikk for API-kall", + "translationApi": "Oversettelses-API", "asr": "ASR", "tts": "TTS", - "dataVolumeStats": "Data Volume Stats", - "sourceTextCharacters": "Source Text Characters", - "ttsTextCharacters": "TTS Text Characters", - "effectiveAudioDuration": "Effective Audio Duration", - "totalSessionDuration": "Total Session Duration", - "costStats": "Cost Stats", - "estimatedCost": "Estimated Cost", - "dailyCostThreshold": "Daily Cost Threshold", - "monthlyCostThreshold": "Monthly Cost Threshold", - "usageBehaviorStats": "Usage Behavior Stats", - "mostUsedLanguagePair": "Most-used language pair", - "mostUsedMode": "Most-used mode", - "asrApiCalls": "ASR Calls", - "totalAudioDuration": "Total Audio Duration", - "audioFileSize": "Audio File Size", - "transcriptBytes": "Transcript Bytes", - "loadFailed": "Load Failed", - "statsLoadFailedTryLater": - "Statistics failed to load. Please try again later.", + "dataVolumeStats": "Statistikk for datamengde", + "sourceTextCharacters": "Tegn i kildetekst", + "ttsTextCharacters": "Tegn i TTS-tekst", + "effectiveAudioDuration": "Effektiv lydvarighet", + "totalSessionDuration": "Total øktvarighet", + "costStats": "Kostnadsstatistikk", + "estimatedCost": "Estimert kostnad", + "dailyCostThreshold": "Daglig kostnadsgrense", + "monthlyCostThreshold": "Månedlig kostnadsgrense", + "usageBehaviorStats": "Statistikk for bruksmønster", + "mostUsedLanguagePair": "Mest brukte språkpar", + "mostUsedMode": "Mest brukte modus", + "asrApiCalls": "ASR-kall", + "totalAudioDuration": "Total lydvarighet", + "audioFileSize": "Lydfilstørrelse", + "transcriptBytes": "Transkripsjonsbyte", + "loadFailed": "Kunne ikke laste", + "statsLoadFailedTryLater": "Kunne ikke laste statistikk. Prøv igjen senere.", "cleanupComplete": "Cleanup Complete", "cleanedOldData": "Cleaned data older than 90 days", "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", // 商品模块 - 通用 - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - '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", + 'availablePackages': 'Tilgjengelige pakker', + 'remainingQuota': 'Gjenstående kvote', + 'totalQuota': 'Total kvote', + 'remaining': 'Gjenstår', + 'featureDescription': 'Funksjonsbeskrivelse', + '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": "Ikke nok poeng", "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', + 'Ikke nok saldo. Gå til riktig påfyllingsside for å fylle på.', + "recharge": 'Gå til påfylling', "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + 'AI-medlemskapet er utløpt. Gå til medlemskapets påfyllingsside for å fornye.', // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', @@ -351,18 +356,18 @@ const Map nbNO = { 'templatedMessagesAndScheduleReminders': 'Template messages and schedule reminders', 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', + 'Funksjoner avhenger av enhetstillatelser, tjenestetilgjengelighet og nettverksforhold.', // 商品模块 - 翻译商品页 'realtimeTranscription': 'Real-time Transcription', 'sceneLexicon': 'Scenario Glossary', 'subtitleDisplay': 'Subtitles', 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'Sanntid simultantolking og tekstoversettelse med lav forsinkelse.', 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', + 'translateZhEn': 'Kinesisk–engelsk oversettelse', 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', + 'multiLangTextTranslation': 'Flerspråklig tekstoversettelse', 'termOptimizationContextPreserve': 'Terminology optimization and context preservation', 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', @@ -370,18 +375,18 @@ const Map nbNO = { 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', 'colorHighContrast': 'High color contrast', 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', + 'Oversettelsesytelsen avhenger av mikrofon, nettverksforsinkelse og bakgrunnsstøy.', // 商品模块 - 会议商品页 - 'meetingRecording': 'Meeting Recording', + 'meetingRecording': 'Møteopptak', 'transcriptionAndSummary': 'Transcription & Summary', 'keywordSearch': 'Keyword Search', 'collaborationSharing': 'Collaboration & Sharing', 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'Lydopptak, transkripsjon, nøkkelordsøk og automatisk oppsummering for å øke møteffektiviteten.', 'meetingHeaderDesc2': 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingAutoRecording': 'Automatisk opptak og segmentering', 'meetingSpeakerTagging': 'Speaker labeling', 'meetingLongAudioTranscription': 'Long audio transcription', 'meetingKeyPointSummary': 'Key point extraction', @@ -390,7 +395,7 @@ const Map nbNO = { 'meetingExportSummary': 'Export minutes', 'meetingMultiPlatformShare': 'Share across platforms', 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', + 'Bruk i rolige omgivelser; ytelsen avhenger av mikrofon og nettverk.', // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', @@ -404,7 +409,7 @@ const Map nbNO = { 'longTermDiscountPlan': 'Long-term discount plan', 'generalPrivileges': 'General privileges', 'earlyAccessNewFeatures': 'Early access to new features', - 'crossDeviceSync': 'Cross-device sync', + 'crossDeviceSync': 'Synkronisering på tvers av enheter', 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', @@ -415,18 +420,18 @@ const Map nbNO = { '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', + 'trans_001_name': 'Oversettelse Basis 100', + 'trans_002_name': 'Oversettelse Basis 500', + 'trans_003_name': 'Oversettelse Basis 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).', + 'meet_001_desc': 'Inkluderer 100 møteopptak/transkripsjoner.', + 'meet_002_desc': 'Inkluderer 500 møteopptak/transkripsjoner.', + 'meet_003_desc': 'Inkluderer 1000 møteopptak/transkripsjoner.', + 'trans_001_desc': 'Inkluderer 100 oversettelser (tale/tekst).', + 'trans_002_desc': 'Inkluderer 500 oversettelser (tale/tekst).', + 'trans_003_desc': 'Inkluderer 1000 oversettelser (tale/tekst).', // 商品模块 - 页脚 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', @@ -482,52 +487,60 @@ const Map nbNO = { 'recordingDetails': 'Opptaksdetaljer', 'aiSummary': 'AI-sammendrag', 'meetingTranscript': 'Møtetranskripsjon', - 'files': 'Files', + 'files': 'Filer', 'mine': 'Mine', - 'connect': 'Connect', - 'allFiles': 'All Files', - 'searchInAllFiles': 'Search in all files', - 'from': 'From', - 'sortBy': 'Sort by', - 'creationTime': 'Creation Time', - 'bluetoothConnection': 'Bluetooth Connection', - 'meetingReconnect': 'Reconnect', - 'searching': 'Searching...', - 'searchFailed': 'Search failed, please check if Bluetooth is enabled', - 'aiPenNotFound': 'AI PEN device not found', - 'connectedToAiPen': 'Connected to AI PEN device', - 'checkingNewFiles': 'Checking for new files to import', + 'connect': 'Koble til', + 'allFiles': 'Alle filer', + 'searchInAllFiles': 'Søk i alle filer', + 'from': 'Fra', + 'sortBy': 'Sorter etter', + 'creationTime': 'Opprettelsestid', + 'bluetoothConnection': 'Bluetooth-tilkobling', + 'meetingReconnect': 'Koble til på nytt', + 'searching': 'Søker...', + 'searchFailed': 'Søk mislyktes, sjekk at Bluetooth er aktivert', + 'aiPenNotFound': 'AI PEN-enhet ble ikke funnet', + 'connectedToAiPen': 'Tilkoblet AI PEN-enhet', + 'checkingNewFiles': 'Ser etter nye filer for import', 'startingWifi': 'Starting Wi-Fi...', 'newFilesDetected': 'New files detected, preparing to import', 'noNewFiles': 'No new files to import', - 'connectingWifi': 'Connecting to Wi-Fi...', - 'wifiConnected': 'Wi-Fi connected successfully', - 'downloadingFiles': 'Downloading files...', - 'downloadingFileProgress': 'Total {total} files, downloading file {current}', - 'downloadComplete': 'Download complete', + 'connectingWifi': 'Kobler til Wi‑Fi...', + 'wifiConnected': 'Wi‑Fi tilkoblet', + 'downloadingFiles': 'Laster ned filer...', + 'downloadingFileProgress': 'Totalt {total} filer, laster ned fil {current}', + 'downloadComplete': 'Nedlasting fullført', 'downloadCompleteInfo': - 'Download complete, {count} files in total, returning automatically in 2 seconds', + 'Nedlasting fullført, {count} filer totalt. Går tilbake automatisk om 2 sekunder', // Meeting模块 - 录音功能 - 'startRecording': 'Start Recording', - 'liveRecording': 'Live Recording', - 'audioVideoRecording': 'Audio/Video Recording', - 'callRecording': 'Call Recording', + 'startRecording': 'Start opptak', + 'liveRecording': 'Direkteopptak', + 'audioVideoRecording': 'Lyd-/videoopptak', + 'callRecording': 'Samtaleopptak', 'importAudio': 'Import Audio', 'meetingRecordExitTitle': 'Avslutt opptak', // 退出录音 - 'meetingRecordExitMessage': 'Velg hva du vil gjøre før du avslutter', // 请选择离开后的操作 + 'meetingRecordExitMessage': + 'Velg hva du vil gjøre før du avslutter', // 请选择离开后的操作 'meetingRecordEndAndSave': 'Avslutt og lagre', // 结束录音并保存 'meetingRecordEndWithoutSave': 'Avslutt uten å lagre', // 结束录音不保存 'meetingRecordContinueInBackground': 'Fortsett opptak i bakgrunnen', // 后台继续录音 - 'meetingRecordStopTimeout': 'Tidsavbrudd ved stopp av opptaket. Prøv igjen.', // 结束录音超时,请重试 - 'meetingRecordStopFailed': 'Kunne ikke stoppe opptaket. Prøv igjen.', // 结束录音失败,请重试 - 'meetingRecordSaveFailed': 'Kunne ikke lagre opptaket. Prøv igjen.', // 保存录音失败,请重试 + 'meetingRecordStopTimeout': + 'Tidsavbrudd ved stopp av opptaket. Prøv igjen.', // 结束录音超时,请重试 + 'meetingRecordStopFailed': + 'Kunne ikke stoppe opptaket. Prøv igjen.', // 结束录音失败,请重试 + 'meetingRecordSaveFailed': + 'Kunne ikke lagre opptaket. Prøv igjen.', // 保存录音失败,请重试 'meetingRecordRecordingNotificationTitle': 'Opptak pågår', // 录音进行中 - 'meetingRecordRecordingNotificationBody': 'Opptak i bakgrunnen. Trykk for å gå tilbake til appen.', // 正在后台录音,点击返回应用 + 'meetingRecordRecordingNotificationBody': + 'Opptak i bakgrunnen. Trykk for å gå tilbake til appen.', // 正在后台录音,点击返回应用 'overlayPermissionTitle': 'Vis over andre apper', // 悬浮窗权限 - 'overlayPermissionTranslationDesc': 'For å vise oversettelsesresultater under samtaler eller lyd-/videooversettelse, trenger vi tillatelse til å vises over andre apper. Da kan du se sanntidsoversettelser mens du bruker andre apper.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 - 'overlayPermissionRecordingDesc': 'For å vise den flytende opptakslinjen (timer/pause/fortsett) under opptak, trenger vi tillatelse til å vises over andre apper.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 - 'overlayPermissionOpenSettingsFailed': 'Kan ikke åpne systeminnstillinger automatisk. Åpne Innstillinger og aktiver tillatelsen for å vises over andre apper manuelt.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 + 'overlayPermissionTranslationDesc': + 'For å vise oversettelsesresultater under samtaler eller lyd-/videooversettelse, trenger vi tillatelse til å vises over andre apper. Da kan du se sanntidsoversettelser mens du bruker andre apper.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 + 'overlayPermissionRecordingDesc': + 'For å vise den flytende opptakslinjen (timer/pause/fortsett) under opptak, trenger vi tillatelse til å vises over andre apper.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 + 'overlayPermissionOpenSettingsFailed': + 'Kan ikke åpne systeminnstillinger automatisk. Åpne Innstillinger og aktiver tillatelsen for å vises over andre apper manuelt.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 'transcribing': 'Transcribing...', 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', @@ -552,54 +565,55 @@ const Map nbNO = { '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', + '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', + 'recordingLanguage': 'Opptaksspråk', '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.', + 'AI-analysen identifiserer nøkkelhendelser i opptak, slik at du kan velge viktige hendelser for AI-generering.', // 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', + 'importingLocalRecordings': 'Importerer lokale opptak...', + 'importFailed': 'Import av fil mislyktes: {filePath}, feil: {error}', + 'importSuccess': 'Importerte {count} lokale opptak', + 'importError': 'Import mislyktes: {error}', + 'pleaseSelectAudioFile': 'Velg en lydfil', 'shareAudio': 'Share Meeting Audio', 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + 'shareFailed': 'Deling mislyktes: {error}', + 'fileProcessingFailed': 'Filbehandling mislyktes: {filePath}, feil: {error}', // Meeting模块 - 思维导图 - 'saveMindMap': 'Lagre tankekart', - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', + 'saveMindMap': 'Lagre tankekart', + 'shareMindMap': 'Del tankekart', + 'shareSuccess': 'Deling vellykket', // 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', + 'askAI': 'Spør AI...', + 'askAIPrompt': 'Hva kan jeg hjelpe deg med i dag?', + 'continueAsk': 'Fortsett å spørre', + 'todoList': 'Oppgaveliste', + 'extractConclusion': 'Trekk ut konklusjon', + 'generateKeyIndicators': 'Generer nøkkelindikatorer', // Meeting模块 - 分享与导出 'shareLink': 'Share Link', @@ -611,42 +625,43 @@ const Map nbNO = { 'exportSummary': 'Export Summary', 'exportAs': 'Export As', 'exportingPDF': 'Exporting PDF...', - 'export': 'Eksporter', + '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', + 'nameCurrentSpeaker': 'Gi navn til gjeldende taler', + 'recentlyUsedNames': 'Nylig brukte navn', + 'applyToCurrentParagraph': 'Bruk på gjeldende avsnitt', + 'totalTime': 'Total tid', 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', + 'Talerne i sammendraget oppdateres automatisk', // Meeting模块 - 云端同步 - 'syncToCloud': 'Sync to Cloud', + 'syncToCloud': 'Synkroniser til skyen', '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', + 'Synkroniser automatisk opptakene dine til skyen. Du kan spille av, administrere og dele opptak via VOITRANS-appen eller VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Synkroniser VOITRANS-app', + 'transcriptionRecord': 'Transkripsjonsoppføring', // Meeting模块 - 我的页面 - 'transcriptionRecords': 'Transcription Records', - 'templateCommunity': 'Template Community', - 'comingSoon': 'Coming Soon', - 'integration': 'Integration', + 'transcriptionRecords': 'Transkripsjonsoppføringer', + 'templateCommunity': 'Mal-fellesskap', + 'comingSoon': 'Kommer snart', + 'integration': 'Integrasjon', 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', - 'enabled': 'Enabled', - 'disabled': 'Disabled', - 'myVoitransDevice': 'My VOITRANS Device', + 'enabled': 'Aktivert', + 'disabled': 'Deaktivert', + 'myVoitransDevice': 'Min VOITRANS-enhet', 'helpAndFeedback': 'Help & Feedback', 'aboutVoitrans': 'About VOITRANS', 'meetingDays': 'Days', 'meetingHours': 'Hours', 'voitransAiMember': 'Voitrans AI Member', 'unlockStarterMember': 'Unlock Starter Member', - 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', + 'bindDeviceToActivate': + 'Koble til Voitrans-enheten for å aktivere Starter-medlemskap', 'unlockNow': 'Unlock Now', // Meeting模块 - 会员与升级 @@ -670,7 +685,7 @@ const Map nbNO = { 'customTemplateDesc': 'You can customize summary prompts according to your needs and use them to generate the required summaries.', 'askAiDesc': - 'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.', + 'Trekk intelligent ut dypere informasjon fra opptak, og generer datatabeller, nøkkelkonklusjoner, oppgavelister, rapport-e-poster og annet formatert innhold med ett klikk.', 'visualMindMapDesc': 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', 'templateCommunityDesc': @@ -678,13 +693,13 @@ const Map nbNO = { 'speakerIdentificationDesc': 'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.', 'privateCloudSyncDesc': - 'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.', + 'Opptakene og transkripsjonene dine lagres sikkert på dedikerte skyservere, med full kryptering under opplasting og nedlasting for å sikre personvern og sikkerhet.', '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.', + 'Eksporter lydopptak, transkripsjonstekst og sammendrag i ulike formater (TXT, PDF, JPEG) etter behov.', 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -714,25 +729,25 @@ const Map nbNO = { 'purchase': 'Purchase', // Meeting模块 - 录音语言 - 'recordLanguage': 'Recording Language', + 'recordLanguage': 'Opptaksspråk', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', // 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', + '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', + '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", @@ -741,10 +756,10 @@ const Map nbNO = { "translationRecharge": "Oversettelsespenger", "meetingAssistantRecharge": "Møteassistentpenger", "cloudSync": "Cloud-synchroniseringspenger", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "memberService": "Medlemstjeneste", + "bindRewardTitle": "Belønninger", "bindRewardSimpleDesc": - "First bind device reward has been issued. Tap OK to close.", + "Belønningen for første enhetsbinding er utstedt. Trykk OK for å lukke.", "joinDevice": "Tilkoblet enhet:", "accountId": "Konto-ID:", "systemSetting": "Systeminnstillinger", @@ -795,20 +810,20 @@ const Map nbNO = { "loading": "Laster inn...", // 设备管理模块 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", + "deviceTypeUnknown": "Ukjent enhet", + "deviceTypeClassicBluetoothHeadset": "Klassisk Bluetooth-headset", + "deviceTypeBleBluetoothHeadset": "BLE Bluetooth-headset", + "deviceTypeSmartVoiceRecorder": "Smart stemmeopptaker", "deviceTypeSmartEye": "Smart Glasses", "unbind": "Fjern binding", - "noDevicesBound": "No devices bound yet", - "pleaseBindDeviceFirst": "Please bind a device first to manage", - "noMacAddress": "No MAC Address", - "licenseCode": "License Code", - "confirmUnbind": "Confirm Unbind", + "noDevicesBound": "Ingen enheter er koblet til ennå", + "pleaseBindDeviceFirst": "Koble til en enhet først for å administrere", + "noMacAddress": "Ingen MAC-adresse", + "licenseCode": "Lisenskode", + "confirmUnbind": "Bekreft frakobling", "confirmUnbindMessage": - "Are you sure you want to unbind device \"{deviceName}\"?", - "confirmUnbindAction": "Confirm Unbind", + "Er du sikker på at du vil koble fra enheten \"{deviceName}\"?", + "confirmUnbindAction": "Koble fra", // Agent模块 - 主界面 "Lily": "Lily", @@ -839,21 +854,22 @@ const Map nbNO = { "loadMoreMessages": "Last inn flere meldinger...", "loadFailedClickRetry": "Innlasting mislyktes, klikk for å prøve igjen", "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.', + "callingTool": "Jeg hjelper deg, vennligst vent!", // 正在帮您,请稍等! + "voice_interrupt": "Avbryt", // 语音打断 + '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", // 今日天气 - "presetNews": "Today's news", // 今日新闻 - "presetFood": "Nearby food", // 美食 - "playSomeMusic": "Play some popular music", // 播放一些流行音乐 - "navigationTo": "Please help me navigate to", // 导航到 - "todayWeather": "How's the weather today?", // 今日天气 - "todayNews": "What's the news today?", // 今日新闻 - "nearbyFood": "What delicious food is nearby?", // 美食 + "presetMusic": "Spill musikk", // 来点音乐 + "presetNavigation": "Naviger til", // 导航 + "presetWeather": "Været i dag", // 今日天气 + "presetNews": "Nyheter i dag", // 今日新闻 + "presetFood": "Mat i nærheten", // 美食 + "playSomeMusic": "Spill populær musikk", // 播放一些流行音乐 + "navigationTo": "Vennligst hjelp meg å navigere til", // 导航到 + "todayWeather": "Hvordan er været i dag?", // 今日天气 + "todayNews": "Hva er nyhetene i dag?", // 今日新闻 + "nearbyFood": "Hva for godt mat er i nærheten?", // 附近有什么好吃的 // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Hei! Jeg er **Lily**, jeg kan hjelpe deg med:\n\n' @@ -937,7 +953,8 @@ const Map nbNO = { 'builtInNavigation': 'Innebygd navigasjon', 'useBuiltInNavigation': 'Naviger med innebygd kart', 'navigationStartFailed': 'Kunne ikke starte navigasjon', - 'cannotPlayMusicListRetryLater': 'Kan ikke spille musiklisten, prøv igjen senere', + 'cannotPlayMusicListRetryLater': + 'Kan ikke spille musiklisten, prøv igjen senere', 'cannotPlaySong': 'Kan ikke spille sangen', 'openMapError': 'Feil ved åpning av kart', 'pleaseInstallAmapApp': 'Installer Amap-appen først', @@ -999,8 +1016,8 @@ const Map nbNO = { "strongWind": "Sterk vind", // 翻译模块 - 中间层 - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", + "pictureTranslation": "Bildeoversettelse", + "textTranslation": "Tekstoversettelse", // 翻译模块 - 主页 "translationHistory": "Oversettelseshistorikk", @@ -1010,32 +1027,33 @@ const Map nbNO = { "phoneUser": "Telefonbruker", "selectSourceLanguage": "Velg kildespråk", "selectTargetLanguage": "Velg målspråk", - "me": "Me", - "counterPart": "Counterpart", + "me": "Jeg", + "counterPart": "Samtalepartner", "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - "autoDetect": "Auto Detect", // 自动检测 + "Sørg for at Bluetooth-headsettet er koblet til telefonen og at en samtale pågår", + "autoDetect": "Automatisk deteksjon", // 自动检测 // 翻译模块 - 文本翻译 - "languageDetectionFailed": "Language detection failed", + "languageDetectionFailed": "Språkdeteksjon mislyktes", // 翻译模块 - 悬浮窗与权限 'disableFloatingWindow': 'Deaktiver flytende vindu', 'enableFloatingWindow': 'Aktiver flytende vindu', 'permissionTip': 'Tillatelsestips', 'micPermissionRequiredForRecording': 'Mikrofontillatelse kreves for opptak', - 'deleteTranslationRecordError': 'Feil ved sletting av oversettelsespost: @error', - "translationFailed": "Translation failed", + 'deleteTranslationRecordError': + 'Feil ved sletting av oversettelsespost: @error', + "translationFailed": "Oversettelse mislyktes", "translating": "Oversetter", "translate": "Oversett", - "pleaseInputText": "Please input text", + "pleaseInputText": "Skriv inn tekst", "inputTextToTranslate": "Skriv inn teksten som skal oversettes", - "textTooLong": "Text too long, max 5000 characters", + "textTooLong": "Teksten er for lang, maks 5000 tegn", // 翻译模块 - 历史记录 "noTranslationHistory": "Ingen historikk ennå", - "historyRecords": "History Records", - "clearResults": "Clear Results", + "historyRecords": "Historikkoppføringer", + "clearResults": "Tøm resultater", "clearHistory": "Tøm historikk", "clearHistoryConfirm": "Er du sikker på at du vil tømme all oversettelseshistorikk? Denne handlingen kan ikke angres.", @@ -1045,54 +1063,55 @@ const Map nbNO = { "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", + "selectImageSource": "Velg bildekilde", + "imagePreview": "Bildevisning", + "translationResult": "Oversettelsesresultat", + "recognitionResult": "Gjenkjenningsresultat", + "translatedImagePreview": "Forhåndsvisning av oversatt bilde", + "translatedImageLoadFailed": "Kunne ikke laste oversatt bilde", + "pleaseSelectImage": "Velg et bilde", + "imageLoadFailed": "Kunne ikke laste bilde", + "imageQuality": "Bildekvalitet", + "maxSize": "Maksimal størrelse", + "close": "Lukk", + "setImageQuality": "Angi bildekvalitet", + "currentQuality": "Gjeldende kvalitet: @value%", + "setMaxSize": "Angi maksimal størrelse", + "currentMaxSize": "Gjeldende: @pxpx", + "waitingForAction": "Venter på handling", + "pleaseSelectImageToStart": "Velg et bilde for å starte", + "chooseImage": "Velg bilde", + "openingCamera": "Åpner kamera...", + "openingPhotoAlbum": "Åpner fotoalbum...", + "cancelled": "Avbrutt", + "userCancelledSelection": "Brukeren avbrøt valget", + "translatingImage": "Oversetter bilde", + "callingImageTranslateService": "Kaller bildeoversettelsestjenesten...", + "savingRecord": "Lagrer oppføring", + "savingTranslationResult": "Lagrer oversettelsesresultat...", + "translationCompleted": "Oversettelse fullført", + "allStepsCompleted": "Alle trinn fullført", + "processingFailed": "Behandling mislyktes", "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", + "Bildebehandling eller oversettelse mislyktes. Prøv igjen.\nFeil: {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", + "emptyTranslationResult": + "Bildeoversettelses-API returnerte et tomt resultat", "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", + "Bildeoversettelse mislyktes. Nettverksproblem eller hastighetsbegrensning. Prøv igjen senere", "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", + "Unntak i bildeoversettelses-API. Sjekk nettverket og prøv igjen", + "permissionRequired": "Tillatelse kreves", + "cameraPermissionRequired": "Kameratillatelse kreves for å ta bilder", "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", + "Fotoalbumtillatelse kreves for å velge bilder", + "translationDetails": "Oversettelsesdetaljer", "originalImage": "Original Image", "sourceLanguage": "Source Language", "targetLanguage": "Target Language", - "translationTime": "Translation Time", + "translationTime": "Oversettelsestid", "shareInDevelopment": "Sharing feature under development", // 翻译模块 - 录音文件 @@ -1187,24 +1206,24 @@ const Map nbNO = { 'Kontotjenesten er initialisert', // AccountService 已初始化 // 权限模块 - 'meetingStoragePermission': 'Storage', + 'meetingStoragePermission': 'Lagring', 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', + 'Vi trenger lagringstillatelse slik at du kan velge og laste opp lydfiler.', 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', + 'Det ser ut til at du har nektet lagringstillatelse permanent. For å fortsette, gå til appinnstillingene og aktiver lagringstillatelse manuelt.', 'getPermissionStatusFailed': 'Henting av tillatelsesstatus mislyktes', 'communicationPermissions': 'Kommunikasjonstillatelser', - 'bluetoothPermissions': 'Bluetooth Permissions', - 'notificationPermissions': 'Notification Permissions', - 'storagePermissions': 'Storage Permissions', - 'microphonePermissions': 'Microphone Permissions', - 'alarmPermissions': 'Alarm Permissions', + 'bluetoothPermissions': 'Bluetooth-tillatelser', + 'notificationPermissions': 'Varslingstillatelser', + 'storagePermissions': 'Lagringstillatelser', + 'microphonePermissions': 'Mikrofontillatelser', + 'alarmPermissions': 'Alarmtillatelser', 'calendarPermissions': 'Kalendertillatelser', 'locationPermissions': 'Posisjonstillatelser', 'phone': 'Telefon', 'sms': 'SMS', - 'contacts': 'Contacts', - 'notification': 'Notification', + 'contacts': 'Kontakter', + 'notification': 'Varsler', 'alarm': 'Alarm', 'calendarWrite': 'Skriv til kalender', 'calendarFullAccess': 'Full tilgang til kalender', @@ -1229,86 +1248,89 @@ const Map nbNO = { 'phonePermissionDetailDesc': 'Ringefunksjonen krever telefontillatelse', 'smsPermissionDetailDesc': 'Send SMS-funksjonen krever SMS-tillatelse', 'alarmPermissionDetailDesc': - 'This permission is required to set exact alarms and ensure reminders trigger on time', + 'Denne tillatelsen er nødvendig for å sette nøyaktige alarmer og sikre at påminnelser utløses i tide', 'calendarWritePermissionDetailDesc': 'Å opprette kalenderhendelser krever skrivetilgang til kalenderen', 'calendarFullAccessPermissionDetailDesc': 'Å administrere kalenderhendelser krever full tilgang til kalenderen', 'locationPermissionDetailDesc': 'Å hente posisjonsinformasjon krever posisjonstillatelse', - 'contactsPermissionDesc': 'Used for accessing contact information', + 'contactsPermissionDesc': 'Brukes for tilgang til kontaktinformasjon', 'contactsPermissionDetailDesc': - 'Phone call and SMS functionality requires contacts permission to select contacts', + 'Telefon- og SMS-funksjonalitet krever kontakttillatelse for å velge kontakter', 'bluetoothPermissionDesc': - 'Used for connecting and managing Bluetooth devices', + 'Brukes for å koble til og administrere Bluetooth-enheter', 'bluetoothPermissionDetailDesc': - 'Connecting to Bluetooth headphones and other devices requires Bluetooth permission', - 'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices', + 'Tilkobling til Bluetooth-headset og andre enheter krever Bluetooth-tillatelse', + 'bluetoothScanPermissionDesc': + 'Brukes for å skanne etter Bluetooth-enheter i nærheten', 'bluetoothScanPermissionDetailDesc': - 'Scanning for nearby Bluetooth devices requires Bluetooth scan permission', - 'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices', + 'Skanning etter Bluetooth-enheter i nærheten krever Bluetooth-skanningstillatelse', + 'bluetoothConnectPermissionDesc': 'Brukes for å koble til Bluetooth-enheter', 'bluetoothConnectPermissionDetailDesc': - 'Connecting to Bluetooth devices requires Bluetooth connect permission', + 'Tilkobling til Bluetooth-enheter krever Bluetooth-tilkoblingstillatelse', 'notificationPermissionDesc': 'Used for sending notification messages', 'notificationPermissionDetailDesc': - 'App needs notification permission to send you important alerts and messages', + 'Appen trenger varslingstillatelse for å sende deg viktige varsler og meldinger', 'appNeedsPermissionForFullFunction': 'Appen trenger denne tillatelsen for full funksjonalitet', 'permanentDenialText': 'Du har permanent nektet {permission}-tillatelse, gå til appinnstillingene for å aktivere den', 'goToSettings': 'Gå til innstillinger', - 'bluetoothScan': 'Bluetooth Scan', - 'bluetoothConnect': 'Bluetooth Connect', + 'bluetoothScan': 'Bluetooth-skanning', + 'bluetoothConnect': 'Bluetooth-tilkobling', 'bluetoothScanExplanation': - 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', + 'Appen trenger Bluetooth-skanningstillatelse for å skanne etter Bluetooth-enheter i nærheten.', 'bluetoothConnectExplanation': - 'The app needs Bluetooth connect permission to connect to Bluetooth devices.', + 'Appen trenger Bluetooth-tilkoblingstillatelse for å koble til Bluetooth-enheter.', 'locationForBluetoothExplanation': - 'The app needs location permission to scan Bluetooth devices.', + 'Appen trenger posisjonstillatelse for å skanne Bluetooth-enheter.', 'bluetoothScanPermanentDenial': - 'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.', + 'Bluetooth-skanningstillatelse er permanent nektet. Gå til innstillinger for å aktivere den manuelt.', 'bluetoothConnectPermanentDenial': - 'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.', + 'Bluetooth-tilkoblingstillatelse er permanent nektet. Gå til innstillinger for å aktivere den manuelt.', 'locationPermanentDenial': - 'Location permission has been permanently denied, please go to settings to enable it manually.', - 'notificationPermission': 'Notification', - 'locationPermission': 'Location', + 'Posisjonstillatelse er permanent nektet. Gå til innstillinger for å aktivere den manuelt.', + 'notificationPermission': 'Varsler', + 'locationPermission': 'Posisjon', 'notificationPermissionExplanation': - 'Notification permission is required to display music playback status.', + 'Varslingstillatelse kreves for å vise status for musikkavspilling.', 'locationPermissionExplanation': - 'Location permission is required to get current location.', + 'Posisjonstillatelse kreves for å hente nåværende posisjon.', 'notificationPermissionPermanentDenial': - 'You have permanently denied notification permission, please go to settings to enable it.', + 'Du har nektet varslingstillatelse permanent. Gå til innstillinger for å aktivere den.', 'locationPermissionPermanentDenial': - 'You have permanently denied location permission, please go to settings to enable it.', - 'storagePermission': 'Storage', + 'Du har nektet posisjonstillatelse permanent. Gå til innstillinger for å aktivere den.', + 'storagePermission': 'Lagring', 'microphonePermissionExplanation': - 'We need microphone permission to record audio content.', + 'Vi trenger mikrofontillatelse for å ta opp lyd.', 'storagePermissionExplanation': - 'We need storage permission so you can select and upload audio files.', + 'Vi trenger lagringstillatelse slik at du kan velge og laste opp lydfiler.', 'microphonePermissionPermanentDenial': - 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', + 'Mikrofontillatelse er permanent nektet. For å fortsette, gå til appinnstillingene og aktiver mikrofontillatelse manuelt.', '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', + 'Lagringstillatelse er permanent nektet. For å fortsette, gå til appinnstillingene og aktiver lagringstillatelse manuelt.', + 'permissionUtilNeed': 'Trenger ', + 'permissionUtilPermission': ' tillatelse', + 'permissionUtilRestricted': ' Tillatelse begrenset', 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'Denne funksjonen er ikke tilgjengelig eller er begrenset på denne enheten. Sjekk enhetsinnstillinger eller systembegrensninger', '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', + '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', // 版本更新对话框标题 @@ -1380,27 +1402,27 @@ const Map nbNO = { 'bleConnectionFailed': 'BLE-tilkobling mislyktes', 'deviceAuthorizationFailedCheckCode': 'Enhetsautorisasjon mislyktes, sjekk autorisasjonskoden', - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + 'bluetoothGuideTitle': 'Manuell Bluetooth-aktivering kreves', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'Følg disse trinnene:', // 请按照以下步骤操作: 'bluetoothGuideStep1': - 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'Aktiver Bluetooth: Innstillinger → Bluetooth → Slå på', // 开启蓝牙:设置 → 蓝牙 → 开启 'bluetoothGuideStep2': - 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'Koble til enhet: Finn enheten din under «Mine enheter» og trykk for å koble til', // 连接设备:在"我的设备"中找到您的设备并点击连接 'bluetoothGuideStep3': - 'Return to app to continue pairing process', // 返回应用继续配对流程 + 'Gå tilbake til appen for å fortsette paringsprosessen', // 返回应用继续配对流程 'bluetoothGuideTip': - 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': 'I Know', // 我知道了 + 'Tips: Du kan også trykke og holde inne Bluetooth-ikonet i Kontrollsenteret for raskt å åpne Bluetooth-innstillinger', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + 'iKnow': 'Skjønner', // 我知道了 // 配对模块 - 绑定奖励 - "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:", + "firstBindRewardTitle": "Velkomstbelønning", + "firstBindRewardDesc": "Du har mottatt belønninger for binding.", + "vipLevelLabel": "VIP-nivå:", + "expiryLabel": "Utløpsdato:", + "notActivated": "Ikke aktivert", + "aiChatCreditsLabel": "AI Chat-kreditter:", + "translationCreditsLabel": "Oversettelseskreditter:", + "meetingCreditsLabel": "Møtekreditter:", "ok": "OK", // 用户反馈模块 @@ -1430,13 +1452,14 @@ const Map nbNO = { "connectionFailed": "Tilkobling mislyktes", "retryConnection": "Prøv å koble til på nytt", "ota_updateNow": "Oppdater nå", - "otaVersionInfoFailed": "Failed to get version info. Please try again later.", + "otaVersionInfoFailed": + "Kunne ikke hente versjonsinformasjon. Prøv igjen senere.", "otaDeviceInfoUnavailable": - "Unable to get device info. Please check the connection and retry.", + "Kunne ikke hente enhetsinformasjon. Sjekk tilkoblingen og prøv igjen.", "otaProductInfoUnavailable": - "Unable to identify the device. Please reconnect and retry.", + "Kunne ikke identifisere enheten. Koble til på nytt og prøv igjen.", "otaFirmwareVersionInvalid": - "Firmware version is abnormal. Please reconnect and retry.", + "Firmwareversjonen er unormal. Koble til på nytt og prøv igjen.", "keepConnectedDontClose": "Hold enheten tilkoblet, ikke lukk appen", "doNotDisconnect": "Ikke koble fra", "charging": "Lader", @@ -1449,7 +1472,8 @@ const Map nbNO = { 'otaConfirmUpdateNow': 'Oppdater nå?', 'otaUpdate': 'Oppdater', 'otaUpgradeSuccess': 'Oppgradering vellykket', - 'otaUpgradeCompleteRepair': 'Firmware-oppgradering fullført!\n\nEnheten må pares på nytt. Gå til paringssiden?', + 'otaUpgradeCompleteRepair': + 'Firmware-oppgradering fullført!\n\nEnheten må pares på nytt. Gå til paringssiden?', 'otaPairLater': 'Par senere', 'otaPairNow': 'Par nå', 'okConfirm': 'OK', @@ -1457,24 +1481,32 @@ const Map nbNO = { // OTA升级模块 - 设备检查 'otaBleCheckErrorWithError': 'Feil ved BLE-kontroll: @error', 'otaBleNotConnected': 'BLE-enhet ikke tilkoblet', - 'otaBleNeedConnection': 'Firmware-oppgradering krever BLE-tilkobling\nSørg for at enheten er tilkoblet og prøv igjen', + 'otaBleNeedConnection': + 'Firmware-oppgradering krever BLE-tilkobling\nSørg for at enheten er tilkoblet og prøv igjen', 'otaDeviceInfoUnavailableTitle': 'Enhetsinfo utilgjengelig', - 'otaCannotGetDeviceInfo': 'Kan ikke hente enhetsinfo\nKoble til enheten igjen eller prøv senere', + 'otaCannotGetDeviceInfo': + 'Kan ikke hente enhetsinfo\nKoble til enheten igjen eller prøv senere', 'otaBleCheckFailed': 'BLE-kontroll mislyktes', - 'otaCannotGetDeviceInfoCheckConnection': 'Kan ikke hente enhetsinfo, sjekk tilkoblingen', - 'otaCannotGetProductInfoWithName': 'Kan ikke hente produktinfo, enhetsnavn: @deviceName', + 'otaCannotGetDeviceInfoCheckConnection': + 'Kan ikke hente enhetsinfo, sjekk tilkoblingen', + 'otaCannotGetProductInfoWithName': + 'Kan ikke hente produktinfo, enhetsnavn: @deviceName', 'otaCannotGetBatteryInfo': 'Kan ikke hente batteriinfo', 'otaLowBattery': 'Lavt batteri', - 'otaSingleBatteryLow': 'Batterinivå for lavt for oppgradering\nKrav: batteri over 20%\nNåværende: @ear @battery%\nLad og prøv igjen', - 'otaDoubleBatteryLow': 'Batterinivå for lavt for oppgradering\nKrav: begge øreproppene over 20%\nNåværende: Venstre @left%, Høyre @right%\nLad og prøv igjen', + 'otaSingleBatteryLow': + 'Batterinivå for lavt for oppgradering\nKrav: batteri over 20%\nNåværende: @ear @battery%\nLad og prøv igjen', + 'otaDoubleBatteryLow': + 'Batterinivå for lavt for oppgradering\nKrav: begge øreproppene over 20%\nNåværende: Venstre @left%, Høyre @right%\nLad og prøv igjen', 'otaBatteryCheckFailed': 'Batterikontroll mislyktes', // OTA升级模块 - 升级状态 - 'otaDefaultUpdateDesc': 'Oppdateringen inneholder ytelsesforbedringer og feilrettinger.', + 'otaDefaultUpdateDesc': + 'Oppdateringen inneholder ytelsesforbedringer og feilrettinger.', 'otaGetLatestVersionFailed': 'Kunne ikke hente siste versjon', 'otaGetVersionInfoFailed': 'Kunne ikke hente versjonsinfo', 'otaCheckingDeviceStatus': 'Sjekker enhetsstatus...', - 'otaDownloadFailedCheckNetwork': 'Nedlasting mislyktes, sjekk nettverkstilkoblingen', + 'otaDownloadFailedCheckNetwork': + 'Nedlasting mislyktes, sjekk nettverkstilkoblingen', 'otaDownloadFailed': 'Nedlasting mislyktes', 'otaPreparingConnection': 'Forbereder enhetstilkobling...', 'otaConnectingDevice': 'Kobler til enhet...', @@ -1483,7 +1515,8 @@ const Map nbNO = { 'otaUpgradeSuccessComplete': 'Oppgradering fullført', 'otaUpgradeFailedWithCode': 'Oppgradering mislyktes, feilkode: @code', 'otaUpgradeFailedTitle': 'Oppgradering mislyktes', - 'otaUpgradeFailedDesc': 'Sjekk tilkobling eller oppdateringspakke, feilkode: @code', + 'otaUpgradeFailedDesc': + 'Sjekk tilkobling eller oppdateringspakke, feilkode: @code', 'otaDeviceDisconnected': 'Enhet frakoblet', 'otaDeviceConnected': 'Enhet tilkoblet', diff --git a/lib/core/translations/language/nl_nl.dart b/lib/core/translations/language/nl_nl.dart index 4b69a85a1..93b3c619c 100644 --- a/lib/core/translations/language/nl_nl.dart +++ b/lib/core/translations/language/nl_nl.dart @@ -1,3 +1,4 @@ +// 荷兰-荷兰语 const Map nlNL = { // 通用 'continue': 'Doorgaan', @@ -218,55 +219,55 @@ const Map nlNL = { "scene": "Scenario", // 用量统计模块 - "aiChat": "AI Chat", - "translationStats": "Translation Statistics", - "meetingStats": "Meeting Statistics", - "today": "Today", - "thisWeek": "This Week", - "thisMonth": "This Month", - "history": "History", - "currentSessionStats": "Current Session Stats", - "translationCount": "Translation Count", - "sessionDuration": "Session Duration", - "characters": "Characters", - "recordingDuration": "Recording Duration", - "totalApiCalls": "Total API Calls", - "sessionCount": "Session Count", - "totalCharacters": "Total Characters", - "apiCallStats": "API Call Stats", - "translationApi": "Translation API", + "aiChat": "AI-chat", + "translationStats": "Vertaalstatistieken", + "meetingStats": "Vergaderstatistieken", + "today": "Vandaag", + "thisWeek": "Deze week", + "thisMonth": "Deze maand", + "history": "Geschiedenis", + "currentSessionStats": "Statistieken van huidige sessie", + "translationCount": "Aantal vertalingen", + "sessionDuration": "Sessieduur", + "characters": "Tekens", + "recordingDuration": "Opnameduur", + "totalApiCalls": "Totaal aantal API-aanroepen", + "sessionCount": "Aantal sessies", + "totalCharacters": "Totaal aantal tekens", + "apiCallStats": "Statistieken API-aanroepen", + "translationApi": "Vertaal-API", "asr": "ASR", "tts": "TTS", - "dataVolumeStats": "Data Volume Stats", - "sourceTextCharacters": "Source Text Characters", - "ttsTextCharacters": "TTS Text Characters", - "effectiveAudioDuration": "Effective Audio Duration", - "totalSessionDuration": "Total Session Duration", - "costStats": "Cost Stats", - "estimatedCost": "Estimated Cost", - "dailyCostThreshold": "Daily Cost Threshold", - "monthlyCostThreshold": "Monthly Cost Threshold", - "usageBehaviorStats": "Usage Behavior Stats", - "mostUsedLanguagePair": "Most-used language pair", - "mostUsedMode": "Most-used mode", - "asrApiCalls": "ASR Calls", - "totalAudioDuration": "Total Audio Duration", - "audioFileSize": "Audio File Size", - "transcriptBytes": "Transcript Bytes", - "loadFailed": "Load Failed", + "dataVolumeStats": "Statistieken datavolume", + "sourceTextCharacters": "Tekens in brontekst", + "ttsTextCharacters": "TTS-tekens", + "effectiveAudioDuration": "Effectieve audiolengte", + "totalSessionDuration": "Totale sessieduur", + "costStats": "Kostenstatistieken", + "estimatedCost": "Geschatte kosten", + "dailyCostThreshold": "Dagelijkse kostendrempel", + "monthlyCostThreshold": "Maandelijkse kostendrempel", + "usageBehaviorStats": "Statistieken gebruiksgedrag", + "mostUsedLanguagePair": "Meest gebruikte talenpaar", + "mostUsedMode": "Meest gebruikte modus", + "asrApiCalls": "ASR-aanroepen", + "totalAudioDuration": "Totale audiolengte", + "audioFileSize": "Grootte audiobestand", + "transcriptBytes": "Transcriptbytes", + "loadFailed": "Laden mislukt", "statsLoadFailedTryLater": - "Statistics failed to load. Please try again later.", + "Statistieken konden niet worden geladen. Probeer het later opnieuw.", "cleanupComplete": "Cleanup Complete", "cleanedOldData": "Cleaned data older than 90 days", "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", // 商品模块 - 通用 - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', + 'availablePackages': 'Beschikbare pakketten', + 'remainingQuota': 'Resterend tegoed', + 'totalQuota': 'Totaal tegoed', + 'remaining': 'Resterend', + 'featureDescription': 'Functiebeschrijving', 'paymentSuccess': 'Betaling geslaagd', 'paymentFailed': 'Betaling mislukt', 'gotIt': 'Begrepen', @@ -325,12 +326,12 @@ const Map nlNL = { 'alipayPaymentLaunchFailed': 'Kan Alipay niet starten', 'cannotLaunchAlipayPayment': 'Kan Alipay niet starten', 'alipayPaymentException': 'Alipay-uitzondering', - "insufficientIntegral": "Insufficient integral", + "insufficientIntegral": "Onvoldoende punten", "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', + 'Onvoldoende saldo. Ga naar de bijbehorende opwaardeerpagina om op te waarderen.', + "recharge": 'Naar opwaarderen', "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + 'AI-lidmaatschap verlopen. Ga naar de opwaardeerpagina om te verlengen.', // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', @@ -358,37 +359,38 @@ const Map nlNL = { 'templatedMessagesAndScheduleReminders': 'Template messages and schedule reminders', 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', + 'Functies zijn afhankelijk van apparaatmachtigingen, beschikbaarheid van de service en netwerkomstandigheden.', // 商品模块 - 翻译商品页 - 'realtimeTranscription': 'Real-time Transcription', - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', + 'realtimeTranscription': 'Realtime transcriptie', + 'sceneLexicon': 'Scenario-woordenlijst', + 'subtitleDisplay': 'Ondertitels', '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', + 'Realtime simultaan tolken en tekstvertaling met spraak met lage latentie.', + 'transHeaderDesc2': 'Geschikt voor reizen, zaken, lezingen en onderwijs.', + 'translateZhEn': 'Chinees-Engelse vertaling', + 'lowLatencyVoiceBroadcast': 'Spraakweergave met lage latentie', + 'multiLangTextTranslation': 'Meertalige tekstvertaling', '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', + 'Terminologie-optimalisatie en contextbehoud', + 'lexiconTourBusinessLife': + 'Woordenlijsten voor reizen/zakelijk/dagelijks leven', + 'personalVocabularyMemory': 'Persoonlijk woordenboekgeheugen', + 'conversationSubtitleLargeText': 'Gespreksondertitels / grote-tekstmodus', + 'colorHighContrast': 'Hoog kleurcontrast', 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', + 'Vertaalprestaties zijn afhankelijk van microfoon, netwerklatentie en omgevingsgeluid.', // 商品模块 - 会议商品页 - 'meetingRecording': 'Meeting Recording', + 'meetingRecording': 'Vergaderopname', 'transcriptionAndSummary': 'Transcription & Summary', 'keywordSearch': 'Keyword Search', 'collaborationSharing': 'Collaboration & Sharing', 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'Audio opnemen, transcriberen, zoeken op trefwoord en automatische samenvatting om vergaderefficiëntie te verhogen.', 'meetingHeaderDesc2': 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingAutoRecording': 'Automatisch opnemen en segmenteren', 'meetingSpeakerTagging': 'Speaker labeling', 'meetingLongAudioTranscription': 'Long audio transcription', 'meetingKeyPointSummary': 'Key point extraction', @@ -397,7 +399,7 @@ const Map nlNL = { 'meetingExportSummary': 'Export minutes', 'meetingMultiPlatformShare': 'Share across platforms', 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', + 'Gebruik in een rustige omgeving; prestaties zijn afhankelijk van microfoon en netwerk.', // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', @@ -411,7 +413,7 @@ const Map nlNL = { 'longTermDiscountPlan': 'Long-term discount plan', 'generalPrivileges': 'General privileges', 'earlyAccessNewFeatures': 'Early access to new features', - 'crossDeviceSync': 'Cross-device sync', + 'crossDeviceSync': 'Synchronisatie tussen apparaten', 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', @@ -422,18 +424,18 @@ const Map nlNL = { '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', + 'trans_001_name': 'Vertaling Basis 100', + 'trans_002_name': 'Vertaling Basis 500', + 'trans_003_name': 'Vertaling Basis 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).', + 'meet_001_desc': 'Bevat 100 vergaderopnames/transcripties.', + 'meet_002_desc': 'Bevat 500 vergaderopnames/transcripties.', + 'meet_003_desc': 'Bevat 1000 vergaderopnames/transcripties.', + 'trans_001_desc': 'Bevat 100 vertalingen (spraak/tekst).', + 'trans_002_desc': 'Bevat 500 vertalingen (spraak/tekst).', + 'trans_003_desc': 'Bevat 1000 vertalingen (spraak/tekst).', // 商品模块 - 页脚 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', @@ -489,37 +491,38 @@ const Map nlNL = { 'recordingDetails': 'Opnamedetails', 'aiSummary': 'AI-samenvatting', 'meetingTranscript': 'Vergadertranscript', - 'files': 'Files', - 'mine': 'Mine', - 'connect': 'Connect', - 'allFiles': 'All Files', - 'searchInAllFiles': 'Search in all files', - 'from': 'From', - 'sortBy': 'Sort by', - 'creationTime': 'Creation Time', - 'bluetoothConnection': 'Bluetooth Connection', - 'meetingReconnect': 'Reconnect', - 'searching': 'Searching...', - 'searchFailed': 'Search failed, please check if Bluetooth is enabled', - 'aiPenNotFound': 'AI PEN device not found', - 'connectedToAiPen': 'Connected to AI PEN device', - 'checkingNewFiles': 'Checking for new files to import', + 'files': 'Bestanden', + 'mine': 'Mijn', + 'connect': 'Verbinden', + 'allFiles': 'Alle bestanden', + 'searchInAllFiles': 'Zoeken in alle bestanden', + 'from': 'Van', + 'sortBy': 'Sorteren op', + 'creationTime': 'Aanmaaktijd', + 'bluetoothConnection': 'Bluetooth-verbinding', + 'meetingReconnect': 'Opnieuw verbinden', + 'searching': 'Zoeken...', + 'searchFailed': 'Zoeken mislukt. Controleer of Bluetooth is ingeschakeld', + 'aiPenNotFound': 'AI PEN-apparaat niet gevonden', + 'connectedToAiPen': 'Verbonden met AI PEN-apparaat', + 'checkingNewFiles': 'Nieuwe bestanden voor import controleren', 'startingWifi': 'Starting Wi-Fi...', 'newFilesDetected': 'New files detected, preparing to import', 'noNewFiles': 'No new files to import', - 'connectingWifi': 'Connecting to Wi-Fi...', - 'wifiConnected': 'Wi-Fi connected successfully', - 'downloadingFiles': 'Downloading files...', - 'downloadingFileProgress': 'Total {total} files, downloading file {current}', - 'downloadComplete': 'Download complete', + 'connectingWifi': 'Verbinden met wifi...', + 'wifiConnected': 'Wifi-verbinding geslaagd', + 'downloadingFiles': 'Bestanden downloaden...', + 'downloadingFileProgress': + 'Totaal {total} bestanden, bestand {current} downloaden', + 'downloadComplete': 'Download voltooid', 'downloadCompleteInfo': - 'Download complete, {count} files in total, returning automatically in 2 seconds', + 'Download voltooid, {count} bestanden in totaal. Keert over 2 seconden automatisch terug', // Meeting模块 - 录音功能 - 'startRecording': 'Start Recording', - 'liveRecording': 'Live Recording', - 'audioVideoRecording': 'Audio/Video Recording', - 'callRecording': 'Call Recording', + 'startRecording': 'Opname starten', + 'liveRecording': 'Live opname', + 'audioVideoRecording': 'Audio-/video-opname', + 'callRecording': 'Gespreksopname', 'importAudio': 'Import Audio', 'meetingRecordExitTitle': 'Opname verlaten', // 退出录音 'meetingRecordExitMessage': @@ -584,31 +587,32 @@ const Map nlNL = { '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.', + 'viewAll': 'Alles bekijken', + 'recordingLanguage': 'Opnametaal', + 'chineseSimplified': 'Chinees Mandarijn (vereenvoudigd)', + 'meetingGenerateNow': 'Nu genereren', + 'keyEventsAnalyzed': '{count} belangrijke gebeurtenissen geanalyseerd.', 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + 'AI-analyse identificeert belangrijke gebeurtenissen in opnames, zodat u belangrijke gebeurtenissen kunt selecteren voor AI-generatie.', // 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', + 'importingLocalRecordings': 'Lokale opnames importeren...', + 'importFailed': 'Importeren mislukt: {filePath}, fout: {error}', + 'importSuccess': '{count} lokale opnames succesvol geïmporteerd', + 'importError': 'Importeren mislukt: {error}', + 'pleaseSelectAudioFile': 'Selecteer een audiobestand', 'shareAudio': 'Share Meeting Audio', 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + 'shareFailed': 'Delen mislukt: {error}', + 'fileProcessingFailed': + 'Bestandsverwerking mislukt: {filePath}, fout: {error}', // Meeting模块 - 思维导图 'saveMindMap': 'Mindmap opslaan', 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', + 'shareSuccess': 'Delen geslaagd', // Meeting模块 - AI问答 'askAI': 'Ask AI ...', @@ -642,29 +646,30 @@ const Map nlNL = { 'Summary speakers will be updated automatically', // Meeting模块 - 云端同步 - 'syncToCloud': 'Sync to Cloud', + 'syncToCloud': 'Synchroniseren met 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', + 'Synchroniseer uw opnames automatisch naar de cloud; u kunt opnames afspelen, beheren en delen via elke VOITRANS-app of VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Synchroniseren met VOITRANS-app', + 'transcriptionRecord': 'Transcriptierecord', // Meeting模块 - 我的页面 - 'transcriptionRecords': 'Transcription Records', - 'templateCommunity': 'Template Community', - 'comingSoon': 'Coming Soon', - 'integration': 'Integration', + 'transcriptionRecords': 'Transcriptierecords', + 'templateCommunity': 'Sjablooncommunity', + 'comingSoon': 'Binnenkort', + 'integration': 'Integratie', 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', - 'enabled': 'Enabled', - 'disabled': 'Disabled', - 'myVoitransDevice': 'My VOITRANS Device', + 'enabled': 'Ingeschakeld', + 'disabled': 'Uitgeschakeld', + 'myVoitransDevice': 'Mijn VOITRANS-apparaat', 'helpAndFeedback': 'Help & Feedback', 'aboutVoitrans': 'About VOITRANS', 'meetingDays': 'Days', 'meetingHours': 'Hours', 'voitransAiMember': 'Voitrans AI Member', 'unlockStarterMember': 'Unlock Starter Member', - 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', - 'unlockNow': 'Unlock Now', + 'bindDeviceToActivate': + 'Koppel Voitrans-apparaat om Starter-lidmaatschap te activeren', + 'unlockNow': 'Nu ontgrendelen', // Meeting模块 - 会员与升级 'comparison': 'Comparison', @@ -687,7 +692,7 @@ const Map nlNL = { 'customTemplateDesc': 'You can customize summary prompts according to your needs and use them to generate the required summaries.', 'askAiDesc': - 'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.', + 'Haal op intelligente wijze diepere informatie uit opnames en genereer met één tik datatabellen, belangrijke conclusies, takenlijsten, rapport-e-mails en andere opgemaakte inhoud.', 'visualMindMapDesc': 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', 'templateCommunityDesc': @@ -695,13 +700,13 @@ const Map nlNL = { 'speakerIdentificationDesc': 'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.', 'privateCloudSyncDesc': - 'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.', + 'Uw opnames en transcripties worden veilig opgeslagen op speciale cloudservers, met volledige versleuteling tijdens upload en download om privacy en veiligheid te waarborgen.', '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.', + 'Exporteer uw audio-opnames, transcriptietekst en samenvattingen in verschillende indelingen (TXT, PDF, JPEG) naar wens.', 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -731,7 +736,7 @@ const Map nlNL = { 'purchase': 'Purchase', // Meeting模块 - 录音语言 - 'recordLanguage': 'Recording Language', + 'recordLanguage': 'Opnametaal', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', @@ -758,10 +763,10 @@ const Map nlNL = { "translationRecharge": "Vertalingspayering", "meetingAssistantRecharge": "Vergaderassistentpayering", "cloudSync": "Cloud-synchronisatiepayering", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "memberService": "Ledenservice", + "bindRewardTitle": "Beloningen", "bindRewardSimpleDesc": - "First bind device reward has been issued. Tap OK to close.", + "Beloning voor het eerste koppelen van een apparaat is uitgegeven. Tik op OK om te sluiten.", "joinDevice": "Verbonden apparaat:", "accountId": "Account-ID:", "systemSetting": "Systeeminstellingen", @@ -810,20 +815,20 @@ const Map nlNL = { "loading": "Laden...", // 设备管理模块 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", - "deviceTypeSmartEye": "Smart Glasses", + "deviceTypeUnknown": "Onbekend apparaat", + "deviceTypeClassicBluetoothHeadset": "Klassieke Bluetooth-headset", + "deviceTypeBleBluetoothHeadset": "BLE Bluetooth-headset", + "deviceTypeSmartVoiceRecorder": "Slimme voicerecorder", + "deviceTypeSmartEye": "Slimme bril", "unbind": "Ontkoppelen", - "noDevicesBound": "No devices bound yet", - "pleaseBindDeviceFirst": "Please bind a device first to manage", - "noMacAddress": "No MAC Address", - "licenseCode": "License Code", - "confirmUnbind": "Confirm Unbind", + "noDevicesBound": "Nog geen apparaten gekoppeld", + "pleaseBindDeviceFirst": "Koppel eerst een apparaat om te beheren", + "noMacAddress": "Geen MAC-adres", + "licenseCode": "Licentiecode", + "confirmUnbind": "Ontkoppelen bevestigen", "confirmUnbindMessage": - "Are you sure you want to unbind device \"{deviceName}\"?", - "confirmUnbindAction": "Confirm Unbind", + "Weet u zeker dat u apparaat \"{deviceName}\" wilt ontkoppelen?", + "confirmUnbindAction": "Ontkoppelen bevestigen", // Agent模块 - 主界面 "Lily": "Lily", @@ -854,22 +859,22 @@ const Map nlNL = { "loadMoreMessages": "Meer berichten laden...", "loadFailedClickRetry": "Laden mislukt, klik om opnieuw te proberen", "swipeUpForMore": "Veeg omhoog voor meer", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 + "callingTool": "Ik help u, even geduld!", // 正在帮您,请稍等! + "voice_interrupt": "Onderbreken", // 语音打断 '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", // 今日天气 - "presetNews": "Today's news", // 今日新闻 - "presetFood": "Nearby food", // 美食 - "playSomeMusic": "Play some popular music", // 播放一些流行音乐 - "navigationTo": "Please help me navigate to", // 导航到 - "todayWeather": "How's the weather today?", // 今日天气 - "todayNews": "What's the news today?", // 今日新闻 - "nearbyFood": "What delicious food is nearby?", // 美食 + "presetMusic": "Speel muziek", // 来点音乐 + "presetNavigation": "Navigeer naar", // 导航 + "presetWeather": "Weer vandaag", // 今日天气 + "presetNews": "Nieuws vandaag", // 今日新闻 + "presetFood": "Eten in de buurt", // 美食 + "playSomeMusic": "Speel populaire muziek", // 播放一些流行音乐 + "navigationTo": "Navigeer naar", // 导航到 + "todayWeather": "Hoe is het weer vandaag?", // 今日天气 + "todayNews": "Wat is het nieuws vandaag?", // 今日新闻 + "nearbyFood": "Waar kan ik lekker eten in de buurt?", // 附近有什么好吃的 // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Hallo! Ik ben **Lily**, ik kan u helpen met:\n\n' @@ -1017,8 +1022,8 @@ const Map nlNL = { "strongWind": "Harde wind", // 翻译模块 - 中间层 - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", + "pictureTranslation": "Afbeeldingsvertaling", + "textTranslation": "Tekstvertaling", // 翻译模块 - 主页 "translationHistory": "Vertaalgeschiedenis", @@ -1028,14 +1033,14 @@ const Map nlNL = { "phoneUser": "Telefoongebruiker", "selectSourceLanguage": "Selecteer brontaal", "selectTargetLanguage": "Selecteer doeltaal", - "me": "Me", - "counterPart": "Counterpart", + "me": "Ik", + "counterPart": "Gesprekspartner", "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - "autoDetect": "Auto Detect", // 自动检测 + "Zorg ervoor dat de Bluetooth-headset met de telefoon is verbonden en in gesprek is", + "autoDetect": "Automatisch detecteren", // 自动检测 // 翻译模块 - 文本翻译 - "languageDetectionFailed": "Language detection failed", + "languageDetectionFailed": "Taaldetectie mislukt", // 翻译模块 - 悬浮窗与权限 'disableFloatingWindow': 'Zwevend venster uitschakelen', @@ -1044,17 +1049,17 @@ const Map nlNL = { 'micPermissionRequiredForRecording': 'Microfoonmachtiging vereist voor opname', 'deleteTranslationRecordError': 'Fout bij verwijderen vertaalrecord: @error', - "translationFailed": "Translation failed", + "translationFailed": "Vertalen mislukt", "translating": "Vertalen", "translate": "Vertaal", - "pleaseInputText": "Please input text", + "pleaseInputText": "Voer tekst in", "inputTextToTranslate": "Voer de tekst in om te vertalen", - "textTooLong": "Text too long, max 5000 characters", + "textTooLong": "Tekst te lang, max. 5000 tekens", // 翻译模块 - 历史记录 "noTranslationHistory": "Nog geen geschiedenis", - "historyRecords": "History Records", - "clearResults": "Clear Results", + "historyRecords": "Geschiedenisrecords", + "clearResults": "Resultaten wissen", "clearHistory": "Geschiedenis wissen", "clearHistoryConfirm": "Weet u zeker dat u alle vertaalgeschiedenis wilt wissen? Deze actie kan niet ongedaan worden gemaakt.", @@ -1064,54 +1069,55 @@ const Map nlNL = { "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", + "selectImageSource": "Selecteer afbeeldingsbron", + "imagePreview": "Voorbeeld van afbeelding", + "translationResult": "Vertaalresultaat", + "recognitionResult": "Herkenningsresultaat", + "translatedImagePreview": "Voorbeeld van vertaalde afbeelding", + "translatedImageLoadFailed": "Kan vertaalde afbeelding niet laden", + "pleaseSelectImage": "Selecteer een afbeelding", + "imageLoadFailed": "Afbeelding laden mislukt", + "imageQuality": "Beeldkwaliteit", + "maxSize": "Maximale grootte", + "close": "Sluiten", + "setImageQuality": "Beeldkwaliteit instellen", "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", + "setMaxSize": "Maximale grootte instellen", "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", + "waitingForAction": "Wachten op actie", + "pleaseSelectImageToStart": "Selecteer een afbeelding om te starten", + "chooseImage": "Afbeelding kiezen", + "openingCamera": "Camera openen...", + "openingPhotoAlbum": "Fotoalbum openen...", + "cancelled": "Geannuleerd", + "userCancelledSelection": "Gebruiker heeft selectie geannuleerd", + "translatingImage": "Afbeelding vertalen", + "callingImageTranslateService": "Afbeeldingsvertaalservice aanroepen...", + "savingRecord": "Record opslaan", + "savingTranslationResult": "Vertaalresultaat opslaan...", + "translationCompleted": "Vertaling voltooid", + "allStepsCompleted": "Alle stappen voltooid", + "processingFailed": "Verwerking mislukt", "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", + "Afbeeldingsverwerking of vertaling mislukt. Probeer het opnieuw.\nFout: {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", + "emptyTranslationResult": + "Afbeeldingsvertaal-API retourneerde een leeg resultaat", "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", + "Afbeeldingsvertaling mislukt. Netwerkprobleem of snelheidslimiet. Probeer het later opnieuw", "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", + "Uitzondering in afbeeldingsvertaal-API. Controleer het netwerk en probeer het opnieuw", + "permissionRequired": "Machtiging vereist", + "cameraPermissionRequired": "Cameramachtiging vereist om foto's te maken", "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", + "Fotoalbumtoestemming vereist om afbeeldingen te kiezen", + "translationDetails": "Vertaaldetails", "originalImage": "Original Image", "sourceLanguage": "Source Language", "targetLanguage": "Target Language", - "translationTime": "Translation Time", + "translationTime": "Vertaaltijd", "shareInDevelopment": "Sharing feature under development", // 翻译模块 - 录音文件 @@ -1211,24 +1217,24 @@ const Map nlNL = { 'Accountservice is geïnitialiseerd', // AccountService 已初始化 // 权限模块 - 'meetingStoragePermission': 'Storage', + 'meetingStoragePermission': 'Opslag', 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', + 'We hebben opslagmachtiging nodig zodat u audiobestanden kunt selecteren en uploaden.', 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', + 'We hebben gedetecteerd dat u opslagmachtiging permanent hebt geweigerd. Ga naar de app-instellingen om de opslagmachtiging handmatig in te schakelen.', 'getPermissionStatusFailed': 'Ophalen van toestemmingsstatus mislukt', 'communicationPermissions': 'Communicatietoestemmingen', - 'bluetoothPermissions': 'Bluetooth Permissions', - 'notificationPermissions': 'Notification Permissions', - 'storagePermissions': 'Storage Permissions', - 'microphonePermissions': 'Microphone Permissions', - 'alarmPermissions': 'Alarm Permissions', + 'bluetoothPermissions': 'Bluetooth-machtigingen', + 'notificationPermissions': 'Meldingsmachtigingen', + 'storagePermissions': 'Opslagmachtigingen', + 'microphonePermissions': 'Microfoonmachtigingen', + 'alarmPermissions': 'Alarmmachtigingen', 'calendarPermissions': 'Kalendertoestemmingen', 'locationPermissions': 'Locatietoestemmingen', 'phone': 'Telefoon', 'sms': 'SMS', - 'contacts': 'Contacts', - 'notification': 'Notification', + 'contacts': 'Contacten', + 'notification': 'Meldingen', 'alarm': 'Alarm', 'calendarWrite': 'Kalender schrijven', 'calendarFullAccess': 'Volledige kalendertoegang', @@ -1237,7 +1243,7 @@ const Map nlNL = { 'smsPermissionDesc': 'Gebruikt voor de functie voor het verzenden van sms-berichten', 'alarmPermissionDesc': - 'Used to set exact alarms to ensure reminders trigger on time', + 'Gebruikt om exacte alarmen in te stellen zodat herinneringen op tijd worden geactiveerd', 'calendarWritePermissionDesc': 'Gebruikt voor het maken van kalenderafspraken en herinneringen', 'calendarFullAccessPermissionDesc': @@ -1257,72 +1263,74 @@ const Map nlNL = { 'smsPermissionDetailDesc': 'De functie voor het verzenden van sms-berichten vereist sms-toestemming', 'alarmPermissionDetailDesc': - 'This permission is required to set exact alarms and ensure reminders trigger on time', + 'Deze machtiging is vereist om exacte alarmen in te stellen en ervoor te zorgen dat herinneringen op tijd worden geactiveerd', 'calendarWritePermissionDetailDesc': 'Het maken van kalenderafspraken vereist schrijftoestemming voor de kalender', 'calendarFullAccessPermissionDetailDesc': 'Het beheren van kalenderafspraken vereist volledige kalendertoegang', 'locationPermissionDetailDesc': 'Het ophalen van locatie-informatie vereist locatietoestemming', - 'contactsPermissionDesc': 'Used for accessing contact information', + 'contactsPermissionDesc': 'Gebruikt voor toegang tot contactgegevens', 'contactsPermissionDetailDesc': - 'Phone call and SMS functionality requires contacts permission to select contacts', + 'Belfunctie en sms-functionaliteit vereisen contactenmachtiging om contacten te selecteren', 'bluetoothPermissionDesc': - 'Used for connecting and managing Bluetooth devices', + 'Gebruikt om Bluetooth-apparaten te verbinden en te beheren', 'bluetoothPermissionDetailDesc': - 'Connecting to Bluetooth headphones and other devices requires Bluetooth permission', - 'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices', + 'Voor het verbinden met Bluetooth-koptelefoons en andere apparaten is Bluetooth-machtiging vereist', + 'bluetoothScanPermissionDesc': + 'Gebruikt om Bluetooth-apparaten in de buurt te scannen', 'bluetoothScanPermissionDetailDesc': - 'Scanning for nearby Bluetooth devices requires Bluetooth scan permission', - 'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices', + 'Voor het scannen naar Bluetooth-apparaten in de buurt is Bluetooth-scanmachtiging vereist', + 'bluetoothConnectPermissionDesc': + 'Gebruikt om verbinding te maken met Bluetooth-apparaten', 'bluetoothConnectPermissionDetailDesc': - 'Connecting to Bluetooth devices requires Bluetooth connect permission', + 'Voor het verbinden met Bluetooth-apparaten is Bluetooth-verbindingsmachtiging vereist', 'notificationPermissionDesc': 'Used for sending notification messages', 'notificationPermissionDetailDesc': - 'App needs notification permission to send you important alerts and messages', + 'De app heeft meldingsmachtiging nodig om u belangrijke waarschuwingen en berichten te sturen', 'appNeedsPermissionForFullFunction': 'De app heeft deze toestemming nodig voor volledige functionaliteit', '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', + 'bluetoothScan': 'Bluetooth scannen', + 'bluetoothConnect': 'Bluetooth verbinden', 'bluetoothScanExplanation': - 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', + 'De app heeft Bluetooth-scanmachtiging nodig om Bluetooth-apparaten in de buurt te scannen.', 'bluetoothConnectExplanation': - 'The app needs Bluetooth connect permission to connect to Bluetooth devices.', + 'De app heeft Bluetooth-verbindingsmachtiging nodig om verbinding te maken met Bluetooth-apparaten.', 'locationForBluetoothExplanation': - 'The app needs location permission to scan Bluetooth devices.', + 'De app heeft locatiemachtiging nodig om Bluetooth-apparaten te scannen.', 'bluetoothScanPermanentDenial': - 'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.', + 'Bluetooth-scanmachtiging is permanent geweigerd; ga naar instellingen om deze handmatig in te schakelen.', 'bluetoothConnectPermanentDenial': - 'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.', + 'Bluetooth-verbindingsmachtiging is permanent geweigerd; ga naar instellingen om deze handmatig in te schakelen.', 'locationPermanentDenial': - 'Location permission has been permanently denied, please go to settings to enable it manually.', - 'notificationPermission': 'Notification', - 'locationPermission': 'Location', + 'Locatiemachtiging is permanent geweigerd; ga naar instellingen om deze handmatig in te schakelen.', + 'notificationPermission': 'Meldingen', + 'locationPermission': 'Locatie', 'notificationPermissionExplanation': - 'Notification permission is required to display music playback status.', + 'Meldingsmachtiging is vereist om de status van het afspelen van muziek weer te geven.', 'locationPermissionExplanation': - 'Location permission is required to get current location.', + 'Locatiemachtiging is vereist om de huidige locatie te verkrijgen.', 'notificationPermissionPermanentDenial': - 'You have permanently denied notification permission, please go to settings to enable it.', + 'U hebt meldingsmachtiging permanent geweigerd; ga naar instellingen om deze in te schakelen.', 'locationPermissionPermanentDenial': - 'You have permanently denied location permission, please go to settings to enable it.', - 'storagePermission': 'Storage', + 'U hebt locatiemachtiging permanent geweigerd; ga naar instellingen om deze in te schakelen.', + 'storagePermission': 'Opslag', 'microphonePermissionExplanation': - 'We need microphone permission to record audio content.', + 'We hebben microfoonmachtiging nodig om audio op te nemen.', 'storagePermissionExplanation': - 'We need storage permission so you can select and upload audio files.', + 'We hebben opslagmachtiging nodig zodat u audiobestanden kunt selecteren en uploaden.', 'microphonePermissionPermanentDenial': - 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', + 'Microfoonmachtiging is permanent geweigerd. Ga naar de app-instellingen om de microfoonmachtiging handmatig in te schakelen.', 'storagePermissionPermanentDenial': - 'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', + 'Opslagmachtiging is permanent geweigerd. Ga naar de app-instellingen om de opslagmachtiging handmatig in te schakelen.', 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', + 'permissionUtilPermission': ' Machtiging', + 'permissionUtilRestricted': ' Machtiging beperkt', 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'Deze functie is niet beschikbaar of beperkt op het huidige apparaat. Controleer apparaatinstellingen of systeembeperkingen', 'permissionUtilConfirm': 'OK', // 原生前台服务通知(Android) @@ -1411,27 +1419,27 @@ const Map nlNL = { 'bleConnectionFailed': 'BLE-verbinding mislukt', 'deviceAuthorizationFailedCheckCode': 'Apparaatautorisatie mislukt, controleer de autorisatiecode', - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + 'bluetoothGuideTitle': 'Handmatige Bluetooth-activering vereist', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'Volg deze stappen:', // 请按照以下步骤操作: 'bluetoothGuideStep1': - 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'Bluetooth inschakelen: Instellingen → Bluetooth → Aan', // 开启蓝牙:设置 → 蓝牙 → 开启 'bluetoothGuideStep2': - 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'Verbind apparaat: zoek je apparaat in “Mijn apparaten” en tik om te verbinden', // 连接设备:在"我的设备"中找到您的设备并点击连接 'bluetoothGuideStep3': - 'Return to app to continue pairing process', // 返回应用继续配对流程 + 'Ga terug naar de app om het koppelproces te vervolgen', // 返回应用继续配对流程 'bluetoothGuideTip': - 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': 'I Know', // 我知道了 + 'Tip: houd in het Bedieningspaneel het Bluetooth-pictogram ingedrukt om snel naar de Bluetooth-instellingen te gaan', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + 'iKnow': 'Begrepen', // 我知道了 // 配对模块 - 绑定奖励 - "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:", + "firstBindRewardTitle": "Welkomstbeloning", + "firstBindRewardDesc": "Je hebt de koppelbeloningen ontvangen.", + "vipLevelLabel": "VIP-niveau:", + "expiryLabel": "Vervaldatum:", + "notActivated": "Niet geactiveerd", + "aiChatCreditsLabel": "AI Chat-tegoed:", + "translationCreditsLabel": "Vertaaltegoed:", + "meetingCreditsLabel": "Vergadertegoed:", "ok": "OK", // 用户反馈模块 @@ -1463,13 +1471,14 @@ const Map nlNL = { "connectionFailed": "Verbinding mislukt", "retryConnection": "Verbinding opnieuw proberen", "ota_updateNow": "Nu bijwerken", - "otaVersionInfoFailed": "Failed to get version info. Please try again later.", + "otaVersionInfoFailed": + "Versie-informatie ophalen mislukt. Probeer het later opnieuw.", "otaDeviceInfoUnavailable": - "Unable to get device info. Please check the connection and retry.", + "Kan geen apparaatinformatie ophalen. Controleer de verbinding en probeer het opnieuw.", "otaProductInfoUnavailable": - "Unable to identify the device. Please reconnect and retry.", + "Kan het apparaat niet identificeren. Verbind opnieuw en probeer het opnieuw.", "otaFirmwareVersionInvalid": - "Firmware version is abnormal. Please reconnect and retry.", + "Firmwareversie is afwijkend. Verbind opnieuw en probeer het opnieuw.", "keepConnectedDontClose": "Houd het apparaat verbonden, sluit de app niet", "doNotDisconnect": "Verbreek de verbinding niet", "charging": "Opladen", @@ -1495,7 +1504,7 @@ const Map nlNL = { 'BLE-verbinding vereist\nZorg dat het apparaat verbonden is en probeer opnieuw', 'otaDeviceInfoUnavailableTitle': 'Apparaatinfo niet beschikbaar', 'otaCannotGetDeviceInfo': - 'Cannot get device info\nPlease reconnect device or try again later', + 'Kan geen apparaatinformatie ophalen\nVerbind het apparaat opnieuw of probeer het later opnieuw', 'otaBleCheckFailed': 'BLE-verbindingscontrole mislukt', 'otaCannotGetDeviceInfoCheckConnection': 'Kan apparaatinfo niet ophalen, controleer de verbinding', diff --git a/lib/core/translations/language/pl_pl.dart b/lib/core/translations/language/pl_pl.dart index 3d1b01481..8b6fe6ebe 100644 --- a/lib/core/translations/language/pl_pl.dart +++ b/lib/core/translations/language/pl_pl.dart @@ -1,5 +1,5 @@ +// 波兰-波兰语 const Map plPL = { - // 通用 'continue': 'Kontynuuj', 'confirm': 'Potwierdź', @@ -172,12 +172,16 @@ const Map plPL = { // 蓝牙扫描模块 'bleInitFailedWithError': 'Inicjalizacja Bluetooth nie powiodła się: @error', - 'needBluetoothAndLocationPermission': 'Uprawnienia Bluetooth i lokalizacji są wymagane do skanowania urządzeń', - 'permissionRequestFailedWithError': 'Żądanie uprawnień nie powiodło się: @error', + 'needBluetoothAndLocationPermission': + 'Uprawnienia Bluetooth i lokalizacji są wymagane do skanowania urządzeń', + 'permissionRequestFailedWithError': + 'Żądanie uprawnień nie powiodło się: @error', 'needPermission': 'Wymagane uprawnienia', - 'blePermissionDialogContent': 'Ta aplikacja wymaga uprawnień Bluetooth i lokalizacji do skanowania urządzeń. Włącz je w Ustawieniach.', + 'blePermissionDialogContent': + 'Ta aplikacja wymaga uprawnień Bluetooth i lokalizacji do skanowania urządzeń. Włącz je w Ustawieniach.', 'needEnableBluetooth': 'Włącz Bluetooth', - 'enableBluetoothDialogContent': 'Włącz Bluetooth, aby skanować i łączyć urządzenia.', + 'enableBluetoothDialogContent': + 'Włącz Bluetooth, aby skanować i łączyć urządzenia.', 'bleScanFailedWithError': 'Skanowanie nie powiodło się: @error', 'bleConnectionSuccess': 'Połączenie udane', 'bleConnectedToDevice': 'Połączono z @device', @@ -261,154 +265,161 @@ const Map plPL = { "exportInDevelopment": "Eksport danych jest w trakcie rozwoju", // 商品模块 - 通用 - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - '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", + 'availablePackages': 'Dostępne pakiety', + 'remainingQuota': 'Pozostały limit', + 'totalQuota': 'Łączny limit', + 'remaining': 'Pozostało', + 'featureDescription': 'Opis funkcji', + '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": "Niewystarczające punkty", "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', + 'Niewystarczające saldo. Przejdź do odpowiedniej strony doładowania, aby doładować.', + "recharge": 'Przejdź do doładowania', "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + 'Członkostwo AI wygasło. Przejdź do strony doładowania członkostwa, aby odnowić.', // 商品模块 - AI商品页 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', + 'musicAndRecommendation': 'Muzyka i rekomendacje', + 'navigationAndRoutes': 'Nawigacja i trasy', + 'nearbySearch': 'Wyszukiwanie w pobliżu', + 'newsInformation': 'Wiadomości', + 'communicationAssistant': 'Asystent komunikacji', 'aiHeaderDesc1': - 'Longer conversation quota, more tool calls, extended context length.', + 'Większa pula rozmów, więcej wywołań narzędzi, dłuższy kontekst.', 'aiHeaderDesc2': - 'Suitable for agent Q&A, summarization, analysis, and task execution.', - 'musicSearchPlaybackControl': 'Music library search and playback control', + 'Odpowiednie do pytań i odpowiedzi, podsumowań, analizy i wykonywania zadań.', + 'musicSearchPlaybackControl': + 'Wyszukiwanie w bibliotece i sterowanie odtwarzaniem muzyki', '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', + 'Inteligentne playlisty i rekomendacje podobnych utworów', + 'routePlanningAndCongestionAvoidance': 'Planowanie trasy i omijanie korków', + 'voiceBroadcastAndWaypoints': 'Komunikaty głosowe i punkty pośrednie', + 'realTimeWeatherForecast': 'Pogoda i prognoza w czasie rzeczywistym', + 'clothingAdviceAndTravelReminders': + 'Porady dotyczące ubioru i przypomnienia podróżne', + 'poiSearchFoodGasParking': 'Wyszukiwanie POI: jedzenie / paliwo / parking', + 'ratingsHoursAndDirectRoutes': 'Oceny, godziny otwarcia i prowadzenie trasą', + 'hotNewsAndTopicOverview': 'Najważniejsze wiadomości i przegląd tematów', + 'longArticleSummariesAndKeyPoints': + 'Podsumowania długich artykułów i kluczowe punkty', + 'helpCallAndSMS': 'Pomoc w połączeniach i SMS', 'templatedMessagesAndScheduleReminders': - 'Template messages and schedule reminders', + 'Szablonowe wiadomości i zaplanowane przypomnienia', 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', + 'Funkcje zależą od uprawnień urządzenia, dostępności usług i warunków sieci.', // 商品模块 - 翻译商品页 - 'realtimeTranscription': 'Real-time Transcription', - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', + 'realtimeTranscription': 'Transkrypcja w czasie rzeczywistym', + 'sceneLexicon': 'Słownik scenariuszy', + 'subtitleDisplay': 'Napisy', 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'Tłumaczenie symultaniczne i tłumaczenie tekstu w czasie rzeczywistym z niskim opóźnieniem.', 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', + 'translateZhEn': 'Tłumaczenie chińsko-angielskie', + 'lowLatencyVoiceBroadcast': 'Transmisja głosowa z niskim opóźnieniem', + 'multiLangTextTranslation': 'Wielojęzyczne tłumaczenie tekstu', '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', + 'Optymalizacja terminologii i zachowanie kontekstu', + 'lexiconTourBusinessLife': 'Leksykony: podróże/biznes/życie', + 'personalVocabularyMemory': 'Osobista pamięć słownictwa', + 'conversationSubtitleLargeText': 'Napisy rozmowy / tryb dużego tekstu', + 'colorHighContrast': 'Wysoki kontrast kolorów', 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', + 'Wydajność tłumaczenia zależy od mikrofonu, opóźnień sieci i hałasu otoczenia.', // 商品模块 - 会议商品页 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', + 'meetingRecording': 'Nagrywanie spotkania', + 'transcriptionAndSummary': 'Transkrypcja i podsumowanie', + 'keywordSearch': 'Wyszukiwanie słów kluczowych', + 'collaborationSharing': 'Współpraca i udostępnianie', 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'Nagrywanie audio, transkrypcja, wyszukiwanie słów kluczowych i automatyczne podsumowanie, aby zwiększyć efektywność spotkań.', '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', + 'Odpowiednie do spotkań biznesowych, notatek z zajęć i protokołów rozmów.', + 'meetingAutoRecording': 'Automatyczne nagrywanie i segmentacja', + 'meetingSpeakerTagging': 'Oznaczanie mówców', + 'meetingLongAudioTranscription': 'Transkrypcja długich nagrań audio', + 'meetingKeyPointSummary': 'Wyodrębnianie kluczowych punktów', + 'meetingTopicNameSearch': 'Wyszukiwanie po temacie/nazwie', + 'meetingTimelineJump': 'Skok na osi czasu', + 'meetingExportSummary': 'Eksport protokołu', + 'meetingMultiPlatformShare': 'Udostępnianie między platformami', 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', + 'Używaj w cichym otoczeniu; wydajność zależy od mikrofonu i sieci.', // 商品模块 - VIP会员页 - 'benefitsOverview': 'Benefits overview', - 'higherQuota': 'Higher usage quota', - 'lowerUnitPrice': 'Lower unit price', - 'priorityService': 'Priority service', - 'exclusiveSupportChannel': 'Dedicated support channel', - 'fastResponse': 'Fast issue response', - 'eventsAndDiscounts': 'Events and discounts', - 'memberExclusiveEvents': 'Member-exclusive events', - 'longTermDiscountPlan': 'Long-term discount plan', - 'generalPrivileges': 'General privileges', - 'earlyAccessNewFeatures': 'Early access to new features', - 'crossDeviceSync': 'Cross-device sync', + 'benefitsOverview': 'Przegląd korzyści', + 'higherQuota': 'Wyższy limit użycia', + 'lowerUnitPrice': 'Niższa cena jednostkowa', + 'priorityService': 'Priorytetowa obsługa', + 'exclusiveSupportChannel': 'Dedykowany kanał wsparcia', + 'fastResponse': 'Szybka reakcja na zgłoszenia', + 'eventsAndDiscounts': 'Wydarzenia i zniżki', + 'memberExclusiveEvents': 'Wydarzenia tylko dla członków', + 'longTermDiscountPlan': 'Długoterminowy plan rabatowy', + 'generalPrivileges': 'Ogólne korzyści', + 'earlyAccessNewFeatures': 'Wczesny dostęp do nowych funkcji', + 'crossDeviceSync': 'Synchronizacja między urządzeniami', 'vipDisclaimer': - 'Actual benefits depend on the package details and may change with versions.', + 'Rzeczywiste korzyści zależą od szczegółów pakietu i mogą się zmieniać wraz z wersjami.', // 商品模块 - 商品名称与描述 'ai_001_name': 'AI Basic 100', @@ -417,51 +428,52 @@ const Map plPL = { '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).', + 'trans_001_name': 'Tłumaczenie Podstawowe 100', + 'trans_002_name': 'Tłumaczenie Podstawowe 500', + 'trans_003_name': 'Tłumaczenie Podstawowe 1000', + 'ai_001_desc': 'Zawiera 100 użyć. Dostęp do podstawowych funkcji AI.', + 'ai_002_desc': 'Zawiera 500 użyć. Dostęp do podstawowych funkcji AI.', + 'ai_003_desc': 'Zawiera 1000 użyć. Dostęp do podstawowych funkcji AI.', + 'meet_001_desc': 'Zawiera 100 nagrań/transkrypcji spotkań.', + 'meet_002_desc': 'Zawiera 500 nagrań/transkrypcji spotkań.', + 'meet_003_desc': 'Zawiera 1000 nagrań/transkrypcji spotkań.', + 'trans_001_desc': 'Zawiera 100 tłumaczeń (głos/tekst).', + 'trans_002_desc': 'Zawiera 500 tłumaczeń (głos/tekst).', + 'trans_003_desc': 'Zawiera 1000 tłumaczeń (głos/tekst).', // 商品模块 - 页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'appNameProvider': 'Aplikacja: VoiTrans · Dostarczone przez: VoiTrans', + 'iapCustomerServiceQQLabel': 'Obsługa klienta IAP QQ: @qq', 'copyrightVoitrans': '© 2025 Voitrans Technologies', // 新手引导 'skip': "Pomiń", - 'next': 'Next', - 'sayLilyHint': 'Say "Lily Lily" to the mic', - 'imHere': 'I’m here~', - 'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.', - 'aiReplyCompleted': 'Lily has finished the reply!', - 'aiThinking': 'Lily is thinking…', - 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', - 'confirmInput': 'Confirm Input', - 'guideClickSendPrefix': 'Tap send, ', - 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', - 'guideWeatherInput': 'What’s the weather today?', - 'guideWeatherSend': 'Lily will report the weather in real time', - 'guideWeatherEnd': 'Lily can report weather live—try other commands', - 'guideMusicStart': 'Tell Lily: “Play some rock music”', - 'guideMusicInput': 'Play some rock music', - 'guideMusicSend': 'Lily will find music for you', - 'guideMusicEnd': 'Lily found music—try other commands', - 'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”', - 'guideNavInput': 'Navigate to Shenzhen Airport', - 'guideNavSend': 'Lily will plan the route', - 'guideNavEnd': 'Navigation set—try other commands', + 'next': 'Dalej', + 'sayLilyHint': 'Powiedz „Lily Lily” do mikrofonu', + 'imHere': 'Jestem tutaj~', + 'guideWelcomeWakeAI': 'Witamy w Voitrans! Najpierw wybudź swoją AI „Lily”.', + 'aiReplyCompleted': 'Lily zakończyła odpowiedź!', + 'aiThinking': 'Lily myśli…', + 'guideAwakenSuccess': 'Świetnie! Lily jest aktywna — poproś ją o pomoc.', + 'confirmInput': 'Potwierdź', + 'guideClickSendPrefix': 'Naciśnij wyślij, ', + 'guideWeatherStart': 'Powiedz Lily: „Jaka jest dziś pogoda?”', + 'guideWeatherInput': 'Jaka jest dziś pogoda?', + 'guideWeatherSend': 'Lily poda pogodę w czasie rzeczywistym', + 'guideWeatherEnd': + 'Lily może podawać pogodę na żywo — wypróbuj inne polecenia', + 'guideMusicStart': 'Powiedz Lily: „Włącz trochę rocka”', + 'guideMusicInput': 'Włącz trochę rocka', + 'guideMusicSend': 'Lily znajdzie dla Ciebie muzykę', + 'guideMusicEnd': 'Lily znalazła muzykę — wypróbuj inne polecenia', + 'guideNavStart': 'Powiedz Lily: „Nawiguj do lotniska w Shenzhen”', + 'guideNavInput': 'Nawiguj do lotniska w Shenzhen', + 'guideNavSend': 'Lily zaplanuje trasę', + 'guideNavEnd': 'Nawigacja ustawiona — wypróbuj inne polecenia', 'guideMeetingStart': - 'Tell Lily: “Create a meeting reminder for 3pm tomorrow”', - 'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow', - 'guideMeetingSend': 'Lily will create a meeting reminder', + 'Powiedz Lily: „Utwórz przypomnienie o spotkaniu na jutro 15:00”', + 'guideMeetingInput': 'Utwórz przypomnienie o spotkaniu na jutro 15:00', + 'guideMeetingSend': 'Lily utworzy przypomnienie o spotkaniu', 'guideMeetingEnd': 'Reminder created—try other commands', 'guidePhoneStart': 'Tell Lily: “Call Mom”', 'guidePhoneInput': 'Call Mom', @@ -484,257 +496,272 @@ const Map plPL = { 'recordingDetails': 'Szczegóły nagrania', 'aiSummary': 'Podsumowanie AI', 'meetingTranscript': 'Transkrypcja spotkania', - 'files': 'Files', - 'mine': 'Mine', - 'connect': 'Connect', - 'allFiles': 'All Files', - 'searchInAllFiles': 'Search in all files', - 'from': 'From', - 'sortBy': 'Sort by', - 'creationTime': 'Creation Time', - 'bluetoothConnection': 'Bluetooth Connection', - 'meetingReconnect': 'Reconnect', - 'searching': 'Searching...', - 'searchFailed': 'Search failed, please check if Bluetooth is enabled', - 'aiPenNotFound': 'AI PEN device not found', - 'connectedToAiPen': 'Connected to AI PEN device', - 'checkingNewFiles': 'Checking for new files to import', - 'startingWifi': 'Starting Wi-Fi...', - 'newFilesDetected': 'New files detected, preparing to import', - 'noNewFiles': 'No new files to import', - 'connectingWifi': 'Connecting to Wi-Fi...', - 'wifiConnected': 'Wi-Fi connected successfully', - 'downloadingFiles': 'Downloading files...', - 'downloadingFileProgress': 'Total {total} files, downloading file {current}', - 'downloadComplete': 'Download complete', + 'files': 'Pliki', + 'mine': 'Moje', + 'connect': 'Połącz', + 'allFiles': 'Wszystkie pliki', + 'searchInAllFiles': 'Szukaj we wszystkich plikach', + 'from': 'Od', + 'sortBy': 'Sortuj według', + 'creationTime': 'Czas utworzenia', + 'bluetoothConnection': 'Połączenie Bluetooth', + 'meetingReconnect': 'Połącz ponownie', + 'searching': 'Wyszukiwanie...', + 'searchFailed': + 'Wyszukiwanie nie powiodło się, sprawdź czy Bluetooth jest włączony', + 'aiPenNotFound': 'Nie znaleziono urządzenia AI PEN', + 'connectedToAiPen': 'Połączono z urządzeniem AI PEN', + 'checkingNewFiles': 'Sprawdzanie nowych plików do importu', + 'startingWifi': 'Uruchamianie Wi‑Fi...', + 'newFilesDetected': 'Wykryto nowe pliki, przygotowywanie importu', + 'noNewFiles': 'Brak nowych plików do importu', + 'connectingWifi': 'Łączenie z Wi‑Fi...', + 'wifiConnected': 'Wi‑Fi połączone', + 'downloadingFiles': 'Pobieranie plików...', + 'downloadingFileProgress': + 'Łącznie {total} plików, pobieranie pliku {current}', + 'downloadComplete': 'Pobieranie zakończone', 'downloadCompleteInfo': - 'Download complete, {count} files in total, returning automatically in 2 seconds', + 'Pobieranie zakończone, łącznie {count} plików. Powrót automatycznie za 2 sekundy', // Meeting模块 - 录音功能 - 'startRecording': 'Start Recording', - 'liveRecording': 'Live Recording', - 'audioVideoRecording': 'Audio/Video Recording', - 'callRecording': 'Call Recording', - 'importAudio': 'Import Audio', + 'startRecording': 'Rozpocznij nagrywanie', + 'liveRecording': 'Nagrywanie na żywo', + 'audioVideoRecording': 'Nagrywanie audio/wideo', + 'callRecording': 'Nagrywanie rozmów', + 'importAudio': 'Importuj audio', 'meetingRecordExitTitle': 'Wyjdź z nagrywania', // 退出录音 'meetingRecordExitMessage': 'Wybierz, co zrobić przed wyjściem', // 请选择离开后的操作 'meetingRecordEndAndSave': 'Zakończ i zapisz', // 结束录音并保存 'meetingRecordEndWithoutSave': 'Zakończ bez zapisywania', // 结束录音不保存 'meetingRecordContinueInBackground': 'Kontynuuj nagrywanie w tle', // 后台继续录音 - 'meetingRecordStopTimeout': 'Przekroczono limit czasu zatrzymania nagrywania. Spróbuj ponownie.', // 结束录音超时,请重试 - 'meetingRecordStopFailed': 'Nie udało się zatrzymać nagrywania. Spróbuj ponownie.', // 结束录音失败,请重试 - 'meetingRecordSaveFailed': 'Nie udało się zapisać nagrania. Spróbuj ponownie.', // 保存录音失败,请重试 + 'meetingRecordStopTimeout': + 'Przekroczono limit czasu zatrzymania nagrywania. Spróbuj ponownie.', // 结束录音超时,请重试 + 'meetingRecordStopFailed': + 'Nie udało się zatrzymać nagrywania. Spróbuj ponownie.', // 结束录音失败,请重试 + 'meetingRecordSaveFailed': + 'Nie udało się zapisać nagrania. Spróbuj ponownie.', // 保存录音失败,请重试 'meetingRecordRecordingNotificationTitle': 'Nagrywanie w toku', // 录音进行中 - 'meetingRecordRecordingNotificationBody': 'Nagrywanie w tle. Dotknij, aby wrócić do aplikacji.', // 正在后台录音,点击返回应用 + 'meetingRecordRecordingNotificationBody': + 'Nagrywanie w tle. Dotknij, aby wrócić do aplikacji.', // 正在后台录音,点击返回应用 'overlayPermissionTitle': 'Wyświetlanie nad innymi aplikacjami', // 悬浮窗权限 - 'overlayPermissionTranslationDesc': 'Aby wyświetlać wyniki tłumaczenia podczas rozmów lub tłumaczenia audio/wideo, potrzebujemy uprawnienia do wyświetlania nad innymi aplikacjami. Dzięki temu zobaczysz tłumaczenia w czasie rzeczywistym podczas korzystania z innych aplikacji.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 - 'overlayPermissionRecordingDesc': 'Aby wyświetlać pływający pasek nagrywania (timer/pauza/wznów) podczas nagrywania, potrzebujemy uprawnienia do wyświetlania nad innymi aplikacjami.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 - 'overlayPermissionOpenSettingsFailed': 'Nie można automatycznie otworzyć ustawień systemowych. Otwórz Ustawienia i włącz ręcznie uprawnienie do wyświetlania nad innymi aplikacjami.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'overlayPermissionTranslationDesc': + 'Aby wyświetlać wyniki tłumaczenia podczas rozmów lub tłumaczenia audio/wideo, potrzebujemy uprawnienia do wyświetlania nad innymi aplikacjami. Dzięki temu zobaczysz tłumaczenia w czasie rzeczywistym podczas korzystania z innych aplikacji.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 + 'overlayPermissionRecordingDesc': + 'Aby wyświetlać pływający pasek nagrywania (timer/pauza/wznów) podczas nagrywania, potrzebujemy uprawnienia do wyświetlania nad innymi aplikacjami.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 + 'overlayPermissionOpenSettingsFailed': + 'Nie można automatycznie otworzyć ustawień systemowych. Otwórz Ustawienia i włącz ręcznie uprawnienie do wyświetlania nad innymi aplikacjami.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 + 'transcribing': 'Transkrypcja...', + 'summarizing': 'Podsumowywanie...', + 'analyzing': 'Analizowanie...', + 'summaryComplete': 'Podsumowanie ukończone', + 'generate': 'Generuj', + 'overview': 'Przegląd', + 'transcription': 'Transkrypcja', + 'summary': 'Podsumowanie', + 'mindMap': 'Mapa myśli', + 'editSpeaker': 'Edytuj', + 'nameSpeaker': 'Nazwij mówcę', // Meeting模块 - 转写与总结 - 'reSummarize': 'Re-summarize', - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'reSummarize': 'Podsumuj ponownie', + 'dateAndTime': 'Data i godzina', + 'location': 'Lokalizacja', + 'attendees': 'Uczestnicy', + 'inputLocation': 'Wpisz lokalizację', + 'inputAttendees': 'Wpisz uczestników', // 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.', + 'selectSummaryTemplate': 'Wybierz szablon podsumowania', + 'useThisTemplate': 'Użyj tego szablonu', + 'lastUsed': 'Ostatnio używane', + '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': 'Zobacz wszystko', + 'recordingLanguage': 'Język nagrania', + 'chineseSimplified': 'Chiński mandaryński (uproszczony)', + 'meetingGenerateNow': 'Generuj teraz', + 'keyEventsAnalyzed': 'Przeanalizowano {count} kluczowych zdarzeń.', 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + 'Analiza AI identyfikuje kluczowe zdarzenia w nagraniach, umożliwiając wybór ważnych zdarzeń do generowania 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}', + 'importing': 'Importowanie...', + 'batchImporting': 'Importowanie zbiorcze...', + 'importingLocalRecordings': 'Importowanie lokalnych nagrań...', + 'importFailed': 'Import pliku nie powiódł się: {filePath}, błąd: {error}', + 'importSuccess': 'Pomyślnie zaimportowano {count} lokalnych nagrań', + 'importError': 'Import nie powiódł się: {error}', + 'pleaseSelectAudioFile': 'Wybierz plik audio', + 'shareAudio': 'Udostępnij audio spotkania', + 'shareComplete': 'Udostępnianie zakończone!', + 'shareFailed': 'Udostępnianie nie powiodło się: {error}', + 'fileProcessingFailed': + 'Przetwarzanie pliku nie powiodło się: {filePath}, błąd: {error}', // Meeting模块 - 思维导图 - 'saveMindMap': 'Zapisz mapę myśli', - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', + 'saveMindMap': 'Zapisz mapę myśli', + 'shareMindMap': 'Udostępnij mapę myśli', + 'shareSuccess': 'Udostępnianie zakończone sukcesem', // 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', + 'askAI': 'Zapytaj AI...', + 'askAIPrompt': 'W czym mogę dziś pomóc?', + 'continueAsk': 'Kontynuuj pytania', + 'todoList': 'Lista zadań', + 'extractConclusion': 'Wyodrębnij wnioski', + 'generateKeyIndicators': 'Generuj kluczowe wskaźniki', // 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', + 'shareLink': 'Udostępnij link', + 'copyTranscript': 'Kopiuj transkrypcję', + 'copySummary': 'Kopiuj podsumowanie', + 'exportAudio': 'Eksportuj audio', + 'exportTranscript': 'Eksportuj transkrypcję', + 'shareMeetingAudio': 'Udostępnij audio spotkania', + 'exportSummary': 'Eksportuj podsumowanie', + 'exportAs': 'Eksportuj jako', + 'exportingPDF': 'Eksportowanie 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', + 'nameCurrentSpeaker': 'Nazwij bieżącego mówcę', + 'recentlyUsedNames': 'Ostatnio używane nazwy', + 'applyToCurrentParagraph': 'Zastosuj do bieżącego akapitu', + 'totalTime': 'Łączny czas', 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', + 'Mówcy w podsumowaniu będą aktualizowani automatycznie', // Meeting模块 - 云端同步 - 'syncToCloud': 'Sync to Cloud', + 'syncToCloud': 'Synchronizuj z chmurą', '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', + 'Automatycznie synchronizuj swoje nagrania z chmurą; możesz odtwarzać, zarządzać i udostępniać nagrania w dowolnej aplikacji VOITRANS lub VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Synchronizuj aplikację VOITRANS', + 'transcriptionRecord': 'Wpis transkrypcji', // Meeting模块 - 我的页面 - 'transcriptionRecords': 'Transcription Records', - 'templateCommunity': 'Template Community', - 'comingSoon': 'Coming Soon', - 'integration': 'Integration', + 'transcriptionRecords': 'Wpisy transkrypcji', + 'templateCommunity': 'Społeczność szablonów', + 'comingSoon': 'Wkrótce', + 'integration': 'Integracja', 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', - 'enabled': 'Enabled', - 'disabled': 'Disabled', - 'myVoitransDevice': 'My VOITRANS Device', - 'helpAndFeedback': 'Help & Feedback', - 'aboutVoitrans': 'About VOITRANS', - 'meetingDays': 'Days', - 'meetingHours': 'Hours', - 'voitransAiMember': 'Voitrans AI Member', - 'unlockStarterMember': 'Unlock Starter Member', - 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', - 'unlockNow': 'Unlock Now', + 'enabled': 'Włączone', + 'disabled': 'Wyłączone', + 'myVoitransDevice': 'Moje urządzenie VOITRANS', + 'helpAndFeedback': 'Pomoc i opinie', + 'aboutVoitrans': 'O VOITRANS', + 'meetingDays': 'Dni', + 'meetingHours': 'Godziny', + 'voitransAiMember': 'Członek AI Voitrans', + 'unlockStarterMember': 'Odblokuj członkostwo Starter', + 'bindDeviceToActivate': + 'Połącz urządzenie Voitrans, aby aktywować członkostwo Starter', + 'unlockNow': 'Odblokuj teraz', // Meeting模块 - 会员与升级 - 'comparison': 'Comparison', - 'detailedInfo': 'Detailed Information', - 'monthlyTranscriptionTime': 'Monthly Transcription Time', - 'unlimited': 'Unlimited', - 'professionalTemplates': 'Professional Templates', - 'limited': 'Limited', - 'fullTemplates': 'Full Templates', - 'professionalTerms': 'Professional Terms', - 'customTemplates': 'Custom Templates', - 'visualMindMap': 'Visual Mind Map', - 'speakerIdentification': 'Speaker Identification', - 'aiVoiceEnhancement': 'AI Voice Enhancement', - 'audioImport': 'Audio Import', - 'multipleExportFormats': 'Multiple Export Formats', - 'professionalSummaryTemplates': 'Professional Summary Templates', + 'comparison': 'Porównanie', + 'detailedInfo': 'Szczegółowe informacje', + 'monthlyTranscriptionTime': 'Miesięczny czas transkrypcji', + 'unlimited': 'Bez limitu', + 'professionalTemplates': 'Profesjonalne szablony', + 'limited': 'Ograniczone', + 'fullTemplates': 'Pełne szablony', + 'professionalTerms': 'Terminy branżowe', + 'customTemplates': 'Szablony niestandardowe', + 'visualMindMap': 'Wizualna mapa myśli', + 'speakerIdentification': 'Identyfikacja mówcy', + 'aiVoiceEnhancement': 'Wzmocnienie głosu AI', + 'audioImport': 'Import audio', + 'multipleExportFormats': 'Wiele formatów eksportu', + 'professionalSummaryTemplates': 'Profesjonalne szablony podsumowań', 'professionalTemplateDesc': - 'Professional template design to improve your work efficiency. Customized according to industry needs.', + 'Profesjonalne szablony zwiększające efektywność pracy. Dostosowane do potrzeb branżowych.', 'customTemplateDesc': - 'You can customize summary prompts according to your needs and use them to generate the required summaries.', + 'Możesz dostosować prompty podsumowania do swoich potrzeb i generować wymagane podsumowania.', 'askAiDesc': - 'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.', + 'Inteligentnie wyciągaj głębsze informacje z nagrań i jednym kliknięciem generuj tabele danych, kluczowe wnioski, listy zadań, e‑maile raportowe i inne sformatowane treści.', 'visualMindMapDesc': - 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', + 'Nie tylko podsumowania: organizuj i wizualizuj kluczowe punkty za pomocą map myśli, aby lepiej zrozumieć cały tekst.', 'templateCommunityDesc': - 'Discover, share, and get inspiration from the template library created by users.', + 'Odkrywaj, udostępniaj i czerp inspirację z biblioteki szablonów tworzonej przez użytkowników.', 'speakerIdentificationDesc': - 'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.', + 'Transkrypcja audio będzie wspierać identyfikację mówcy, co bardziej intuicyjnie odtworzy treść spotkań lub rozmów telefonicznych. Jednocześnie podsumowanie będzie dokładniejsze.', 'privateCloudSyncDesc': - 'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.', + 'Twoje nagrania i transkrypcje będą bezpiecznie przechowywane na dedykowanych serwerach chmurowych, z pełnym szyfrowaniem podczas przesyłania i pobierania, aby zapewnić prywatność i bezpieczeństwo.', 'aiVoiceEnhancementDesc': - 'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.', + 'Wzmocnienie głosu AI obsługuje wiele ustawień redukcji szumów, inteligentnie usuwa hałas tła, poprawia wyrazistość głosu i jakość odtwarzania.', 'audioImportDesc': - 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', + 'Łatwo importuj pliki audio z aplikacji lokalnych lub firm trzecich, np. Dyktafon, Google Drive itp.', 'multipleExportFormatsDesc': - 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - 'upgradeMembership': 'Upgrade Your Membership', - 'yearlySubscription': 'Yearly Subscription', - 'monthlySubscription': 'Monthly Subscription', - 'proMonthly': 'Pro ¥60/month', + 'Eksportuj nagrania audio, tekst transkrypcji i podsumowania w różnych formatach (TXT, PDF, JPEG) zgodnie z potrzebami.', + 'upgradeMembership': 'Ulepsz członkostwo', + 'yearlySubscription': 'Subskrypcja roczna', + 'monthlySubscription': 'Subskrypcja miesięczna', + 'proMonthly': 'Pro ¥60/mies.', 'proMonthlyDesc': - '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', - 'sevenDayTrial': '7-day Free Trial', - 'unlimitedMonthly': 'Unlimited ¥120/month', + '7‑dniowy bezpłatny okres próbny, potem ¥800/rok. Anuluj w dowolnym momencie przed końcem okresu próbnego.', + 'sevenDayTrial': '7‑dniowy bezpłatny okres próbny', + 'unlimitedMonthly': 'Bez limitu ¥120/mies.', 'unlimitedMonthlyDesc': - '7-day free trial, then ¥1600/year. Cancel anytime before trial ends.', - 'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.', + '7‑dniowy bezpłatny okres próbny, potem ¥1600/rok. Anuluj w dowolnym momencie przed końcem okresu próbnego.', + 'trialNote': + '*Bezpłatny okres próbny 7 dni, potem rozliczenie roczne, anuluj w dowolnym momencie.', 'proPrice': 'Pro ¥120', - 'proMonthlyPrice': '¥120/month', - 'subscribe': 'Subscribe', + 'proMonthlyPrice': '¥120/mies.', + 'subscribe': 'Subskrybuj', 'unlimitedPrice': 'Unlimited ¥198', - 'unlimitedMonthlyPrice': '¥198/month', + 'unlimitedMonthlyPrice': '¥198/mies.', 'upgradeNote': - '*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account', - 'buyMoreTranscriptionTime': 'Buy More Transcription Time', - 'sixThousandMinutes': '6,000 minutes', - 'threeThousandMinutes': '3,000 minutes', - 'sixHundredMinutes': '600 minutes', - 'oneHundredTwentyMinutes': '120 minutes', - 'validityPeriod': '*Validity Period: ', + '*Po ulepszeniu subskrypcji pozostałe dni pierwotnej subskrypcji zostaną automatycznie przeliczone i zwrócone na Twoje konto płatnicze', + 'buyMoreTranscriptionTime': 'Kup więcej czasu transkrypcji', + 'sixThousandMinutes': '6 000 minut', + 'threeThousandMinutes': '3 000 minut', + 'sixHundredMinutes': '600 minut', + 'oneHundredTwentyMinutes': '120 minut', + 'validityPeriod': '*Okres ważności: ', 'validityNote': - 'Activated immediately after purchase, valid for 2 years after activation.', - 'purchase': 'Purchase', + 'Aktywowane natychmiast po zakupie, ważne przez 2 lata od aktywacji.', + 'purchase': 'Kup', // Meeting模块 - 录音语言 - 'recordLanguage': 'Recording Language', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', + 'recordLanguage': 'Język nagrania', + 'cantonese': 'Kantoński', + 'sichuan': 'Dialekt syczuański', + 'shanghai': 'Dialekt szanghajski', // 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ę', + 'meetingUnknownLanguage': 'Nieznany język', + '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', + '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", @@ -743,10 +770,10 @@ const Map plPL = { "translationRecharge": "Płatność tłumaczenia", "meetingAssistantRecharge": "Płatność asystenta spotkań", "cloudSync": "Płatność synchronizacji w chmurze", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "memberService": "Obsługa członkostwa", + "bindRewardTitle": "Nagrody", "bindRewardSimpleDesc": - "First bind device reward has been issued. Tap OK to close.", + "Nagroda za pierwsze powiązanie urządzenia została przyznana. Dotknij OK, aby zamknąć.", "joinDevice": "Podłączone urządzenie:", "accountId": "ID konta:", "systemSetting": "Ustawienia systemowe", @@ -797,20 +824,20 @@ const Map plPL = { "loading": "Ładowanie...", // 设备管理模块 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", - "deviceTypeSmartEye": "Smart Glasses", + "deviceTypeUnknown": "Nieznane urządzenie", + "deviceTypeClassicBluetoothHeadset": "Klasyczny zestaw słuchawkowy Bluetooth", + "deviceTypeBleBluetoothHeadset": "Zestaw słuchawkowy Bluetooth BLE", + "deviceTypeSmartVoiceRecorder": "Inteligentny rejestrator głosu", + "deviceTypeSmartEye": "Inteligentne okulary", "unbind": "Rozłącz", - "noDevicesBound": "No devices bound yet", - "pleaseBindDeviceFirst": "Please bind a device first to manage", - "noMacAddress": "No MAC Address", - "licenseCode": "License Code", - "confirmUnbind": "Confirm Unbind", + "noDevicesBound": "Brak powiązanych urządzeń", + "pleaseBindDeviceFirst": "Najpierw powiąż urządzenie, aby zarządzać", + "noMacAddress": "Brak adresu MAC", + "licenseCode": "Kod licencji", + "confirmUnbind": "Potwierdź odłączenie", "confirmUnbindMessage": - "Are you sure you want to unbind device \"{deviceName}\"?", - "confirmUnbindAction": "Confirm Unbind", + "Czy na pewno chcesz odłączyć urządzenie \"{deviceName}\"?", + "confirmUnbindAction": "Odłącz", // Agent模块 - 主界面 "Lily": "Lily", @@ -841,21 +868,22 @@ const Map plPL = { "loadFailedClickRetry": "Ładowanie nie powiodło się, kliknij, aby spróbować ponownie", "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.', + "callingTool": "Pomagam Ci, proszę czekać!", // 正在帮您,请稍等! + "voice_interrupt": "Przerwij", // 语音打断 + '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", // 今日天气 - "presetNews": "Today's news", // 今日新闻 - "presetFood": "Nearby food", // 美食 - "playSomeMusic": "Play some popular music", // 播放一些流行音乐 - "navigationTo": "Please help me navigate to", // 导航到 - "todayWeather": "How's the weather today?", // 今日天气 - "todayNews": "What's the news today?", // 今日新闻 - "nearbyFood": "What delicious food is nearby?", // 美食 + "presetMusic": "Włącz muzykę", // 来点音乐 + "presetNavigation": "Nawiguj do", // 导航 + "presetWeather": "Pogoda dzisiaj", // 今日天气 + "presetNews": "Wiadomości dzisiaj", // 今日新闻 + "presetFood": "Jedzenie w pobliżu", // 美食 + "playSomeMusic": "Włącz popularną muzykę", // 播放一些流行音乐 + "navigationTo": "Nawiguj do", // 导航到 + "todayWeather": "Jaka jest pogoda dzisiaj?", // 今日天气 + "todayNews": "Jakie są wiadomości dzisiaj?", // 今日新闻 + "nearbyFood": "Gdzie jest dobre jedzenie w pobliżu?", // 附近有什么好吃的 // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Cześć! Jestem **Lily**, mogę Ci pomóc:\n\n' @@ -942,7 +970,8 @@ const Map plPL = { 'builtInNavigation': 'Wbudowana nawigacja', 'useBuiltInNavigation': 'Nawiguj z wbudowaną mapą', 'navigationStartFailed': 'Nie udało się uruchomić nawigacji', - 'cannotPlayMusicListRetryLater': 'Nie można odtworzyć listy muzyki, spróbuj ponownie później', + 'cannotPlayMusicListRetryLater': + 'Nie można odtworzyć listy muzyki, spróbuj ponownie później', 'cannotPlaySong': 'Nie można odtworzyć utworu', 'openMapError': 'Błąd otwierania mapy', 'pleaseInstallAmapApp': 'Najpierw zainstaluj aplikację Amap', @@ -1004,8 +1033,8 @@ const Map plPL = { "strongWind": "Silny wiatr", // 翻译模块 - 中间层 - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", + "pictureTranslation": "Tłumaczenie obrazu", + "textTranslation": "Tłumaczenie tekstu", // 翻译模块 - 主页 "translationHistory": "Historia tłumaczeń", @@ -1015,32 +1044,33 @@ const Map plPL = { "phoneUser": "Użytkownik telefonu", "selectSourceLanguage": "Wybierz język źródłowy", "selectTargetLanguage": "Wybierz język docelowy", - "me": "Me", - "counterPart": "Counterpart", + "me": "Ja", + "counterPart": "Rozmówca", "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - "autoDetect": "Auto Detect", // 自动检测 + "Upewnij się, że zestaw słuchawkowy Bluetooth jest połączony z telefonem i trwa rozmowa", + "autoDetect": "Automatyczne wykrywanie", // 自动检测 // 翻译模块 - 文本翻译 - "languageDetectionFailed": "Language detection failed", + "languageDetectionFailed": "Wykrywanie języka nie powiodło się", // 翻译模块 - 悬浮窗与权限 'disableFloatingWindow': 'Wyłącz pływające okno', 'enableFloatingWindow': 'Włącz pływające okno', 'permissionTip': 'Wskazówka dotycząca uprawnień', - 'micPermissionRequiredForRecording': 'Uprawnienie do mikrofonu jest wymagane do nagrywania', + 'micPermissionRequiredForRecording': + 'Uprawnienie do mikrofonu jest wymagane do nagrywania', 'deleteTranslationRecordError': 'Błąd usuwania rekordu tłumaczenia: @error', - "translationFailed": "Translation failed", + "translationFailed": "Tłumaczenie nie powiodło się", "translating": "Tłumaczenie", "translate": "Tłumacz", - "pleaseInputText": "Please input text", + "pleaseInputText": "Wprowadź tekst", "inputTextToTranslate": "Wprowadź tekst do przetłumaczenia", - "textTooLong": "Text too long, max 5000 characters", + "textTooLong": "Tekst jest zbyt długi, maks. 5000 znaków", // 翻译模块 - 历史记录 "noTranslationHistory": "Brak historii", - "historyRecords": "History Records", - "clearResults": "Clear Results", + "historyRecords": "Wpisy historii", + "clearResults": "Wyczyść wyniki", "clearHistory": "Wyczyść historię", "clearHistoryConfirm": "Czy na pewno chcesz wyczyścić całą historię tłumaczeń? Tej operacji nie można cofnąć.", @@ -1050,55 +1080,55 @@ const Map plPL = { "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", + "selectImageSource": "Wybierz źródło obrazu", + "imagePreview": "Podgląd obrazu", + "translationResult": "Wynik tłumaczenia", + "recognitionResult": "Wynik rozpoznania", + "translatedImagePreview": "Podgląd przetłumaczonego obrazu", + "translatedImageLoadFailed": "Nie udało się wczytać przetłumaczonego obrazu", + "pleaseSelectImage": "Wybierz obraz", + "imageLoadFailed": "Wczytanie obrazu nie powiodło się", + "imageQuality": "Jakość obrazu", + "maxSize": "Maksymalny rozmiar", + "close": "Zamknij", + "setImageQuality": "Ustaw jakość obrazu", + "currentQuality": "Bieżąca jakość: @value%", + "setMaxSize": "Ustaw maksymalny rozmiar", + "currentMaxSize": "Bieżące: @pxpx", + "waitingForAction": "Oczekiwanie na działanie", + "pleaseSelectImageToStart": "Wybierz obraz, aby rozpocząć", + "chooseImage": "Wybierz obraz", + "openingCamera": "Otwieranie aparatu...", + "openingPhotoAlbum": "Otwieranie albumu...", + "cancelled": "Anulowano", + "userCancelledSelection": "Użytkownik anulował wybór", + "translatingImage": "Tłumaczenie obrazu", + "callingImageTranslateService": "Wywoływanie usługi tłumaczenia obrazu...", + "savingRecord": "Zapisywanie rekordu", + "savingTranslationResult": "Zapisywanie wyniku tłumaczenia...", + "translationCompleted": "Tłumaczenie zakończone", + "allStepsCompleted": "Wszystkie kroki zakończone", + "processingFailed": "Przetwarzanie nie powiodło się", "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", + "Przetwarzanie obrazu lub tłumaczenie nie powiodło się. Spróbuj ponownie.\nBłąd: {error}", + "imageTooLarge": "Rozmiar obrazu przekracza limit 4 MB", "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", + "Rozmiar obrazu przekracza 4 MB. Zmniejsz jakość lub wymiary i spróbuj ponownie", + "emptyTranslationResult": "API tłumaczenia obrazu zwróciło pusty wynik", "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", + "Tłumaczenie obrazu nie powiodło się. Problem z siecią lub limit. Spróbuj później", "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", + "Wyjątek API tłumaczenia obrazu. Sprawdź sieć i spróbuj ponownie", + "permissionRequired": "Wymagane uprawnienie", + "cameraPermissionRequired": "Wymagane uprawnienie aparatu do robienia zdjęć", "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", + "Wymagane uprawnienie albumu, aby wybierać obrazy", + "translationDetails": "Szczegóły tłumaczenia", + "originalImage": "Oryginalny obraz", + "sourceLanguage": "Język źródłowy", + "targetLanguage": "Język docelowy", + "translationTime": "Czas tłumaczenia", + "shareInDevelopment": "Funkcja udostępniania w trakcie rozwoju", // 翻译模块 - 录音文件 "translateAudioFiles": "Przetłumacz pliki audio", @@ -1199,24 +1229,24 @@ const Map plPL = { 'Usługa konta została zainicjowana', // AccountService 已初始化 // 权限模块 - 'meetingStoragePermission': 'Storage', + 'meetingStoragePermission': 'Pamięć', 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', + 'Potrzebujemy uprawnień do pamięci, aby można było wybrać i przesłać pliki audio.', 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', + 'Wykryto, że trwale odmówiłeś uprawnienia do pamięci. Aby kontynuować, przejdź do ustawień aplikacji i włącz je ręcznie.', 'getPermissionStatusFailed': 'Pobranie stanu uprawnień nie powiodło się', 'communicationPermissions': 'Uprawnienia komunikacyjne', - 'bluetoothPermissions': 'Bluetooth Permissions', - 'notificationPermissions': 'Notification Permissions', - 'storagePermissions': 'Storage Permissions', - 'microphonePermissions': 'Microphone Permissions', - 'alarmPermissions': 'Alarm Permissions', + 'bluetoothPermissions': 'Uprawnienia Bluetooth', + 'notificationPermissions': 'Uprawnienia powiadomień', + 'storagePermissions': 'Uprawnienia pamięci', + 'microphonePermissions': 'Uprawnienia mikrofonu', + 'alarmPermissions': 'Uprawnienia alarmów', 'calendarPermissions': 'Uprawnienia kalendarza', 'locationPermissions': 'Uprawnienia lokalizacji', 'phone': 'Telefon', 'sms': 'SMS', - 'contacts': 'Contacts', - 'notification': 'Notification', + 'contacts': 'Kontakty', + 'notification': 'Powiadomienia', 'alarm': 'Alarm', 'calendarWrite': 'Zapis do kalendarza', 'calendarFullAccess': 'Pełny dostęp do kalendarza', @@ -1224,7 +1254,7 @@ const Map plPL = { 'phonePermissionDesc': 'Używane do funkcji dzwonienia', 'smsPermissionDesc': 'Używane do funkcji wysyłania SMS-ów', 'alarmPermissionDesc': - 'Used to set exact alarms to ensure reminders trigger on time', + 'Używane do ustawiania dokładnych alarmów, aby przypomnienia uruchamiały się na czas', 'calendarWritePermissionDesc': 'Używane do tworzenia wydarzeń i przypomnień w kalendarzu', 'calendarFullAccessPermissionDesc': @@ -1243,86 +1273,90 @@ const Map plPL = { 'Funkcja dzwonienia wymaga uprawnień telefonicznych', 'smsPermissionDetailDesc': 'Funkcja wysyłania SMS-ów wymaga uprawnień SMS', 'alarmPermissionDetailDesc': - 'This permission is required to set exact alarms and ensure reminders trigger on time', + 'To uprawnienie jest wymagane do ustawiania dokładnych alarmów i zapewnienia, że przypomnienia uruchamiają się na czas', 'calendarWritePermissionDetailDesc': 'Tworzenie wydarzeń w kalendarzu wymaga uprawnień do zapisu w kalendarzu', 'calendarFullAccessPermissionDetailDesc': 'Zarządzanie wydarzeniami w kalendarzu wymaga pełnych uprawnień do kalendarza', 'locationPermissionDetailDesc': 'Uzyskiwanie informacji o lokalizacji wymaga uprawnień lokalizacyjnych', - 'contactsPermissionDesc': 'Used for accessing contact information', + 'contactsPermissionDesc': 'Używane do dostępu do informacji o kontaktach', 'contactsPermissionDetailDesc': - 'Phone call and SMS functionality requires contacts permission to select contacts', + 'Funkcje połączeń i SMS wymagają uprawnienia Kontakty do wyboru kontaktów', 'bluetoothPermissionDesc': - 'Used for connecting and managing Bluetooth devices', + 'Używane do łączenia i zarządzania urządzeniami Bluetooth', 'bluetoothPermissionDetailDesc': - 'Connecting to Bluetooth headphones and other devices requires Bluetooth permission', - 'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices', + 'Łączenie z zestawami słuchawkowymi Bluetooth i innymi urządzeniami wymaga uprawnienia Bluetooth', + 'bluetoothScanPermissionDesc': + 'Używane do skanowania pobliskich urządzeń Bluetooth', 'bluetoothScanPermissionDetailDesc': - 'Scanning for nearby Bluetooth devices requires Bluetooth scan permission', - 'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices', + 'Skanowanie pobliskich urządzeń Bluetooth wymaga uprawnienia skanowania Bluetooth', + 'bluetoothConnectPermissionDesc': + 'Używane do łączenia z urządzeniami Bluetooth', 'bluetoothConnectPermissionDetailDesc': - 'Connecting to Bluetooth devices requires Bluetooth connect permission', - 'notificationPermissionDesc': 'Used for sending notification messages', + 'Łączenie z urządzeniami Bluetooth wymaga uprawnienia połączenia Bluetooth', + 'notificationPermissionDesc': 'Używane do wysyłania powiadomień', 'notificationPermissionDetailDesc': - 'App needs notification permission to send you important alerts and messages', + 'Aplikacja potrzebuje uprawnienia powiadomień, aby wysyłać ważne alerty i wiadomości', 'appNeedsPermissionForFullFunction': 'Aplikacja wymaga tego uprawnienia do pełnej funkcjonalności', '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', + 'bluetoothScan': 'Skanowanie Bluetooth', + 'bluetoothConnect': 'Połączenie Bluetooth', 'bluetoothScanExplanation': - 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', + 'Aplikacja potrzebuje uprawnienia skanowania Bluetooth, aby skanować pobliskie urządzenia Bluetooth.', 'bluetoothConnectExplanation': - 'The app needs Bluetooth connect permission to connect to Bluetooth devices.', + 'Aplikacja potrzebuje uprawnienia połączenia Bluetooth, aby łączyć się z urządzeniami Bluetooth.', 'locationForBluetoothExplanation': - 'The app needs location permission to scan Bluetooth devices.', + 'Aplikacja potrzebuje uprawnienia lokalizacji do skanowania urządzeń Bluetooth.', 'bluetoothScanPermanentDenial': - 'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.', + 'Uprawnienie skanowania Bluetooth zostało trwale odrzucone, przejdź do ustawień, aby włączyć je ręcznie.', 'bluetoothConnectPermanentDenial': - 'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.', + 'Uprawnienie połączenia Bluetooth zostało trwale odrzucone, przejdź do ustawień, aby włączyć je ręcznie.', 'locationPermanentDenial': - 'Location permission has been permanently denied, please go to settings to enable it manually.', - 'notificationPermission': 'Notification', - 'locationPermission': 'Location', + 'Uprawnienie lokalizacji zostało trwale odrzucone, przejdź do ustawień, aby włączyć je ręcznie.', + 'notificationPermission': 'Powiadomienia', + 'locationPermission': 'Lokalizacja', 'notificationPermissionExplanation': - 'Notification permission is required to display music playback status.', + 'Uprawnienie powiadomień jest wymagane do wyświetlania statusu odtwarzania muzyki.', 'locationPermissionExplanation': - 'Location permission is required to get current location.', + 'Uprawnienie lokalizacji jest wymagane do pobrania bieżącej lokalizacji.', 'notificationPermissionPermanentDenial': - 'You have permanently denied notification permission, please go to settings to enable it.', + 'Trwale odmówiłeś uprawnienia powiadomień, przejdź do ustawień, aby je włączyć.', 'locationPermissionPermanentDenial': - 'You have permanently denied location permission, please go to settings to enable it.', - 'storagePermission': 'Storage', + 'Trwale odmówiłeś uprawnienia lokalizacji, przejdź do ustawień, aby je włączyć.', + 'storagePermission': 'Pamięć', 'microphonePermissionExplanation': - 'We need microphone permission to record audio content.', + 'Potrzebujemy uprawnienia mikrofonu, aby nagrywać dźwięk.', 'storagePermissionExplanation': - 'We need storage permission so you can select and upload audio files.', + 'Potrzebujemy uprawnienia pamięci, aby można było wybrać i przesłać pliki audio.', 'microphonePermissionPermanentDenial': - 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', + 'Uprawnienie mikrofonu zostało trwale odrzucone. Aby kontynuować, przejdź do ustawień aplikacji i włącz je ręcznie.', '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', + 'Uprawnienie pamięci zostało trwale odrzucone. Aby kontynuować, przejdź do ustawień aplikacji i włącz je ręcznie.', + 'permissionUtilNeed': 'Wymaga ', + 'permissionUtilPermission': ' uprawnienia', + 'permissionUtilRestricted': ' Uprawnienie ograniczone', 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'Ta funkcja jest niedostępna lub ograniczona na tym urządzeniu. Sprawdź ustawienia urządzenia lub ograniczenia systemowe', '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', + '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ę', // 版本更新对话框标题 @@ -1398,27 +1432,27 @@ const Map plPL = { 'bleConnectionFailed': 'Połączenie BLE nie powiodło się', 'deviceAuthorizationFailedCheckCode': 'Autoryzacja urządzenia nie powiodła się, sprawdź kod autoryzacji', - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + 'bluetoothGuideTitle': 'Wymagana ręczna aktywacja Bluetooth', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'Wykonaj następujące kroki:', // 请按照以下步骤操作: 'bluetoothGuideStep1': - 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'Włącz Bluetooth: Ustawienia → Bluetooth → Włącz', // 开启蓝牙:设置 → 蓝牙 → 开启 'bluetoothGuideStep2': - 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'Połącz urządzenie: znajdź urządzenie w „Moje urządzenia” i stuknij, aby połączyć', // 连接设备:在"我的设备"中找到您的设备并点击连接 'bluetoothGuideStep3': - 'Return to app to continue pairing process', // 返回应用继续配对流程 + 'Wróć do aplikacji, aby kontynuować parowanie', // 返回应用继续配对流程 'bluetoothGuideTip': - 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': 'I Know', // 我知道了 + 'Wskazówka: możesz też przytrzymać ikonę Bluetooth w Centrum sterowania, aby szybko otworzyć ustawienia Bluetooth', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + 'iKnow': 'Rozumiem', // 我知道了 // 配对模块 - 绑定奖励 - "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:", + "firstBindRewardTitle": "Nagroda powitalna", + "firstBindRewardDesc": "Otrzymałeś(-aś) nagrody za powiązanie.", + "vipLevelLabel": "Poziom VIP:", + "expiryLabel": "Data wygaśnięcia:", + "notActivated": "Nieaktywne", + "aiChatCreditsLabel": "Kredyty AI Chat:", + "translationCreditsLabel": "Kredyty tłumaczeń:", + "meetingCreditsLabel": "Kredyty spotkań:", "ok": "OK", // 用户反馈模块 @@ -1449,13 +1483,14 @@ const Map plPL = { "connectionFailed": "Połączenie nie powiodło się", "retryConnection": "Spróbuj połączyć ponownie", "ota_updateNow": "Zaktualizuj teraz", - "otaVersionInfoFailed": "Failed to get version info. Please try again later.", + "otaVersionInfoFailed": + "Nie udało się pobrać informacji o wersji. Spróbuj ponownie później.", "otaDeviceInfoUnavailable": - "Unable to get device info. Please check the connection and retry.", + "Nie można pobrać informacji o urządzeniu. Sprawdź połączenie i spróbuj ponownie.", "otaProductInfoUnavailable": - "Unable to identify the device. Please reconnect and retry.", + "Nie można zidentyfikować urządzenia. Połącz ponownie i spróbuj ponownie.", "otaFirmwareVersionInvalid": - "Firmware version is abnormal. Please reconnect and retry.", + "Wersja firmware jest nieprawidłowa. Połącz ponownie i spróbuj ponownie.", "keepConnectedDontClose": "Utrzymuj urządzenie w stanie połączenia, nie zamykaj aplikacji", "doNotDisconnect": "Nie odłączaj", @@ -1469,7 +1504,8 @@ const Map plPL = { 'otaConfirmUpdateNow': 'Zaktualizować teraz?', 'otaUpdate': 'Aktualizuj', 'otaUpgradeSuccess': 'Aktualizacja zakończona sukcesem', - 'otaUpgradeCompleteRepair': 'Aktualizacja firmware zakończona!\n\nUrządzenie wymaga ponownego sparowania, aby działać poprawnie. Przejść do strony parowania?', + 'otaUpgradeCompleteRepair': + 'Aktualizacja firmware zakończona!\n\nUrządzenie wymaga ponownego sparowania, aby działać poprawnie. Przejść do strony parowania?', 'otaPairLater': 'Sparuj później', 'otaPairNow': 'Sparuj teraz', 'okConfirm': 'OK', @@ -1477,24 +1513,34 @@ const Map plPL = { // OTA升级模块 - 设备检查 'otaBleCheckErrorWithError': 'Błąd sprawdzania połączenia BLE: @error', 'otaBleNotConnected': 'Urządzenie BLE niepodłączone', - 'otaBleNeedConnection': 'Aktualizacja firmware wymaga połączenia BLE\nUpewnij się, że urządzenie jest prawidłowo podłączone i spróbuj ponownie', + 'otaBleNeedConnection': + 'Aktualizacja firmware wymaga połączenia BLE\nUpewnij się, że urządzenie jest prawidłowo podłączone i spróbuj ponownie', 'otaDeviceInfoUnavailableTitle': 'Informacje o urządzeniu niedostępne', - 'otaCannotGetDeviceInfo': 'Nie można uzyskać informacji o urządzeniu\nPodłącz ponownie urządzenie lub spróbuj później', + 'otaCannotGetDeviceInfo': + 'Nie można uzyskać informacji o urządzeniu\nPodłącz ponownie urządzenie lub spróbuj później', 'otaBleCheckFailed': 'Sprawdzanie połączenia BLE nie powiodło się', - 'otaCannotGetDeviceInfoCheckConnection': 'Nie można uzyskać informacji o urządzeniu, sprawdź połączenie', - 'otaCannotGetProductInfoWithName': 'Nie można uzyskać informacji o produkcie, nazwa urządzenia: @deviceName', - 'otaCannotGetBatteryInfo': 'Nie można uzyskać prawidłowych informacji o baterii', + 'otaCannotGetDeviceInfoCheckConnection': + 'Nie można uzyskać informacji o urządzeniu, sprawdź połączenie', + 'otaCannotGetProductInfoWithName': + 'Nie można uzyskać informacji o produkcie, nazwa urządzenia: @deviceName', + 'otaCannotGetBatteryInfo': + 'Nie można uzyskać prawidłowych informacji o baterii', 'otaLowBattery': 'Niski poziom baterii', - 'otaSingleBatteryLow': 'Poziom baterii urządzenia zbyt niski do aktualizacji firmware\nWymaganie: bateria musi być powyżej 20%\nAktualnie: @ear @battery%\nNaładuj i spróbuj ponownie', - 'otaDoubleBatteryLow': 'Poziom baterii urządzenia zbyt niski do aktualizacji firmware\nWymaganie: obie słuchawki muszą mieć powyżej 20%\nAktualnie: Lewa @left%, Prawa @right%\nNaładuj i spróbuj ponownie', + 'otaSingleBatteryLow': + 'Poziom baterii urządzenia zbyt niski do aktualizacji firmware\nWymaganie: bateria musi być powyżej 20%\nAktualnie: @ear @battery%\nNaładuj i spróbuj ponownie', + 'otaDoubleBatteryLow': + 'Poziom baterii urządzenia zbyt niski do aktualizacji firmware\nWymaganie: obie słuchawki muszą mieć powyżej 20%\nAktualnie: Lewa @left%, Prawa @right%\nNaładuj i spróbuj ponownie', 'otaBatteryCheckFailed': 'Sprawdzanie baterii nie powiodło się', // OTA升级模块 - 升级状态 - 'otaDefaultUpdateDesc': 'Ta aktualizacja zawiera optymalizacje wydajności i poprawki błędów.', - 'otaGetLatestVersionFailed': 'Nie udało się pobrać informacji o najnowszej wersji', + 'otaDefaultUpdateDesc': + 'Ta aktualizacja zawiera optymalizacje wydajności i poprawki błędów.', + 'otaGetLatestVersionFailed': + 'Nie udało się pobrać informacji o najnowszej wersji', 'otaGetVersionInfoFailed': 'Nie udało się pobrać informacji o wersji', 'otaCheckingDeviceStatus': 'Sprawdzanie stanu urządzenia...', - 'otaDownloadFailedCheckNetwork': 'Pobieranie nie powiodło się, sprawdź połączenie sieciowe', + 'otaDownloadFailedCheckNetwork': + 'Pobieranie nie powiodło się, sprawdź połączenie sieciowe', 'otaDownloadFailed': 'Pobieranie nie powiodło się', 'otaPreparingConnection': 'Przygotowywanie połączenia z urządzeniem...', 'otaConnectingDevice': 'Łączenie z urządzeniem...', @@ -1503,7 +1549,8 @@ const Map plPL = { 'otaUpgradeSuccessComplete': 'Aktualizacja zakończona pomyślnie', 'otaUpgradeFailedWithCode': 'Aktualizacja nie powiodła się, kod błędu: @code', 'otaUpgradeFailedTitle': 'Aktualizacja nie powiodła się', - 'otaUpgradeFailedDesc': 'Sprawdź połączenie urządzenia lub pakiet aktualizacji, kod błędu: @code', + 'otaUpgradeFailedDesc': + 'Sprawdź połączenie urządzenia lub pakiet aktualizacji, kod błędu: @code', 'otaDeviceDisconnected': 'Urządzenie rozłączone', 'otaDeviceConnected': 'Urządzenie podłączone', diff --git a/lib/core/translations/language/pt_pt.dart b/lib/core/translations/language/pt_pt.dart index d08485b2f..f1e2e9bfd 100644 --- a/lib/core/translations/language/pt_pt.dart +++ b/lib/core/translations/language/pt_pt.dart @@ -1,3 +1,4 @@ +// 葡萄牙-葡萄牙语 const Map ptPT = { // 通用 'continue': 'Continuar', @@ -18,11 +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", + "justNow": "Agora", + "minutesAgo": "@minutes minutos atrás", + "yesterday": "Ontem", + "daysAgo": "@days dias atrás", + "hoursAgo": "@hours horas atrás", // 启动页 "slogan": "Conectando o mundo, para além do som", @@ -222,55 +223,55 @@ const Map ptPT = { "scene": "Cenário", // 用量统计模块 - "aiChat": "AI Chat", - "translationStats": "Translation Statistics", - "meetingStats": "Meeting Statistics", - "today": "Today", - "thisWeek": "This Week", - "thisMonth": "This Month", - "history": "History", - "currentSessionStats": "Current Session Stats", - "translationCount": "Translation Count", - "sessionDuration": "Session Duration", - "characters": "Characters", - "recordingDuration": "Recording Duration", - "totalApiCalls": "Total API Calls", - "sessionCount": "Session Count", - "totalCharacters": "Total Characters", - "apiCallStats": "API Call Stats", - "translationApi": "Translation API", + "aiChat": "Chat de IA", + "translationStats": "Estatísticas de Tradução", + "meetingStats": "Estatísticas de Reuniões", + "today": "Hoje", + "thisWeek": "Esta semana", + "thisMonth": "Este mês", + "history": "Histórico", + "currentSessionStats": "Estatísticas da sessão atual", + "translationCount": "Número de traduções", + "sessionDuration": "Duração da sessão", + "characters": "Caracteres", + "recordingDuration": "Duração da gravação", + "totalApiCalls": "Total de chamadas à API", + "sessionCount": "Número de sessões", + "totalCharacters": "Total de caracteres", + "apiCallStats": "Estatísticas de chamadas à API", + "translationApi": "API de tradução", "asr": "ASR", "tts": "TTS", - "dataVolumeStats": "Data Volume Stats", - "sourceTextCharacters": "Source Text Characters", - "ttsTextCharacters": "TTS Text Characters", - "effectiveAudioDuration": "Effective Audio Duration", - "totalSessionDuration": "Total Session Duration", - "costStats": "Cost Stats", - "estimatedCost": "Estimated Cost", - "dailyCostThreshold": "Daily Cost Threshold", - "monthlyCostThreshold": "Monthly Cost Threshold", - "usageBehaviorStats": "Usage Behavior Stats", - "mostUsedLanguagePair": "Most-used language pair", - "mostUsedMode": "Most-used mode", - "asrApiCalls": "ASR Calls", - "totalAudioDuration": "Total Audio Duration", - "audioFileSize": "Audio File Size", - "transcriptBytes": "Transcript Bytes", - "loadFailed": "Load Failed", + "dataVolumeStats": "Estatísticas de volume de dados", + "sourceTextCharacters": "Caracteres do texto de origem", + "ttsTextCharacters": "Caracteres do texto TTS", + "effectiveAudioDuration": "Duração efetiva do áudio", + "totalSessionDuration": "Duração total da sessão", + "costStats": "Estatísticas de custo", + "estimatedCost": "Custo estimado", + "dailyCostThreshold": "Limite diário de custo", + "monthlyCostThreshold": "Limite mensal de custo", + "usageBehaviorStats": "Estatísticas de comportamento de uso", + "mostUsedLanguagePair": "Par de idiomas mais usado", + "mostUsedMode": "Modo mais usado", + "asrApiCalls": "Chamadas ASR", + "totalAudioDuration": "Duração total do áudio", + "audioFileSize": "Tamanho do ficheiro de áudio", + "transcriptBytes": "Bytes da transcrição", + "loadFailed": "Falha ao carregar", "statsLoadFailedTryLater": - "Statistics failed to load. Please try again later.", + "Falha ao carregar estatísticas. Tente novamente mais tarde.", "cleanupComplete": "Cleanup Complete", "cleanedOldData": "Cleaned data older than 90 days", "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", // 商品模块 - 通用 - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', + 'availablePackages': 'Pacotes disponíveis', + 'remainingQuota': 'Quota restante', + 'totalQuota': 'Quota total', + 'remaining': 'Restante', + 'featureDescription': 'Descrição da funcionalidade', 'paymentSuccess': 'Pagamento bem-sucedido', 'paymentFailed': 'Pagamento falhou', 'gotIt': 'Entendido', @@ -330,12 +331,12 @@ const Map ptPT = { 'alipayPaymentLaunchFailed': 'Falha ao iniciar o Alipay', 'cannotLaunchAlipayPayment': 'Não é possível iniciar o Alipay', 'alipayPaymentException': 'Exceção do Alipay', - "insufficientIntegral": "Insufficient integral", + "insufficientIntegral": "Pontos insuficientes", "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', + 'Saldo insuficiente. Vá à página de recarga correspondente para recarregar.', + "recharge": 'Ir para recarregar', "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + 'A subscrição de IA expirou. Vá à página de recarga da subscrição para renovar.', // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', @@ -363,7 +364,7 @@ const Map ptPT = { 'templatedMessagesAndScheduleReminders': 'Template messages and schedule reminders', 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', + 'As funcionalidades dependem das permissões do dispositivo, da disponibilidade do serviço e das condições de rede.', // 商品模块 - 翻译商品页 'realtimeTranscription': 'Real-time Transcription', @@ -386,7 +387,7 @@ const Map ptPT = { 'O desempenho da tradução depende do microfone, da latência da rede e do ruído ambiente.', // 商品模块 - 会议商品页 - 'meetingRecording': 'Meeting Recording', + 'meetingRecording': 'Gravação de reuniões', 'transcriptionAndSummary': 'Transcription & Summary', 'keywordSearch': 'Keyword Search', 'collaborationSharing': 'Collaboration & Sharing', @@ -394,7 +395,7 @@ const Map ptPT = { 'Audio recording, transcription, keyword search, and auto summary.', 'meetingHeaderDesc2': 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingAutoRecording': 'Gravação automática e segmentação', 'meetingSpeakerTagging': 'Speaker labeling', 'meetingLongAudioTranscription': 'Long audio transcription', 'meetingKeyPointSummary': 'Key point extraction', @@ -403,7 +404,7 @@ const Map ptPT = { 'meetingExportSummary': 'Export minutes', 'meetingMultiPlatformShare': 'Share across platforms', 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', + 'Use em ambientes silenciosos; o desempenho depende do microfone e da rede.', // 商品模块 - VIP会员页 'benefitsOverview': 'Visão geral de benefícios', @@ -431,12 +432,15 @@ const Map ptPT = { '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.', + 'ai_001_desc': + 'Inclui 100 utilizações. Aceda às funcionalidades principais de IA.', + 'ai_002_desc': + 'Inclui 500 utilizações. Aceda às funcionalidades principais de IA.', + 'ai_003_desc': + 'Inclui 1000 utilizações. Aceda às funcionalidades principais de IA.', + 'meet_001_desc': 'Inclui 100 gravações/transcrições de reuniões.', + 'meet_002_desc': 'Inclui 500 gravações/transcrições de reuniões.', + 'meet_003_desc': 'Inclui 1000 gravações/transcrições de reuniões.', '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).', @@ -448,14 +452,15 @@ const Map ptPT = { // 新手引导 'skip': "Saltar", - 'next': 'Next', - 'sayLilyHint': "Say \"Lily Lily\" to the mic", - 'imHere': "I’m here~", - 'guideWelcomeWakeAI': "Welcome to Voitrans! First, wake your AI “Lily”.", - 'aiReplyCompleted': "Lily has finished the reply!", - 'aiThinking': "Lily is thinking…", - 'guideAwakenSuccess': "Great! Lily is awake—ask it to help.", - 'confirmInput': "Confirm Input", + 'next': 'Seguinte', + 'sayLilyHint': "Diga \"Lily Lily\" ao microfone", + 'imHere': "Estou aqui~", + 'guideWelcomeWakeAI': + "Bem-vindo ao Voitrans! Primeiro, acorde a sua IA “Lily”.", + 'aiReplyCompleted': "A Lily terminou a resposta!", + 'aiThinking': "A Lily está a pensar…", + 'guideAwakenSuccess': "Ótimo! A Lily está acordada — peça ajuda.", + 'confirmInput': "Confirmar entrada", 'guideClickSendPrefix': "Tap send, ", 'guideWeatherStart': "Tell Lily: “What’s the weather today?”", 'guideWeatherInput': "What’s the weather today?", @@ -495,37 +500,38 @@ const Map ptPT = { 'recordingDetails': 'Detalhes da Gravação', 'aiSummary': 'Resumo IA', 'meetingTranscript': 'Transcrição da Reunião', - 'files': 'Files', - 'mine': 'Mine', - 'connect': 'Connect', - 'allFiles': 'All Files', - 'searchInAllFiles': 'Search in all files', - 'from': 'From', - 'sortBy': 'Sort by', - 'creationTime': 'Creation Time', - 'bluetoothConnection': 'Bluetooth Connection', - 'meetingReconnect': 'Reconnect', - 'searching': 'Searching...', - 'searchFailed': 'Search failed, please check if Bluetooth is enabled', - 'aiPenNotFound': 'AI PEN device not found', - 'connectedToAiPen': 'Connected to AI PEN device', - 'checkingNewFiles': 'Checking for new files to import', + 'files': 'Ficheiros', + 'mine': 'Meu', + 'connect': 'Ligar', + 'allFiles': 'Todos os ficheiros', + 'searchInAllFiles': 'Pesquisar em todos os ficheiros', + 'from': 'De', + 'sortBy': 'Ordenar por', + 'creationTime': 'Hora de criação', + 'bluetoothConnection': 'Ligação Bluetooth', + 'meetingReconnect': 'Reconectar', + 'searching': 'A pesquisar...', + 'searchFailed': 'A pesquisa falhou. Verifique se o Bluetooth está ativado', + 'aiPenNotFound': 'Dispositivo AI PEN não encontrado', + 'connectedToAiPen': 'Ligado ao dispositivo AI PEN', + 'checkingNewFiles': 'A verificar novos ficheiros para importar', 'startingWifi': 'Starting Wi-Fi...', 'newFilesDetected': 'New files detected, preparing to import', 'noNewFiles': 'No new files to import', - 'connectingWifi': 'Connecting to Wi-Fi...', - 'wifiConnected': 'Wi-Fi connected successfully', - 'downloadingFiles': 'Downloading files...', - 'downloadingFileProgress': 'Total {total} files, downloading file {current}', - 'downloadComplete': 'Download complete', + 'connectingWifi': 'A ligar ao Wi‑Fi...', + 'wifiConnected': 'Wi‑Fi ligado com sucesso', + 'downloadingFiles': 'A transferir ficheiros...', + 'downloadingFileProgress': + 'Total de {total} ficheiros, a transferir o ficheiro {current}', + 'downloadComplete': 'Transferência concluída', 'downloadCompleteInfo': - 'Download complete, {count} files in total, returning automatically in 2 seconds', + 'Transferência concluída, {count} ficheiros no total. Voltará automaticamente em 2 segundos', // Meeting模块 - 录音功能 - 'startRecording': 'Start Recording', - 'liveRecording': 'Live Recording', - 'audioVideoRecording': 'Audio/Video Recording', - 'callRecording': 'Call Recording', + 'startRecording': 'Iniciar gravação', + 'liveRecording': 'Gravação ao vivo', + 'audioVideoRecording': 'Gravação de áudio/vídeo', + 'callRecording': 'Gravação de chamadas', 'importAudio': 'Import Audio', 'meetingRecordExitTitle': 'Sair da gravação', // 退出录音 'meetingRecordExitMessage': 'Escolha o que fazer antes de sair', // 请选择离开后的操作 @@ -549,30 +555,30 @@ const Map ptPT = { 'Para mostrar a barra flutuante de gravação (temporizador/pausa/retomar) durante a gravação, precisamos da permissão de sobreposição.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'overlayPermissionOpenSettingsFailed': 'Não foi possível abrir automaticamente as definições do sistema. Abra as Definições e ative manualmente a permissão de sobreposição.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'transcribing': 'A transcrever...', + 'summarizing': 'A resumir...', + 'analyzing': 'A analisar...', + 'summaryComplete': 'Resumo concluído', + 'generate': 'Gerar', + 'overview': 'Visão geral', + 'transcription': 'Transcrição', + 'summary': 'Resumo', + 'mindMap': 'Mapa mental', + 'editSpeaker': 'Editar', + 'nameSpeaker': 'Nome do orador', // Meeting模块 - 转写与总结 - 'reSummarize': 'Re-summarize', - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'reSummarize': 'Resumir novamente', + 'dateAndTime': 'Data e hora', + 'location': 'Local', + 'attendees': 'Participantes', + 'inputLocation': 'Introduzir local', + 'inputAttendees': 'Introduzir participantes', // Meeting模块 - 模版与生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', + 'selectSummaryTemplate': 'Selecionar modelo de resumo', + 'useThisTemplate': 'Usar este modelo', + 'lastUsed': 'Último usado', 'create': 'Criar', 'templateDetails': 'Detalhes do modelo', 'tag': 'Etiqueta', @@ -589,110 +595,112 @@ const Map ptPT = { '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.', + 'viewAll': 'Ver tudo', + 'recordingLanguage': 'Idioma de gravação', + 'chineseSimplified': 'Chinês mandarim (simplificado)', + 'meetingGenerateNow': 'Gerar agora', + 'keyEventsAnalyzed': '{count} eventos-chave analisados.', 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + 'A análise de IA identifica eventos-chave nas gravações, permitindo-lhe selecionar eventos importantes para a geração por IA.', // 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}', + 'importing': 'A importar...', + 'batchImporting': 'Importação em lote...', + 'importingLocalRecordings': 'A importar gravações locais...', + 'importFailed': 'Falha ao importar ficheiro: {filePath}, erro: {error}', + 'importSuccess': '{count} gravações locais importadas com sucesso', + 'importError': 'Falha na importação: {error}', + 'pleaseSelectAudioFile': 'Selecione um ficheiro de áudio', + 'shareAudio': 'Partilhar áudio da reunião', + 'shareComplete': 'Partilha concluída!', + 'shareFailed': 'Falha ao partilhar: {error}', + 'fileProcessingFailed': + 'Falha ao processar ficheiro: {filePath}, erro: {error}', // Meeting模块 - 思维导图 'saveMindMap': 'Guardar mapa mental', - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', + 'shareMindMap': 'Partilhar mapa mental', + 'shareSuccess': 'Partilha bem-sucedida', // 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', + 'askAI': 'Perguntar à IA...', + 'askAIPrompt': 'Como posso ajudar hoje?', + 'continueAsk': 'Continuar a perguntar', + 'todoList': 'Lista de tarefas', + 'extractConclusion': 'Extrair conclusão', + 'generateKeyIndicators': 'Gerar indicadores-chave', // 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...', + 'shareLink': 'Partilhar link', + 'copyTranscript': 'Copiar transcrição', + 'copySummary': 'Copiar resumo', + 'exportAudio': 'Exportar áudio', + 'exportTranscript': 'Exportar transcrição', + 'shareMeetingAudio': 'Partilhar áudio da reunião', + 'exportSummary': 'Exportar resumo', + 'exportAs': 'Exportar como', + 'exportingPDF': 'A exportar 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', + 'nameCurrentSpeaker': 'Nomear orador atual', + 'recentlyUsedNames': 'Nomes usados recentemente', + 'applyToCurrentParagraph': 'Aplicar ao parágrafo atual', + 'totalTime': 'Tempo total', 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', + 'Os oradores do resumo serão atualizados automaticamente', // Meeting模块 - 云端同步 - 'syncToCloud': 'Sync to Cloud', + 'syncToCloud': 'Sincronizar com a nuvem', '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', + 'Sincronize automaticamente as suas gravações com a nuvem; pode reproduzir, gerir e partilhar gravações através de qualquer VOITRANS APP ou VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sincronizar para a app VOITRANS', + 'transcriptionRecord': 'Registo de transcrição', // Meeting模块 - 我的页面 - 'transcriptionRecords': 'Transcription Records', - 'templateCommunity': 'Template Community', - 'comingSoon': 'Coming Soon', - 'integration': 'Integration', + 'transcriptionRecords': 'Registos de transcrição', + 'templateCommunity': 'Comunidade de modelos', + 'comingSoon': 'Em breve', + 'integration': 'Integração', 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', - 'enabled': 'Enabled', - 'disabled': 'Disabled', - 'myVoitransDevice': 'My VOITRANS Device', - 'helpAndFeedback': 'Help & Feedback', - 'aboutVoitrans': 'About VOITRANS', - 'meetingDays': 'Days', - 'meetingHours': 'Hours', + 'enabled': 'Ativado', + 'disabled': 'Desativado', + 'myVoitransDevice': 'O meu dispositivo VOITRANS', + 'helpAndFeedback': 'Ajuda e feedback', + 'aboutVoitrans': 'Sobre o VOITRANS', + 'meetingDays': 'Dias', + 'meetingHours': 'Horas', 'voitransAiMember': 'Voitrans AI Member', 'unlockStarterMember': 'Unlock Starter Member', - 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', - 'unlockNow': 'Unlock Now', + 'bindDeviceToActivate': + 'Vincular dispositivo Voitrans para ativar a subscrição Starter', + 'unlockNow': 'Desbloquear agora', // Meeting模块 - 会员与升级 - 'comparison': 'Comparison', - 'detailedInfo': 'Detailed Information', - 'monthlyTranscriptionTime': 'Monthly Transcription Time', + 'comparison': 'Comparação', + 'detailedInfo': 'Informações detalhadas', + 'monthlyTranscriptionTime': 'Tempo mensal de transcrição', 'unlimited': 'Unlimited', - 'professionalTemplates': 'Professional Templates', + 'professionalTemplates': 'Modelos profissionais', 'limited': 'Limited', - 'fullTemplates': 'Full Templates', - 'professionalTerms': 'Professional Terms', - 'customTemplates': 'Custom Templates', - 'visualMindMap': 'Visual Mind Map', - 'speakerIdentification': 'Speaker Identification', - 'aiVoiceEnhancement': 'AI Voice Enhancement', - 'audioImport': 'Audio Import', - 'multipleExportFormats': 'Multiple Export Formats', - 'professionalSummaryTemplates': 'Professional Summary Templates', + 'fullTemplates': 'Modelos completos', + 'professionalTerms': 'Termos profissionais', + 'customTemplates': 'Modelos personalizados', + 'visualMindMap': 'Mapa mental visual', + 'speakerIdentification': 'Identificação de oradores', + 'aiVoiceEnhancement': 'Melhoria de voz com IA', + 'audioImport': 'Importação de áudio', + 'multipleExportFormats': 'Vários formatos de exportação', + 'professionalSummaryTemplates': 'Modelos profissionais de resumo', 'professionalTemplateDesc': - 'Professional template design to improve your work efficiency. Customized according to industry needs.', + 'Design profissional de modelos para melhorar a sua eficiência no trabalho. Personalizado conforme as necessidades do setor.', 'customTemplateDesc': - 'You can customize summary prompts according to your needs and use them to generate the required summaries.', + 'Pode personalizar os prompts de resumo conforme as suas necessidades e utilizá-los para gerar os resumos pretendidos.', 'askAiDesc': - 'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.', + 'Extraia informações mais profundas das gravações de forma inteligente e gere tabelas de dados, conclusões-chave, listas de tarefas, e-mails de relatório e outros conteúdos formatados com um clique.', 'visualMindMapDesc': 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', 'templateCommunityDesc': @@ -700,16 +708,16 @@ const Map ptPT = { 'speakerIdentificationDesc': 'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.', 'privateCloudSyncDesc': - 'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.', + 'As suas gravações e transcrições serão armazenadas com segurança em servidores dedicados na nuvem, com encriptação total durante o upload e o download para garantir privacidade e segurança.', '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.', - 'upgradeMembership': 'Upgrade Your Membership', - 'yearlySubscription': 'Yearly Subscription', - 'monthlySubscription': 'Monthly Subscription', + 'Exporte as suas gravações de áudio, texto de transcrição e resumos em vários formatos (TXT, PDF, JPEG) conforme necessário.', + 'upgradeMembership': 'Atualize a sua subscrição', + 'yearlySubscription': 'Subscrição anual', + 'monthlySubscription': 'Subscrição mensal', 'proMonthly': 'Pro ¥60/month', 'proMonthlyDesc': '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', @@ -732,17 +740,17 @@ const Map ptPT = { 'oneHundredTwentyMinutes': '120 minutes', 'validityPeriod': '*Validity Period: ', 'validityNote': - 'Activated immediately after purchase, valid for 2 years after activation.', - 'purchase': 'Purchase', + 'Ativado imediatamente após a compra, válido por 2 anos após a ativação.', + 'purchase': 'Comprar', // Meeting模块 - 录音语言 - 'recordLanguage': 'Recording Language', + 'recordLanguage': 'Idioma de gravação', 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', + 'sichuan': 'Dialeto de Sichuan', + 'shanghai': 'Dialeto de Xangai', // Meeting模块 - 错误提示 - 'meetingUnknownLanguage': 'Unknown Language', + 'meetingUnknownLanguage': 'Idioma desconhecido', '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', @@ -763,10 +771,10 @@ const Map ptPT = { "translationRecharge": "Recarga de Tradução", "meetingAssistantRecharge": "Recarga do Assistente de Reunião", "cloudSync": "Recarga de Sincronização em Nuvem", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "memberService": "Serviço de membro", + "bindRewardTitle": "Recompensas", "bindRewardSimpleDesc": - "First bind device reward has been issued. Tap OK to close.", + "A recompensa pela primeira vinculação do dispositivo foi emitida. Toque em OK para fechar.", "joinDevice": "Dispositivo conectado:", "accountId": "ID da Conta:", "systemSetting": "Definição do Sistema", @@ -818,20 +826,20 @@ const Map ptPT = { "loading": "A carregar...", // 设备管理模块 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", - "deviceTypeSmartEye": "Smart Glasses", + "deviceTypeUnknown": "Dispositivo desconhecido", + "deviceTypeClassicBluetoothHeadset": "Auriculares Bluetooth clássicos", + "deviceTypeBleBluetoothHeadset": "Auriculares Bluetooth BLE", + "deviceTypeSmartVoiceRecorder": "Gravador de voz inteligente", + "deviceTypeSmartEye": "Óculos inteligentes", "unbind": "Desvincular", - "noDevicesBound": "No devices bound yet", - "pleaseBindDeviceFirst": "Please bind a device first to manage", - "noMacAddress": "No MAC Address", - "licenseCode": "License Code", - "confirmUnbind": "Confirm Unbind", + "noDevicesBound": "Ainda não há dispositivos vinculados", + "pleaseBindDeviceFirst": "Vincule primeiro um dispositivo para gerir", + "noMacAddress": "Sem endereço MAC", + "licenseCode": "Código de licença", + "confirmUnbind": "Confirmar desvinculação", "confirmUnbindMessage": - "Are you sure you want to unbind device \"{deviceName}\"?", - "confirmUnbindAction": "Confirm Unbind", + "Tem a certeza de que pretende desvincular o dispositivo \"{deviceName}\"?", + "confirmUnbindAction": "Confirmar desvinculação", // Agent模块 - 主界面 "Lily": "Lily", @@ -862,22 +870,22 @@ const Map ptPT = { "loadMoreMessages": "Carregar mais mensagens...", "loadFailedClickRetry": "Falha ao carregar, clique para tentar novamente", "swipeUpForMore": "Deslize para cima para ver mais", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 + "callingTool": "Estou a ajudá-lo(a), aguarde!", // 正在帮您,请稍等! + "voice_interrupt": "Interromper", // 语音打断 '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", // 今日天气 - "presetNews": "Today's news", // 今日新闻 - "presetFood": "Nearby food", // 美食 - "playSomeMusic": "Play some popular music", // 播放一些流行音乐 - "navigationTo": "Please help me navigate to", // 导航到 - "todayWeather": "How's the weather today?", // 今日天气 - "todayNews": "What's the news today?", // 今日新闻 - "nearbyFood": "What delicious food is nearby?", // 美食 + "presetMusic": "Tocar música", // 来点音乐 + "presetNavigation": "Navegar para", // 导航 + "presetWeather": "Tempo hoje", // 今日天气 + "presetNews": "Notícias hoje", // 今日新闻 + "presetFood": "Comida perto", // 美食 + "playSomeMusic": "Tocar música popular", // 播放一些流行音乐 + "navigationTo": "Navegar para", // 导航到 + "todayWeather": "Como está o tempo hoje?", // 今日天气 + "todayNews": "Quais são as notícias hoje?", // 今日新闻 + "nearbyFood": "Onde há boa comida por aqui?", // 附近有什么好吃的 // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Olá! Eu sou a **Lily**, posso ajudá-lo(a) a:\n\n' @@ -1025,8 +1033,8 @@ const Map ptPT = { "strongWind": "Vento Forte", // 翻译模块 - 中间层 - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", + "pictureTranslation": "Tradução de imagens", + "textTranslation": "Tradução de texto", // 翻译模块 - 主页 "translationHistory": "Histórico de Traduções", @@ -1036,14 +1044,14 @@ const Map ptPT = { "phoneUser": "Utilizador de Telemóvel", "selectSourceLanguage": "Selecionar idioma de origem", "selectTargetLanguage": "Selecionar idioma de destino", - "me": "Me", - "counterPart": "Counterpart", + "me": "Eu", + "counterPart": "Interlocutor", "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - "autoDetect": "Auto Detect", // 自动检测 + "Certifique-se de que os auriculares Bluetooth estão ligados ao telemóvel e em estado de chamada", + "autoDetect": "Deteção automática", // 自动检测 // 翻译模块 - 文本翻译 - "languageDetectionFailed": "Language detection failed", + "languageDetectionFailed": "Falha ao detetar idioma", // 翻译模块 - 悬浮窗与权限 'disableFloatingWindow': 'Desativar janela flutuante', @@ -1053,17 +1061,17 @@ const Map ptPT = { 'Permissao de microfone necessaria para gravacao', 'deleteTranslationRecordError': 'Erro ao excluir registro de traducao: @error', - "translationFailed": "Translation failed", + "translationFailed": "Falha na tradução", "translating": "A traduzir", "translate": "Traduzir", - "pleaseInputText": "Please input text", + "pleaseInputText": "Introduza o texto", "inputTextToTranslate": "Introduza o texto a traduzir", - "textTooLong": "Text too long, max 5000 characters", + "textTooLong": "Texto demasiado longo, máximo de 5000 caracteres", // 翻译模块 - 历史记录 "noTranslationHistory": "Ainda não há histórico", - "historyRecords": "History Records", - "clearResults": "Clear Results", + "historyRecords": "Registos do histórico", + "clearResults": "Limpar resultados", "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.", @@ -1073,54 +1081,57 @@ const Map ptPT = { "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", + "selectImageSource": "Selecionar origem da imagem", + "imagePreview": "Pré-visualização da imagem", + "translationResult": "Resultado da tradução", + "recognitionResult": "Resultado do reconhecimento", + "translatedImagePreview": "Pré-visualização da imagem traduzida", + "translatedImageLoadFailed": "Falha ao carregar a imagem traduzida", + "pleaseSelectImage": "Selecione uma imagem", + "imageLoadFailed": "Falha ao carregar a imagem", + "imageQuality": "Qualidade da imagem", + "maxSize": "Tamanho máximo", + "close": "Fechar", + "setImageQuality": "Definir qualidade da imagem", + "currentQuality": "Qualidade atual: @value%", + "setMaxSize": "Definir tamanho máximo", "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", + "waitingForAction": "A aguardar ação", + "pleaseSelectImageToStart": "Selecione uma imagem para começar", + "chooseImage": "Escolher imagem", + "openingCamera": "A abrir câmara...", + "openingPhotoAlbum": "A abrir álbum de fotos...", + "cancelled": "Cancelado", + "userCancelledSelection": "O utilizador cancelou a seleção", + "translatingImage": "A traduzir imagem", + "callingImageTranslateService": + "A chamar o serviço de tradução de imagens...", + "savingRecord": "A guardar registo", + "savingTranslationResult": "A guardar o resultado da tradução...", + "translationCompleted": "Tradução concluída", + "allStepsCompleted": "Todos os passos concluídos", + "processingFailed": "Falha no processamento", "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", + "Falha no processamento ou na tradução da imagem. Tente novamente.\nErro: {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", + "emptyTranslationResult": + "A API de tradução de imagens devolveu um resultado vazio", "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", + "A tradução de imagens falhou. Problema de rede ou limite de pedidos. Tente mais tarde", "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", + "Exceção na API de tradução de imagens. Verifique a rede e tente novamente", + "permissionRequired": "Permissão necessária", + "cameraPermissionRequired": + "É necessária permissão de câmara para tirar fotos", "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", + "É necessária permissão de álbum de fotos para selecionar imagens", + "translationDetails": "Detalhes da tradução", "originalImage": "Original Image", "sourceLanguage": "Source Language", "targetLanguage": "Target Language", - "translationTime": "Translation Time", + "translationTime": "Tempo de tradução", "shareInDevelopment": "Sharing feature under development", // 翻译模块 - 录音文件 @@ -1221,18 +1232,18 @@ const Map ptPT = { 'Serviço de Conta inicializado', // AccountService 已初始化 // 权限模块 - 'meetingStoragePermission': 'Storage', + 'meetingStoragePermission': 'Armazenamento', 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', + 'Precisamos da permissão de armazenamento para que possa selecionar e enviar ficheiros de áudio.', 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', + 'Detetámos que recusou permanentemente a permissão de armazenamento. Para continuar a usar esta funcionalidade, vá às definições da aplicação e ative manualmente a permissão de armazenamento.', 'getPermissionStatusFailed': 'Falha ao obter o estado da permissão', 'communicationPermissions': 'Permissões de Comunicação', - 'bluetoothPermissions': 'Bluetooth Permissions', - 'notificationPermissions': 'Notification Permissions', - 'storagePermissions': 'Storage Permissions', - 'microphonePermissions': 'Microphone Permissions', - 'alarmPermissions': 'Alarm Permissions', + 'bluetoothPermissions': 'Permissões Bluetooth', + 'notificationPermissions': 'Permissões de notificações', + 'storagePermissions': 'Permissões de armazenamento', + 'microphonePermissions': 'Permissões de microfone', + 'alarmPermissions': 'Permissões de alarme', 'calendarPermissions': 'Permissões do Calendário', 'locationPermissions': 'Permissões de Localização', 'phone': 'Telefone', @@ -1246,7 +1257,7 @@ const Map ptPT = { 'phonePermissionDesc': 'Usado para a função de fazer chamadas', 'smsPermissionDesc': 'Usado para a função de enviar SMS', 'alarmPermissionDesc': - 'Used to set exact alarms to ensure reminders trigger on time', + 'Usado para definir alarmes exatos e garantir que os lembretes disparem a tempo', 'calendarWritePermissionDesc': 'Usado para criar eventos e lembretes no calendário', 'calendarFullAccessPermissionDesc': @@ -1265,72 +1276,72 @@ const Map ptPT = { 'A função de chamada requer permissão de telefone', 'smsPermissionDetailDesc': 'A função de envio de SMS requer permissão de SMS', 'alarmPermissionDetailDesc': - 'This permission is required to set exact alarms and ensure reminders trigger on time', + 'Esta permissão é necessária para definir alarmes exatos e garantir que os lembretes disparem a tempo', 'calendarWritePermissionDetailDesc': 'A criação de eventos no calendário requer permissão de escrita no calendário', 'calendarFullAccessPermissionDetailDesc': 'A gestão de eventos no calendário requer permissão total de calendário', 'locationPermissionDetailDesc': 'A obtenção de informações de localização requer permissão de localização', - 'contactsPermissionDesc': 'Used for accessing contact information', + 'contactsPermissionDesc': 'Usado para aceder a informações de contactos', 'contactsPermissionDetailDesc': - 'Phone call and SMS functionality requires contacts permission to select contacts', - 'bluetoothPermissionDesc': - 'Used for connecting and managing Bluetooth devices', + 'As funções de chamadas e SMS requerem permissão de contactos para selecionar contactos', + 'bluetoothPermissionDesc': 'Usado para ligar e gerir dispositivos Bluetooth', 'bluetoothPermissionDetailDesc': - 'Connecting to Bluetooth headphones and other devices requires Bluetooth permission', - 'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices', + 'Para ligar auscultadores Bluetooth e outros dispositivos, é necessária permissão Bluetooth', + 'bluetoothScanPermissionDesc': + 'Usado para pesquisar dispositivos Bluetooth nas proximidades', 'bluetoothScanPermissionDetailDesc': - 'Scanning for nearby Bluetooth devices requires Bluetooth scan permission', - 'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices', + 'Para pesquisar dispositivos Bluetooth nas proximidades, é necessária permissão de pesquisa Bluetooth', + 'bluetoothConnectPermissionDesc': 'Usado para ligar a dispositivos Bluetooth', 'bluetoothConnectPermissionDetailDesc': - 'Connecting to Bluetooth devices requires Bluetooth connect permission', + 'Para ligar a dispositivos Bluetooth, é necessária permissão de ligação Bluetooth', 'notificationPermissionDesc': 'Used for sending notification messages', 'notificationPermissionDetailDesc': - 'App needs notification permission to send you important alerts and messages', + 'A aplicação precisa de permissão de notificações para lhe enviar alertas e mensagens importantes', 'appNeedsPermissionForFullFunction': 'A aplicação precisa desta permissão para fornecer funcionalidade completa', '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', + 'bluetoothScan': 'Pesquisa Bluetooth', + 'bluetoothConnect': 'Ligação Bluetooth', 'bluetoothScanExplanation': - 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', + 'A aplicação precisa de permissão de pesquisa Bluetooth para procurar dispositivos Bluetooth nas proximidades.', 'bluetoothConnectExplanation': - 'The app needs Bluetooth connect permission to connect to Bluetooth devices.', + 'A aplicação precisa de permissão de ligação Bluetooth para ligar a dispositivos Bluetooth.', 'locationForBluetoothExplanation': - 'The app needs location permission to scan Bluetooth devices.', + 'A aplicação precisa de permissão de localização para pesquisar dispositivos Bluetooth.', 'bluetoothScanPermanentDenial': - 'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.', + 'A permissão de pesquisa Bluetooth foi recusada permanentemente. Vá às definições para a ativar manualmente.', 'bluetoothConnectPermanentDenial': - 'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.', + 'A permissão de ligação Bluetooth foi recusada permanentemente. Vá às definições para a ativar manualmente.', 'locationPermanentDenial': - 'Location permission has been permanently denied, please go to settings to enable it manually.', - 'notificationPermission': 'Notification', - 'locationPermission': 'Location', + 'A permissão de localização foi recusada permanentemente. Vá às definições para a ativar manualmente.', + 'notificationPermission': 'Notificações', + 'locationPermission': 'Localização', 'notificationPermissionExplanation': - 'Notification permission is required to display music playback status.', + 'A permissão de notificações é necessária para mostrar o estado de reprodução de música.', 'locationPermissionExplanation': - 'Location permission is required to get current location.', + 'A permissão de localização é necessária para obter a localização atual.', 'notificationPermissionPermanentDenial': - 'You have permanently denied notification permission, please go to settings to enable it.', + 'Recusou permanentemente a permissão de notificações. Vá às definições para a ativar.', 'locationPermissionPermanentDenial': - 'You have permanently denied location permission, please go to settings to enable it.', - 'storagePermission': 'Storage', + 'Recusou permanentemente a permissão de localização. Vá às definições para a ativar.', + 'storagePermission': 'Armazenamento', 'microphonePermissionExplanation': - 'We need microphone permission to record audio content.', + 'Precisamos da permissão de microfone para gravar conteúdo de áudio.', 'storagePermissionExplanation': - 'We need storage permission so you can select and upload audio files.', + 'Precisamos da permissão de armazenamento para que possa selecionar e enviar ficheiros de áudio.', 'microphonePermissionPermanentDenial': - 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', + 'A permissão de microfone foi recusada permanentemente. Para continuar a usar esta funcionalidade, vá às definições da aplicação e ative manualmente a permissão de microfone.', 'storagePermissionPermanentDenial': - 'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', + 'A permissão de armazenamento foi recusada permanentemente. Para continuar a usar esta funcionalidade, vá às definições da aplicação e ative manualmente a permissão de armazenamento.', 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', + 'permissionUtilPermission': ' Permissão', + 'permissionUtilRestricted': ' Permissão restrita', 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'Esta funcionalidade não está disponível ou está restrita no dispositivo atual. Verifique as definições do dispositivo ou restrições do sistema', 'permissionUtilConfirm': 'OK', // 原生前台服务通知(Android) @@ -1423,27 +1434,28 @@ const Map ptPT = { 'bleConnectionFailed': 'Falha na conexão BLE', 'deviceAuthorizationFailedCheckCode': 'Falha na autorização do dispositivo, verifique o código de autorização', - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + 'bluetoothGuideTitle': + 'É necessária a ativação manual do Bluetooth', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'Siga estes passos:', // 请按照以下步骤操作: 'bluetoothGuideStep1': - 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'Ative o Bluetooth: Definições → Bluetooth → Ligar', // 开启蓝牙:设置 → 蓝牙 → 开启 'bluetoothGuideStep2': - 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'Ligue o dispositivo: encontre o seu dispositivo em “Os meus dispositivos” e toque para ligar', // 连接设备:在"我的设备"中找到您的设备并点击连接 'bluetoothGuideStep3': - 'Return to app to continue pairing process', // 返回应用继续配对流程 + 'Volte à app para continuar o processo de emparelhamento', // 返回应用继续配对流程 'bluetoothGuideTip': - 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': 'I Know', // 我知道了 + 'Dica: também pode premir continuamente o ícone Bluetooth no Centro de controlo para aceder rapidamente às definições de Bluetooth', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + 'iKnow': 'Já percebi', // 我知道了 // 配对模块 - 绑定奖励 - "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:", + "firstBindRewardTitle": "Recompensa de boas‑vindas", + "firstBindRewardDesc": "Recebeu as recompensas de vinculação.", + "vipLevelLabel": "Nível VIP:", + "expiryLabel": "Data de expiração:", + "notActivated": "Não ativado", + "aiChatCreditsLabel": "Créditos do AI Chat:", + "translationCreditsLabel": "Créditos de tradução:", + "meetingCreditsLabel": "Créditos de reuniões:", "ok": "OK", // 用户反馈模块 @@ -1474,13 +1486,14 @@ const Map ptPT = { "connectionFailed": "Falha na Conexão", "retryConnection": "Tentar Conectar Novamente", "ota_updateNow": "Atualizar Agora", - "otaVersionInfoFailed": "Failed to get version info. Please try again later.", + "otaVersionInfoFailed": + "Falha ao obter as informações da versão. Tente novamente mais tarde.", "otaDeviceInfoUnavailable": - "Unable to get device info. Please check the connection and retry.", + "Não foi possível obter as informações do dispositivo. Verifique a ligação e tente novamente.", "otaProductInfoUnavailable": - "Unable to identify the device. Please reconnect and retry.", + "Não foi possível identificar o dispositivo. Volte a ligar e tente novamente.", "otaFirmwareVersionInvalid": - "Firmware version is abnormal. Please reconnect and retry.", + "A versão do firmware é anormal. Volte a ligar e tente novamente.", "keepConnectedDontClose": "Mantenha o dispositivo conectado, não feche a aplicação", "doNotDisconnect": "Não desconecte", @@ -1507,7 +1520,7 @@ const Map ptPT = { 'Conexao BLE necessaria\nVerifique a conexao e tente novamente', 'otaDeviceInfoUnavailableTitle': 'Informacoes do dispositivo indisponiveis', 'otaCannotGetDeviceInfo': - 'Cannot get device info\nPlease reconnect device or try again later', + 'Não foi possível obter as informações do dispositivo\nVolte a ligar o dispositivo ou tente novamente mais tarde', 'otaBleCheckFailed': 'Verificacao de conexao BLE falhou', 'otaCannotGetDeviceInfoCheckConnection': 'Nao foi possivel obter informacoes, verifique a conexao', diff --git a/lib/core/translations/language/ro_ro.dart b/lib/core/translations/language/ro_ro.dart index c083c26d6..31a2c733a 100644 --- a/lib/core/translations/language/ro_ro.dart +++ b/lib/core/translations/language/ro_ro.dart @@ -1,3 +1,4 @@ +// 罗马尼亚-罗马尼亚语 const Map roRO = { // 通用 'continue': 'Continuă', @@ -18,11 +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", + "justNow": "Adesso", + "minutesAgo": "@minutes minute fa", + "yesterday": "Ieri", + "daysAgo": "@days zile fa", + "hoursAgo": "@hours ore fa", // 启动页 "slogan": "Conectând lumea, dincolo de sunet", @@ -220,55 +221,55 @@ const Map roRO = { "scene": "Scenariu", // 用量统计模块 - "aiChat": "AI Chat", - "translationStats": "Translation Statistics", - "meetingStats": "Meeting Statistics", - "today": "Today", - "thisWeek": "This Week", - "thisMonth": "This Month", - "history": "History", - "currentSessionStats": "Current Session Stats", - "translationCount": "Translation Count", - "sessionDuration": "Session Duration", - "characters": "Characters", - "recordingDuration": "Recording Duration", - "totalApiCalls": "Total API Calls", - "sessionCount": "Session Count", - "totalCharacters": "Total Characters", - "apiCallStats": "API Call Stats", - "translationApi": "Translation API", + "aiChat": "Chat AI", + "translationStats": "Statistici de traducere", + "meetingStats": "Statistici de ședințe", + "today": "Astăzi", + "thisWeek": "Săptămâna aceasta", + "thisMonth": "Luna aceasta", + "history": "Istoric", + "currentSessionStats": "Statistici sesiune curentă", + "translationCount": "Număr traduceri", + "sessionDuration": "Durata sesiunii", + "characters": "Caractere", + "recordingDuration": "Durata înregistrării", + "totalApiCalls": "Total apeluri API", + "sessionCount": "Număr sesiuni", + "totalCharacters": "Total caractere", + "apiCallStats": "Statistici apeluri API", + "translationApi": "API traducere", "asr": "ASR", "tts": "TTS", - "dataVolumeStats": "Data Volume Stats", - "sourceTextCharacters": "Source Text Characters", - "ttsTextCharacters": "TTS Text Characters", - "effectiveAudioDuration": "Effective Audio Duration", - "totalSessionDuration": "Total Session Duration", - "costStats": "Cost Stats", - "estimatedCost": "Estimated Cost", - "dailyCostThreshold": "Daily Cost Threshold", - "monthlyCostThreshold": "Monthly Cost Threshold", - "usageBehaviorStats": "Usage Behavior Stats", - "mostUsedLanguagePair": "Most-used language pair", - "mostUsedMode": "Most-used mode", - "asrApiCalls": "ASR Calls", - "totalAudioDuration": "Total Audio Duration", - "audioFileSize": "Audio File Size", - "transcriptBytes": "Transcript Bytes", - "loadFailed": "Load Failed", + "dataVolumeStats": "Statistici volum date", + "sourceTextCharacters": "Caractere text sursă", + "ttsTextCharacters": "Caractere text TTS", + "effectiveAudioDuration": "Durată audio efectivă", + "totalSessionDuration": "Durată totală sesiuni", + "costStats": "Statistici cost", + "estimatedCost": "Cost estimat", + "dailyCostThreshold": "Prag cost zilnic", + "monthlyCostThreshold": "Prag cost lunar", + "usageBehaviorStats": "Statistici comportament utilizare", + "mostUsedLanguagePair": "Pereche de limbi cea mai folosită", + "mostUsedMode": "Modul cel mai folosit", + "asrApiCalls": "Apeluri ASR", + "totalAudioDuration": "Durată audio totală", + "audioFileSize": "Dimensiune fișier audio", + "transcriptBytes": "Octeți transcriere", + "loadFailed": "Încărcare eșuată", "statsLoadFailedTryLater": - "Statistics failed to load. Please try again later.", + "Nu s-au putut încărca statisticile. Încercați din nou mai târziu.", "cleanupComplete": "Cleanup Complete", "cleanedOldData": "Cleaned data older than 90 days", "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", // 商品模块 - 通用 - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', + 'availablePackages': 'Pachete disponibile', + 'remainingQuota': 'Cotă rămasă', + 'totalQuota': 'Cotă totală', + 'remaining': 'Rămas', + 'featureDescription': 'Descriere funcție', 'paymentSuccess': 'Plată reușită', 'paymentFailed': 'Plata a eșuat', 'gotIt': 'Am înțeles', @@ -328,95 +329,97 @@ const Map roRO = { 'alipayPaymentLaunchFailed': 'Lansarea Alipay a eșuat', 'cannotLaunchAlipayPayment': 'Nu se poate lansa Alipay', 'alipayPaymentException': 'Excepție Alipay', - "insufficientIntegral": "Insufficient integral", + "insufficientIntegral": "Puncte insuficiente", "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', + 'Sold insuficient. Vă rugăm să accesați pagina de reîncărcare corespunzătoare pentru a reîncărca.', + "recharge": 'Mergeți la reîncărcare', "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + 'Abonamentul AI a expirat. Vă rugăm să accesați pagina de reîncărcare a abonamentului pentru a reînnoi.', // 商品模块 - AI商品页 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', + 'musicAndRecommendation': 'Muzică și recomandări', + 'navigationAndRoutes': 'Navigație și rute', + 'nearbySearch': 'Căutare în apropiere', + 'newsInformation': 'Știri', + 'communicationAssistant': 'Asistent de comunicare', 'aiHeaderDesc1': - 'Longer conversation quota, more tool calls, extended context length.', + 'Cotă de conversații mai mare, mai multe apeluri de instrumente, context extins.', 'aiHeaderDesc2': - 'Suitable for agent Q&A, summarization, analysis, and task execution.', - 'musicSearchPlaybackControl': 'Music library search and playback control', + 'Potrivit pentru întrebări și răspunsuri, rezumare, analiză și executarea sarcinilor.', + 'musicSearchPlaybackControl': + 'Căutare în bibliotecă și controlul redării muzicii', 'smartPlaylistAndSimilarRecommendations': - 'Smart playlist and similar song recommendations', + 'Playlist inteligent și recomandări de melodii similare', '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', + 'Planificare rută și evitarea aglomerației', + 'voiceBroadcastAndWaypoints': 'Anunț vocal și setări puncte intermediare', + 'realTimeWeatherForecast': 'Vreme în timp real și prognoză', + 'clothingAdviceAndTravelReminders': + 'Sfaturi vestimentare și memento-uri de călătorie', + 'poiSearchFoodGasParking': 'Căutare POI: mâncare / benzină / parcare', + 'ratingsHoursAndDirectRoutes': 'Evaluări, program și rutare directă', + 'hotNewsAndTopicOverview': 'Știri populare și prezentare subiect', + 'longArticleSummariesAndKeyPoints': 'Rezumat articole lungi și puncte cheie', + 'helpCallAndSMS': 'Ajutor pentru apeluri și SMS', 'templatedMessagesAndScheduleReminders': - 'Template messages and schedule reminders', + 'Mesaje șablon și memento-uri programate', 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', + 'Funcțiile depind de permisiunile dispozitivului, disponibilitatea serviciilor și condițiile rețelei.', // 商品模块 - 翻译商品页 - 'realtimeTranscription': 'Real-time Transcription', - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', + 'realtimeTranscription': 'Transcriere în timp real', + 'sceneLexicon': 'Glosar de scenarii', + 'subtitleDisplay': 'Subtitrări', 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'Interpretare simultană în timp real și traducere de text cu voce cu latență redusă.', 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', + 'translateZhEn': 'Traducere chineză–engleză', + 'lowLatencyVoiceBroadcast': 'Difuzare vocală cu latență redusă', + 'multiLangTextTranslation': 'Traducere text multilingvă', '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', + 'Optimizare terminologie și păstrarea contextului', + 'lexiconTourBusinessLife': 'Lexicoane pentru călătorii/afaceri/viață', + 'personalVocabularyMemory': 'Memorie vocabular personal', + 'conversationSubtitleLargeText': 'Subtitrări conversație / mod text mare', + 'colorHighContrast': 'Contrast de culoare ridicat', 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', + 'Performanța traducerii depinde de microfon, latența rețelei și zgomotul ambiental.', // 商品模块 - 会议商品页 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', + 'meetingRecording': 'Înregistrare ședință', + 'transcriptionAndSummary': 'Transcriere și rezumat', + 'keywordSearch': 'Căutare cuvinte cheie', + 'collaborationSharing': 'Colaborare și partajare', 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'Înregistrare audio, transcriere, căutare cuvinte cheie și rezumat automat pentru a crește eficiența ședințelor.', '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', + 'meetingAutoRecording': 'Înregistrare automată și segmentare', + 'meetingSpeakerTagging': 'Etichetare vorbitori', + 'meetingLongAudioTranscription': 'Transcriere audio lung', + 'meetingKeyPointSummary': 'Extragere puncte cheie', + 'meetingTopicNameSearch': 'Căutare după subiect/nume', + 'meetingTimelineJump': 'Salt pe cronologie', + 'meetingExportSummary': 'Export proces-verbal', + 'meetingMultiPlatformShare': 'Partajare pe mai multe platforme', 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', + 'Utilizați în medii liniștite; performanța depinde de microfon și rețea.', // 商品模块 - VIP会员页 - 'benefitsOverview': 'Benefits overview', - 'higherQuota': 'Higher usage quota', - 'lowerUnitPrice': 'Lower unit price', - 'priorityService': 'Priority service', - 'exclusiveSupportChannel': 'Dedicated support channel', - 'fastResponse': 'Fast issue response', - 'eventsAndDiscounts': 'Events and discounts', - 'memberExclusiveEvents': 'Member-exclusive events', - 'longTermDiscountPlan': 'Long-term discount plan', - 'generalPrivileges': 'General privileges', - 'earlyAccessNewFeatures': 'Early access to new features', - 'crossDeviceSync': 'Cross-device sync', + 'benefitsOverview': 'Prezentare beneficii', + 'higherQuota': 'Cotă de utilizare mai mare', + 'lowerUnitPrice': 'Preț unitar mai mic', + 'priorityService': 'Serviciu prioritar', + 'exclusiveSupportChannel': 'Canal de suport dedicat', + 'fastResponse': 'Răspuns rapid la probleme', + 'eventsAndDiscounts': 'Evenimente și reduceri', + 'memberExclusiveEvents': 'Evenimente exclusive pentru membri', + 'longTermDiscountPlan': 'Plan de reducere pe termen lung', + 'generalPrivileges': 'Beneficii generale', + 'earlyAccessNewFeatures': 'Acces timpuriu la funcții noi', + 'crossDeviceSync': 'Sincronizare între dispozitive', 'vipDisclaimer': - 'Actual benefits depend on the package details and may change with versions.', + 'Beneficiile reale depind de detaliile pachetului și se pot schimba odată cu versiunile.', // 商品模块 - 商品名称与描述 'ai_001_name': 'AI Basic 100', @@ -425,18 +428,18 @@ const Map roRO = { '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', + 'trans_001_name': 'Traducere Basic 100', + 'trans_002_name': 'Traducere Basic 500', + 'trans_003_name': 'Traducere 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).', + 'meet_001_desc': 'Include 100 înregistrări/transcrieri de ședințe.', + 'meet_002_desc': 'Include 500 înregistrări/transcrieri de ședințe.', + 'meet_003_desc': 'Include 1000 înregistrări/transcrieri de ședințe.', + 'trans_001_desc': 'Include 100 traduceri (voce/text).', + 'trans_002_desc': 'Include 500 traduceri (voce/text).', + 'trans_003_desc': 'Include 1000 traduceri (voce/text).', // 商品模块 - 页脚 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', @@ -492,37 +495,38 @@ const Map roRO = { 'recordingDetails': 'Detalii înregistrare', 'aiSummary': 'Rezumat AI', 'meetingTranscript': 'Transcriere ședință', - 'files': 'Files', - 'mine': 'Mine', - 'connect': 'Connect', - 'allFiles': 'All Files', - 'searchInAllFiles': 'Search in all files', - 'from': 'From', - 'sortBy': 'Sort by', - 'creationTime': 'Creation Time', - 'bluetoothConnection': 'Bluetooth Connection', - 'meetingReconnect': 'Reconnect', - 'searching': 'Searching...', - 'searchFailed': 'Search failed, please check if Bluetooth is enabled', - 'aiPenNotFound': 'AI PEN device not found', - 'connectedToAiPen': 'Connected to AI PEN device', - 'checkingNewFiles': 'Checking for new files to import', + 'files': 'Fișiere', + 'mine': 'Ale mele', + 'connect': 'Conectează', + 'allFiles': 'Toate fișierele', + 'searchInAllFiles': 'Caută în toate fișierele', + 'from': 'De la', + 'sortBy': 'Sortează după', + 'creationTime': 'Data creării', + 'bluetoothConnection': 'Conexiune Bluetooth', + 'meetingReconnect': 'Reconectează', + 'searching': 'Se caută...', + 'searchFailed': 'Căutarea a eșuat, verificați dacă Bluetooth este activat', + 'aiPenNotFound': 'Dispozitivul AI PEN nu a fost găsit', + 'connectedToAiPen': 'Conectat la dispozitivul AI PEN', + 'checkingNewFiles': 'Se verifică fișiere noi pentru import', 'startingWifi': 'Starting Wi-Fi...', 'newFilesDetected': 'New files detected, preparing to import', 'noNewFiles': 'No new files to import', - 'connectingWifi': 'Connecting to Wi-Fi...', - 'wifiConnected': 'Wi-Fi connected successfully', - 'downloadingFiles': 'Downloading files...', - 'downloadingFileProgress': 'Total {total} files, downloading file {current}', - 'downloadComplete': 'Download complete', + 'connectingWifi': 'Se conectează la Wi‑Fi...', + 'wifiConnected': 'Wi‑Fi conectat cu succes', + 'downloadingFiles': 'Se descarcă fișiere...', + 'downloadingFileProgress': + 'Total {total} fișiere, se descarcă fișierul {current}', + 'downloadComplete': 'Descărcare finalizată', 'downloadCompleteInfo': - 'Download complete, {count} files in total, returning automatically in 2 seconds', + 'Descărcare finalizată, {count} fișiere în total, revenire automată în 2 secunde', // Meeting模块 - 录音功能 - 'startRecording': 'Start Recording', - 'liveRecording': 'Live Recording', - 'audioVideoRecording': 'Audio/Video Recording', - 'callRecording': 'Call Recording', + 'startRecording': 'Începe înregistrarea', + 'liveRecording': 'Înregistrare live', + 'audioVideoRecording': 'Înregistrare audio/video', + 'callRecording': 'Înregistrare apel', 'importAudio': 'Import Audio', 'meetingRecordExitTitle': 'Ieși din înregistrare', // 退出录音 'meetingRecordExitMessage': 'Alege ce să faci înainte de a ieși', // 请选择离开后的操作 @@ -587,85 +591,87 @@ const Map roRO = { 'custom': 'Personalizat', 'pleaseEnter': 'Vă rugăm introduceți', 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', + 'recordingLanguage': 'Limba înregistrării', '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.', + 'Analiza AI identifică evenimente-cheie în înregistrări, permițându-vă să selectați evenimente importante pentru generarea 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', + 'importingLocalRecordings': 'Se importă înregistrări locale...', + 'importFailed': 'Importul fișierului a eșuat: {filePath}, eroare: {error}', + 'importSuccess': 'Au fost importate cu succes {count} înregistrări locale', + 'importError': 'Import eșuat: {error}', + 'pleaseSelectAudioFile': 'Vă rugăm să selectați un fișier audio', 'shareAudio': 'Share Meeting Audio', 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + 'shareFailed': 'Partajarea a eșuat: {error}', + 'fileProcessingFailed': + 'Procesarea fișierului a eșuat: {filePath}, eroare: {error}', // Meeting模块 - 思维导图 'saveMindMap': 'Salvează harta mentală', - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', + 'shareMindMap': 'Partajează harta mentală', + 'shareSuccess': 'Partajare reușită', // 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', + 'askAI': 'Întreabă AI...', + 'askAIPrompt': 'Cu ce te pot ajuta astăzi?', + 'continueAsk': 'Continuă să întrebi', + 'todoList': 'Listă de sarcini', + 'extractConclusion': 'Extrage concluzia', + 'generateKeyIndicators': 'Generează indicatori-cheie', // 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...', + 'shareLink': 'Partajează linkul', + 'copyTranscript': 'Copiază transcrierea', + 'copySummary': 'Copiază rezumatul', + 'exportAudio': 'Exportă audio', + 'exportTranscript': 'Exportă transcrierea', + 'shareMeetingAudio': 'Partajează audio ședință', + 'exportSummary': 'Exportă rezumatul', + 'exportAs': 'Exportă ca', + 'exportingPDF': 'Se exportă 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', + 'nameCurrentSpeaker': 'Numește vorbitorul curent', + 'recentlyUsedNames': 'Nume folosite recent', + 'applyToCurrentParagraph': 'Aplică la paragraful curent', + 'totalTime': 'Timp total', 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', + 'Vorbitorii din rezumat vor fi actualizați automat', // Meeting模块 - 云端同步 - 'syncToCloud': 'Sync to Cloud', + 'syncToCloud': 'Sincronizează în 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', + 'Sincronizează automat înregistrările în cloud. Poți reda, gestiona și partaja înregistrări prin aplicația VOITRANS sau VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sincronizează aplicația VOITRANS', + 'transcriptionRecord': 'Înregistrare de transcriere', // Meeting模块 - 我的页面 - 'transcriptionRecords': 'Transcription Records', - 'templateCommunity': 'Template Community', - 'comingSoon': 'Coming Soon', - 'integration': 'Integration', + 'transcriptionRecords': 'Înregistrări de transcriere', + 'templateCommunity': 'Comunitatea de șabloane', + 'comingSoon': 'În curând', + 'integration': 'Integrare', 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', - 'enabled': 'Enabled', - 'disabled': 'Disabled', - 'myVoitransDevice': 'My VOITRANS Device', + 'enabled': 'Activat', + 'disabled': 'Dezactivat', + 'myVoitransDevice': 'Dispozitivul meu VOITRANS', 'helpAndFeedback': 'Help & Feedback', 'aboutVoitrans': 'About VOITRANS', 'meetingDays': 'Days', 'meetingHours': 'Hours', 'voitransAiMember': 'Voitrans AI Member', 'unlockStarterMember': 'Unlock Starter Member', - 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', + 'bindDeviceToActivate': + 'Asociați dispozitivul Voitrans pentru a activa abonamentul Starter', 'unlockNow': 'Unlock Now', // Meeting模块 - 会员与升级 @@ -689,7 +695,7 @@ const Map roRO = { 'customTemplateDesc': 'You can customize summary prompts according to your needs and use them to generate the required summaries.', 'askAiDesc': - 'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.', + 'Extrage inteligent informații mai profunde din înregistrări și generează cu un singur clic tabele de date, concluzii-cheie, liste de sarcini, e-mailuri de raport și alt conținut formatat.', 'visualMindMapDesc': 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', 'templateCommunityDesc': @@ -697,13 +703,13 @@ const Map roRO = { 'speakerIdentificationDesc': 'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.', 'privateCloudSyncDesc': - 'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.', + 'Înregistrările și transcrierile sunt stocate în siguranță pe servere cloud dedicate, cu criptare completă la încărcare și descărcare pentru a asigura confidențialitatea și securitatea.', '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.', + 'Exportați înregistrările audio, textul transcris și rezumatele în diverse formate (TXT, PDF, JPEG) după nevoie.', 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -733,7 +739,7 @@ const Map roRO = { 'purchase': 'Purchase', // Meeting模块 - 录音语言 - 'recordLanguage': 'Recording Language', + 'recordLanguage': 'Limba înregistrării', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', @@ -761,10 +767,10 @@ const Map roRO = { "translationRecharge": "Recarga de traducere", "meetingAssistantRecharge": "Recarga de asistent ședință", "cloudSync": "Recarga de sincronizare în cloud", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "memberService": "Serviciu membri", + "bindRewardTitle": "Recompense", "bindRewardSimpleDesc": - "First bind device reward has been issued. Tap OK to close.", + "Recompensa pentru prima asociere a dispozitivului a fost emisă. Atingeți OK pentru a închide.", "joinDevice": "Dispozitiv conectat:", "accountId": "ID cont:", "systemSetting": "Setări de sistem", @@ -814,20 +820,21 @@ const Map roRO = { "loading": "Se încarcă...", // 设备管理模块 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", + "deviceTypeUnknown": "Dispozitiv necunoscut", + "deviceTypeClassicBluetoothHeadset": "Căști Bluetooth clasice", + "deviceTypeBleBluetoothHeadset": "Căști Bluetooth BLE", + "deviceTypeSmartVoiceRecorder": "Reportofon inteligent", "deviceTypeSmartEye": "Smart Glasses", "unbind": "Deleagă", - "noDevicesBound": "No devices bound yet", - "pleaseBindDeviceFirst": "Please bind a device first to manage", - "noMacAddress": "No MAC Address", - "licenseCode": "License Code", - "confirmUnbind": "Confirm Unbind", + "noDevicesBound": "Nu există dispozitive asociate încă", + "pleaseBindDeviceFirst": + "Asociați mai întâi un dispozitiv pentru a-l gestiona", + "noMacAddress": "Fără adresă MAC", + "licenseCode": "Cod licență", + "confirmUnbind": "Confirmă dezlegarea", "confirmUnbindMessage": - "Are you sure you want to unbind device \"{deviceName}\"?", - "confirmUnbindAction": "Confirm Unbind", + "Sigur doriți să dezlegați dispozitivul \"{deviceName}\"?", + "confirmUnbindAction": "Dezleagă", // Agent模块 - 主界面 "Lily": "Lily", @@ -858,22 +865,22 @@ const Map roRO = { "loadMoreMessages": "Încarcă mai multe mesaje...", "loadFailedClickRetry": "Încărcare eșuată, faceți clic pentru a reîncerca", "swipeUpForMore": "Glisați în sus pentru mai mult", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 + "callingTool": "Vă ajut, vă rog așteptați!", // 正在帮您,请稍等! + "voice_interrupt": "Întrerupe", // 语音打断 '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", // 今日天气 - "presetNews": "Today's news", // 今日新闻 - "presetFood": "Nearby food", // 美食 - "playSomeMusic": "Play some popular music", // 播放一些流行音乐 - "navigationTo": "Please help me navigate to", // 导航到 - "todayWeather": "How's the weather today?", // 今日天气 - "todayNews": "What's the news today?", // 今日新闻 - "nearbyFood": "What delicious food is nearby?", // 美食 + "presetMusic": "Redă muzică", // 来点音乐 + "presetNavigation": "Navighează către", // 导航 + "presetWeather": "Vremea astăzi", // 今日天气 + "presetNews": "Știrile astăzi", // 今日新闻 + "presetFood": "Mâncare în apropiere", // 美食 + "playSomeMusic": "Redă muzică populară", // 播放一些流行音乐 + "navigationTo": "Navighează către", // 导航到 + "todayWeather": "Cum este vremea astăzi?", // 今日天气 + "todayNews": "Care sunt știrile astăzi?", // 今日新闻 + "nearbyFood": "Unde este mâncare bună pe aici?", // 附近有什么好吃的 // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Bună! Sunt **Lily**, vă pot ajuta cu:\n\n' @@ -1021,8 +1028,8 @@ const Map roRO = { "strongWind": "Vânt puternic", // 翻译模块 - 中间层 - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", + "pictureTranslation": "Traducere imagine", + "textTranslation": "Traducere text", // 翻译模块 - 主页 "translationHistory": "Istoric traduceri", @@ -1032,14 +1039,14 @@ const Map roRO = { "phoneUser": "Utilizator telefon", "selectSourceLanguage": "Selectează limba sursă", "selectTargetLanguage": "Selectează limba țintă", - "me": "Me", - "counterPart": "Counterpart", + "me": "Eu", + "counterPart": "Interlocutor", "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - "autoDetect": "Auto Detect", // 自动检测 + "Asigurați-vă că setul cu cască Bluetooth este conectat la telefon și că sunteți într-un apel", + "autoDetect": "Detectare automată", // 自动检测 // 翻译模块 - 文本翻译 - "languageDetectionFailed": "Language detection failed", + "languageDetectionFailed": "Detectarea limbii a eșuat", // 翻译模块 - 悬浮窗与权限 'disableFloatingWindow': 'Dezactivare fereastra plutitoare', @@ -1049,17 +1056,17 @@ const Map roRO = { 'Este necesara permisiunea microfonului pentru inregistrare', 'deleteTranslationRecordError': 'Eroare la stergerea inregistrarii de traducere: @error', - "translationFailed": "Translation failed", + "translationFailed": "Traducerea a eșuat", "translating": "Se traduce", "translate": "Traducere", - "pleaseInputText": "Please input text", + "pleaseInputText": "Vă rugăm să introduceți text", "inputTextToTranslate": "Introduceți textul de tradus", - "textTooLong": "Text too long, max 5000 characters", + "textTooLong": "Text prea lung, maxim 5000 de caractere", // 翻译模块 - 历史记录 "noTranslationHistory": "Niciun istoric", - "historyRecords": "History Records", - "clearResults": "Clear Results", + "historyRecords": "Înregistrări din istoric", + "clearResults": "Șterge rezultatele", "clearHistory": "Șterge istoricul", "clearHistoryConfirm": "Sunteți sigur că doriți să ștergeți tot istoricul traducerilor? Această acțiune nu poate fi anulată.", @@ -1069,54 +1076,57 @@ const Map roRO = { "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", + "selectImageSource": "Selectați sursa imaginii", + "imagePreview": "Previzualizare imagine", + "translationResult": "Rezultat traducere", + "recognitionResult": "Rezultat recunoaștere", + "translatedImagePreview": "Previzualizare imagine tradusă", + "translatedImageLoadFailed": "Nu s-a putut încărca imaginea tradusă", + "pleaseSelectImage": "Vă rugăm să selectați o imagine", + "imageLoadFailed": "Încărcarea imaginii a eșuat", + "imageQuality": "Calitate imagine", + "maxSize": "Dimensiune maximă", + "close": "Închide", + "setImageQuality": "Setează calitatea imaginii", + "currentQuality": "Calitate curentă: @value%", + "setMaxSize": "Setează dimensiunea maximă", + "currentMaxSize": "Curent: @pxpx", + "waitingForAction": "Se așteaptă o acțiune", + "pleaseSelectImageToStart": "Selectați o imagine pentru a începe", + "chooseImage": "Alegeți imaginea", + "openingCamera": "Se deschide camera...", + "openingPhotoAlbum": "Se deschide albumul foto...", + "cancelled": "Anulat", + "userCancelledSelection": "Utilizatorul a anulat selecția", + "translatingImage": "Se traduce imaginea", + "callingImageTranslateService": + "Se apelează serviciul de traducere a imaginilor...", + "savingRecord": "Se salvează înregistrarea", + "savingTranslationResult": "Se salvează rezultatul traducerii...", + "translationCompleted": "Traducere finalizată", + "allStepsCompleted": "Toți pașii au fost finalizați", + "processingFailed": "Procesare eșuată", "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", + "Procesarea imaginii sau traducerea a eșuat. Încercați din nou.\nEroare: {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", + "emptyTranslationResult": + "API-ul de traducere a imaginii a returnat un rezultat gol", "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", + "Traducerea imaginii a eșuat. Problemă de rețea sau limită de apeluri. Încercați mai târziu", "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", + "Excepție la API-ul de traducere a imaginii. Verificați rețeaua și reîncercați", + "permissionRequired": "Permisiune necesară", + "cameraPermissionRequired": + "Permisiunea camerei este necesară pentru a face fotografii", "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", + "Permisiunea pentru albumul foto este necesară pentru a selecta imagini", + "translationDetails": "Detalii traducere", + "originalImage": "Imagine originală", + "sourceLanguage": "Limba sursă", + "targetLanguage": "Limba țintă", + "translationTime": "Timp de traducere", "shareInDevelopment": "Sharing feature under development", // 翻译模块 - 录音文件 @@ -1216,32 +1226,32 @@ const Map roRO = { 'Serviciul de cont a fost inițializat', // AccountService 已初始化 // 权限模块 - 'meetingStoragePermission': 'Storage', + 'meetingStoragePermission': 'Stocare', 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', + 'Avem nevoie de permisiunea pentru stocare pentru a putea selecta și încărca fișiere audio.', 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', + 'A fost detectat că ați refuzat permanent permisiunea pentru stocare. Pentru a continua, mergeți la setările aplicației și activați manual permisiunea pentru stocare.', 'getPermissionStatusFailed': 'Obținerea stării permisiunii a eșuat', 'communicationPermissions': 'Permisiuni de comunicare', - 'bluetoothPermissions': 'Bluetooth Permissions', - 'notificationPermissions': 'Notification Permissions', - 'storagePermissions': 'Storage Permissions', - 'microphonePermissions': 'Microphone Permissions', - 'alarmPermissions': 'Alarm Permissions', + 'bluetoothPermissions': 'Permisiuni Bluetooth', + 'notificationPermissions': 'Permisiuni notificări', + 'storagePermissions': 'Permisiuni stocare', + 'microphonePermissions': 'Permisiuni microfon', + 'alarmPermissions': 'Permisiuni alarme', 'calendarPermissions': 'Permisiuni calendar', 'locationPermissions': 'Permisiuni locație', 'phone': 'Telefon', 'sms': 'SMS', - 'contacts': 'Contacts', - 'notification': 'Notification', - 'alarm': 'Alarm', + 'contacts': 'Contacte', + 'notification': 'Notificări', + 'alarm': 'Alarmă', 'calendarWrite': 'Scriere în calendar', 'calendarFullAccess': 'Acces complet la calendar', 'locationInfo': 'Informații locație', 'phonePermissionDesc': 'Utilizat pentru funcția de apelare', 'smsPermissionDesc': 'Utilizat pentru funcția de trimitere SMS', 'alarmPermissionDesc': - 'Used to set exact alarms to ensure reminders trigger on time', + 'Folosit pentru a seta alarme exacte, astfel încât memento-urile să pornească la timp', 'calendarWritePermissionDesc': 'Utilizat pentru crearea de evenimente și memento-uri în calendar', 'calendarFullAccessPermissionDesc': @@ -1261,72 +1271,75 @@ const Map roRO = { 'smsPermissionDetailDesc': 'Funcția de trimitere SMS necesită permisiunea pentru SMS', 'alarmPermissionDetailDesc': - 'This permission is required to set exact alarms and ensure reminders trigger on time', + 'Această permisiune este necesară pentru a seta alarme exacte și pentru a asigura declanșarea la timp a memento-urilor', 'calendarWritePermissionDetailDesc': 'Crearea de evenimente în calendar necesită permisiunea de scriere în calendar', 'calendarFullAccessPermissionDetailDesc': 'Gestionarea evenimentelor din calendar necesită permisiunea completă pentru calendar', 'locationPermissionDetailDesc': 'Obținerea informațiilor despre locație necesită permisiunea pentru locație', - 'contactsPermissionDesc': 'Used for accessing contact information', + 'contactsPermissionDesc': 'Folosit pentru accesarea informațiilor de contact', 'contactsPermissionDetailDesc': - 'Phone call and SMS functionality requires contacts permission to select contacts', + 'Funcțiile de apel și SMS necesită permisiunea pentru contacte pentru a selecta contacte', 'bluetoothPermissionDesc': - 'Used for connecting and managing Bluetooth devices', + 'Folosit pentru conectarea și gestionarea dispozitivelor Bluetooth', 'bluetoothPermissionDetailDesc': - 'Connecting to Bluetooth headphones and other devices requires Bluetooth permission', - 'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices', + 'Conectarea la căști Bluetooth și alte dispozitive necesită permisiunea Bluetooth', + 'bluetoothScanPermissionDesc': + 'Folosit pentru scanarea dispozitivelor Bluetooth din apropiere', 'bluetoothScanPermissionDetailDesc': - 'Scanning for nearby Bluetooth devices requires Bluetooth scan permission', - 'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices', + 'Scanarea dispozitivelor Bluetooth din apropiere necesită permisiunea de scanare Bluetooth', + 'bluetoothConnectPermissionDesc': + 'Folosit pentru conectarea la dispozitive Bluetooth', 'bluetoothConnectPermissionDetailDesc': - 'Connecting to Bluetooth devices requires Bluetooth connect permission', - 'notificationPermissionDesc': 'Used for sending notification messages', + 'Conectarea la dispozitive Bluetooth necesită permisiunea de conectare Bluetooth', + 'notificationPermissionDesc': + 'Folosit pentru trimiterea mesajelor de notificare', 'notificationPermissionDetailDesc': - 'App needs notification permission to send you important alerts and messages', + 'Aplicația are nevoie de permisiunea de notificare pentru a vă trimite alerte și mesaje importante', 'appNeedsPermissionForFullFunction': 'Aplicația necesită această permisiune pentru funcționalitate completă', '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', + 'bluetoothScan': 'Scanare Bluetooth', + 'bluetoothConnect': 'Conectare Bluetooth', 'bluetoothScanExplanation': - 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', + 'Aplicația are nevoie de permisiunea de scanare Bluetooth pentru a scana dispozitivele Bluetooth din apropiere.', 'bluetoothConnectExplanation': - 'The app needs Bluetooth connect permission to connect to Bluetooth devices.', + 'Aplicația are nevoie de permisiunea de conectare Bluetooth pentru a se conecta la dispozitive Bluetooth.', 'locationForBluetoothExplanation': - 'The app needs location permission to scan Bluetooth devices.', + 'Aplicația are nevoie de permisiunea de locație pentru a scana dispozitive Bluetooth.', 'bluetoothScanPermanentDenial': - 'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.', + 'Permisiunea de scanare Bluetooth a fost refuzată permanent. Mergeți la setări pentru a o activa manual.', 'bluetoothConnectPermanentDenial': - 'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.', + 'Permisiunea de conectare Bluetooth a fost refuzată permanent. Mergeți la setări pentru a o activa manual.', 'locationPermanentDenial': - 'Location permission has been permanently denied, please go to settings to enable it manually.', - 'notificationPermission': 'Notification', - 'locationPermission': 'Location', + 'Permisiunea de locație a fost refuzată permanent. Mergeți la setări pentru a o activa manual.', + 'notificationPermission': 'Notificări', + 'locationPermission': 'Locație', 'notificationPermissionExplanation': - 'Notification permission is required to display music playback status.', + 'Permisiunea de notificare este necesară pentru a afișa starea redării muzicii.', 'locationPermissionExplanation': - 'Location permission is required to get current location.', + 'Permisiunea de locație este necesară pentru a obține locația curentă.', 'notificationPermissionPermanentDenial': - 'You have permanently denied notification permission, please go to settings to enable it.', + 'Ați refuzat permanent permisiunea de notificare. Mergeți la setări pentru a o activa.', 'locationPermissionPermanentDenial': - 'You have permanently denied location permission, please go to settings to enable it.', - 'storagePermission': 'Storage', + 'Ați refuzat permanent permisiunea de locație. Mergeți la setări pentru a o activa.', + 'storagePermission': 'Stocare', 'microphonePermissionExplanation': - 'We need microphone permission to record audio content.', + 'Avem nevoie de permisiunea microfonului pentru a înregistra conținut audio.', 'storagePermissionExplanation': - 'We need storage permission so you can select and upload audio files.', + 'Avem nevoie de permisiunea pentru stocare astfel încât să puteți selecta și încărca fișiere audio.', 'microphonePermissionPermanentDenial': - 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', + 'Permisiunea pentru microfon a fost refuzată permanent. Pentru a continua, mergeți la setările aplicației și activați manual permisiunea pentru microfon.', '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', + 'Permisiunea pentru stocare a fost refuzată permanent. Pentru a continua, mergeți la setările aplicației și activați manual permisiunea pentru stocare.', + 'permissionUtilNeed': 'Necesită ', + 'permissionUtilPermission': ' permisiune', + 'permissionUtilRestricted': ' Permisiune restricționată', 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'Această funcție nu este disponibilă sau este restricționată pe acest dispozitiv. Verificați setările dispozitivului sau restricțiile sistemului', 'permissionUtilConfirm': 'OK', // 原生前台服务通知(Android) @@ -1416,27 +1429,28 @@ const Map roRO = { 'bleConnectionFailed': 'Conexiunea BLE a eșuat', 'deviceAuthorizationFailedCheckCode': 'Autorizarea dispozitivului a eșuat, verificați codul de autorizare', - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + 'bluetoothGuideTitle': + 'Este necesară activarea manuală a Bluetooth', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'Urmați acești pași:', // 请按照以下步骤操作: 'bluetoothGuideStep1': - 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'Activați Bluetooth: Setări → Bluetooth → Porniți', // 开启蓝牙:设置 → 蓝牙 → 开启 'bluetoothGuideStep2': - 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'Conectați dispozitivul: găsiți dispozitivul în „Dispozitivele mele” și atingeți pentru conectare', // 连接设备:在"我的设备"中找到您的设备并点击连接 'bluetoothGuideStep3': - 'Return to app to continue pairing process', // 返回应用继续配对流程 + 'Revino în aplicație pentru a continua procesul de asociere', // 返回应用继续配对流程 'bluetoothGuideTip': - 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': 'I Know', // 我知道了 + 'Sfat: poți apăsa lung pictograma Bluetooth din Centrul de control pentru a accesa rapid setările Bluetooth', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + 'iKnow': 'Am înțeles', // 我知道了 // 配对模块 - 绑定奖励 - "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:", + "firstBindRewardTitle": "Recompensă de bun venit", + "firstBindRewardDesc": "Ați primit recompensele pentru asociere.", + "vipLevelLabel": "Nivel VIP:", + "expiryLabel": "Data expirării:", + "notActivated": "Neactivat", + "aiChatCreditsLabel": "Credite AI Chat:", + "translationCreditsLabel": "Credite de traducere:", + "meetingCreditsLabel": "Credite de întâlniri:", "ok": "OK", // 用户反馈模块 @@ -1468,13 +1482,14 @@ const Map roRO = { "connectionFailed": "Conexiune eșuată", "retryConnection": "Reîncearcă conexiunea", "ota_updateNow": "Actualizează acum", - "otaVersionInfoFailed": "Failed to get version info. Please try again later.", + "otaVersionInfoFailed": + "Nu s-au putut obține informațiile despre versiune. Încercați din nou mai târziu.", "otaDeviceInfoUnavailable": - "Unable to get device info. Please check the connection and retry.", + "Nu se pot obține informațiile dispozitivului. Verificați conexiunea și reîncercați.", "otaProductInfoUnavailable": - "Unable to identify the device. Please reconnect and retry.", + "Nu se poate identifica dispozitivul. Reconectați și reîncercați.", "otaFirmwareVersionInvalid": - "Firmware version is abnormal. Please reconnect and retry.", + "Versiunea firmware este nevalidă. Reconectați și reîncercați.", "keepConnectedDontClose": "Mențineți dispozitivul conectat, nu închideți aplicația", "doNotDisconnect": "Nu deconectați", @@ -1501,7 +1516,7 @@ const Map roRO = { 'Conexiune BLE necesara\nVerificati conexiunea si incercati din nou', 'otaDeviceInfoUnavailableTitle': 'Informatii dispozitiv indisponibile', 'otaCannotGetDeviceInfo': - 'Cannot get device info\nPlease reconnect device or try again later', + 'Nu se pot obține informațiile dispozitivului\nReconectați dispozitivul sau încercați din nou mai târziu', 'otaBleCheckFailed': 'Verificarea conexiunii BLE a esuat', 'otaCannotGetDeviceInfoCheckConnection': 'Nu se pot obtine informatii, verificati conexiunea', diff --git a/lib/core/translations/language/ru_ru.dart b/lib/core/translations/language/ru_ru.dart index 39a468395..94ee219dc 100644 --- a/lib/core/translations/language/ru_ru.dart +++ b/lib/core/translations/language/ru_ru.dart @@ -1,3 +1,4 @@ +// 俄罗斯-俄语 const Map ruRU = { // 通用 'continue': 'Продолжить', @@ -18,11 +19,11 @@ const Map ruRU = { "unknownError": "Неизвестная ошибка", "asrConnectionFailed": "Не удалось подключиться к службе распознавания речи. Проверьте сеть и попробуйте ещё раз позже.", - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", + "justNow": "Только что", + "minutesAgo": "@minutes мин назад", + "yesterday": "Вчера", + "daysAgo": "@days дн назад", + "hoursAgo": "@hours ч назад", // 启动页 "slogan": "Соединяя мир, за пределами звука", @@ -110,7 +111,7 @@ const Map ruRU = { "welcomeToThisApp": "Добро пожаловать в Voitrans, пожалуйста, внимательно прочтите", // 欢迎使用Voitrans,请充分阅读 "privacyPolicyText": - ",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 + "Нажимая «Согласен и войти», вы подтверждаете, что прочитали и принимаете указанные выше документы. Нажатие «Не согласен» закроет приложение.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Не согласен", // 不同意 "agreeAndEnter": "Согласен и войти", // 同意并进入 @@ -218,55 +219,55 @@ const Map ruRU = { "scene": "Сценарий", // 用量统计模块 - "aiChat": "AI Chat", - "translationStats": "Translation Statistics", - "meetingStats": "Meeting Statistics", - "today": "Today", - "thisWeek": "This Week", - "thisMonth": "This Month", - "history": "History", - "currentSessionStats": "Current Session Stats", - "translationCount": "Translation Count", - "sessionDuration": "Session Duration", - "characters": "Characters", - "recordingDuration": "Recording Duration", - "totalApiCalls": "Total API Calls", - "sessionCount": "Session Count", - "totalCharacters": "Total Characters", - "apiCallStats": "API Call Stats", - "translationApi": "Translation API", + "aiChat": "Чат с AI", + "translationStats": "Статистика переводов", + "meetingStats": "Статистика встреч", + "today": "Сегодня", + "thisWeek": "Эта неделя", + "thisMonth": "Этот месяц", + "history": "История", + "currentSessionStats": "Статистика текущей сессии", + "translationCount": "Количество переводов", + "sessionDuration": "Длительность сессии", + "characters": "Символы", + "recordingDuration": "Длительность записи", + "totalApiCalls": "Всего вызовов API", + "sessionCount": "Количество сессий", + "totalCharacters": "Всего символов", + "apiCallStats": "Статистика вызовов API", + "translationApi": "API перевода", "asr": "ASR", "tts": "TTS", - "dataVolumeStats": "Data Volume Stats", - "sourceTextCharacters": "Source Text Characters", - "ttsTextCharacters": "TTS Text Characters", - "effectiveAudioDuration": "Effective Audio Duration", - "totalSessionDuration": "Total Session Duration", - "costStats": "Cost Stats", - "estimatedCost": "Estimated Cost", - "dailyCostThreshold": "Daily Cost Threshold", - "monthlyCostThreshold": "Monthly Cost Threshold", - "usageBehaviorStats": "Usage Behavior Stats", - "mostUsedLanguagePair": "Most-used language pair", - "mostUsedMode": "Most-used mode", - "asrApiCalls": "ASR Calls", - "totalAudioDuration": "Total Audio Duration", - "audioFileSize": "Audio File Size", - "transcriptBytes": "Transcript Bytes", - "loadFailed": "Load Failed", + "dataVolumeStats": "Статистика объёма данных", + "sourceTextCharacters": "Символы исходного текста", + "ttsTextCharacters": "Символы TTS", + "effectiveAudioDuration": "Эффективная длительность аудио", + "totalSessionDuration": "Общая длительность сессий", + "costStats": "Статистика затрат", + "estimatedCost": "Оценочная стоимость", + "dailyCostThreshold": "Дневной лимит затрат", + "monthlyCostThreshold": "Месячный лимит затрат", + "usageBehaviorStats": "Статистика использования", + "mostUsedLanguagePair": "Часто используемая языковая пара", + "mostUsedMode": "Часто используемый режим", + "asrApiCalls": "Вызовы ASR", + "totalAudioDuration": "Общая длительность аудио", + "audioFileSize": "Размер аудиофайла", + "transcriptBytes": "Байты транскрипта", + "loadFailed": "Не удалось загрузить", "statsLoadFailedTryLater": - "Statistics failed to load. Please try again later.", - "cleanupComplete": "Cleanup Complete", - "cleanedOldData": "Cleaned data older than 90 days", - "exportFeature": "Export Feature", - "exportInDevelopment": "Data export is under development", + "Не удалось загрузить статистику. Попробуйте позже.", + "cleanupComplete": "Очистка завершена", + "cleanedOldData": "Удалены данные старше 90 дней", + "exportFeature": "Экспорт", + "exportInDevelopment": "Экспорт данных в разработке", // 商品模块 - 通用 - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', + 'availablePackages': 'Доступные пакеты', + 'remainingQuota': 'Оставшаяся квота', + 'totalQuota': 'Общая квота', + 'remaining': 'Осталось', + 'featureDescription': 'Описание функций', 'paymentSuccess': 'Оплата прошла успешно', 'paymentFailed': 'Оплата не удалась', 'gotIt': 'Понятно', @@ -324,45 +325,48 @@ const Map ruRU = { 'alipayPaymentLaunchFailed': 'Не удалось запустить Alipay', 'cannotLaunchAlipayPayment': 'Невозможно запустить Alipay', 'alipayPaymentException': 'Ошибка Alipay', - "insufficientIntegral": "Insufficient integral", + "insufficientIntegral": "Недостаточно баллов", "insufficientBalanceDesc": - "Insufficient balance, please go to the corresponding recharge page to recharge.", - "recharge": "Go to Recharge", + "Недостаточно средств, перейдите на соответствующую страницу пополнения.", + "recharge": "Перейти к пополнению", "aiMemberExpiredDesc": - "AI membership expired, please go to the membership recharge page to renew.", + "Подписка AI истекла, перейдите на страницу продления подписки.", // 商品模块 - AI商品页 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', + 'musicAndRecommendation': 'Музыка и рекомендации', + 'navigationAndRoutes': 'Навигация и маршруты', + 'nearbySearch': 'Поиск рядом', + 'newsInformation': 'Новости', + 'communicationAssistant': 'Ассистент общения', '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', + 'Подходит для вопросов к агенту, суммаризации, анализа и выполнения задач.', + 'musicSearchPlaybackControl': + 'Поиск по музыкальной библиотеке и управление воспроизведением', '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', + 'Планирование маршрута и объезд пробок', + 'voiceBroadcastAndWaypoints': + 'Голосовые подсказки и настройки точек маршрута', + 'realTimeWeatherForecast': 'Погода и прогноз в реальном времени', + 'clothingAdviceAndTravelReminders': 'Советы по одежде и напоминания в пути', + 'poiSearchFoodGasParking': 'Поиск POI: еда / заправки / парковка', + 'ratingsHoursAndDirectRoutes': 'Рейтинги, часы работы и построение маршрута', + 'hotNewsAndTopicOverview': 'Горячие новости и обзор тем', + 'longArticleSummariesAndKeyPoints': + 'Сводка длинных статей и ключевые моменты', + 'helpCallAndSMS': 'Помощь со звонками и SMS', 'templatedMessagesAndScheduleReminders': - 'Template messages and schedule reminders', + 'Шаблонные сообщения и запланированные напоминания', 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', + 'Функции зависят от разрешений устройства, доступности сервисов и условий сети.', // 商品模块 - 翻译商品页 - 'realtimeTranscription': 'Real-time Transcription', - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', + 'realtimeTranscription': 'Транскрипция в реальном времени', + 'sceneLexicon': 'Сценарный глоссарий', + 'subtitleDisplay': 'Субтитры', 'transHeaderDesc1': 'Синхронный перевод и перевод текста в реальном времени с низкой задержкой голосового озвучивания.', 'transHeaderDesc2': @@ -381,15 +385,15 @@ const Map ruRU = { 'Качество перевода зависит от микрофона, сетевой задержки и фонового шума.', // 商品模块 - 会议商品页 - 'meetingRecording': 'Meeting Recording', + 'meetingRecording': 'Запись встреч', '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', + 'meetingAutoRecording': 'Автозапись и сегментация', 'meetingSpeakerTagging': 'Speaker labeling', 'meetingLongAudioTranscription': 'Long audio transcription', 'meetingKeyPointSummary': 'Key point extraction', @@ -398,7 +402,7 @@ const Map ruRU = { 'meetingExportSummary': 'Export minutes', 'meetingMultiPlatformShare': 'Share across platforms', 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', + 'Используйте в тихой обстановке; качество зависит от микрофона и сети.', // 商品模块 - VIP会员页 'benefitsOverview': 'Обзор преимуществ', @@ -417,21 +421,21 @@ const Map ruRU = { 'Фактические преимущества зависят от деталей пакета и могут меняться с версиями.', // 商品模块 - 商品名称与描述 - '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', + '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': '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.', + '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 переводов (голос/текст).', @@ -443,27 +447,29 @@ const Map ruRU = { // 新手引导 'skip': 'Пропустить', - 'next': 'Next', - 'sayLilyHint': 'Say "Lily Lily" to the mic', - 'imHere': 'I’m here~', - 'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.', - 'aiReplyCompleted': 'Lily has finished the reply!', - 'aiThinking': 'Lily is thinking…', - 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', - 'confirmInput': 'Confirm Input', - 'guideClickSendPrefix': 'Tap send, ', - 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', - 'guideWeatherInput': 'What’s the weather today?', - 'guideWeatherSend': 'Lily will report the weather in real time', - 'guideWeatherEnd': 'Lily can report weather live—try other commands', - 'guideMusicStart': 'Tell Lily: “Play some rock music”', - 'guideMusicInput': 'Play some rock music', - 'guideMusicSend': 'Lily will find music for you', - 'guideMusicEnd': 'Lily found music—try other commands', - 'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”', - 'guideNavInput': 'Navigate to Shenzhen Airport', - 'guideNavSend': 'Lily will plan the route', - 'guideNavEnd': 'Navigation set—try other commands', + 'next': 'Далее', + 'sayLilyHint': 'Скажите в микрофон «Lily Lily»', + 'imHere': 'Я здесь~', + 'guideWelcomeWakeAI': + 'Добро пожаловать в Voitrans! Сначала разбудите ваш AI «Lily».', + 'aiReplyCompleted': 'Lily завершила ответ!', + 'aiThinking': 'Lily думает…', + 'guideAwakenSuccess': 'Отлично! Lily проснулась — попросите помочь.', + 'confirmInput': 'Подтвердить ввод', + 'guideClickSendPrefix': 'Нажмите «Отправить», ', + 'guideWeatherStart': 'Скажите Lily: «Какая сегодня погода?»', + 'guideWeatherInput': 'Какая сегодня погода?', + 'guideWeatherSend': 'Lily сообщит погоду в реальном времени', + 'guideWeatherEnd': + 'Lily может сообщать погоду в реальном времени — попробуйте другие команды', + 'guideMusicStart': 'Скажите Lily: «Включи рок-музыку»', + 'guideMusicInput': 'Включи рок-музыку', + 'guideMusicSend': 'Lily подберет музыку для вас', + 'guideMusicEnd': 'Lily нашла музыку — попробуйте другие команды', + 'guideNavStart': 'Скажите Lily: «Построй маршрут до аэропорта Шэньчжэнь»', + 'guideNavInput': 'Построй маршрут до аэропорта Шэньчжэнь', + 'guideNavSend': 'Lily спланирует маршрут', + 'guideNavEnd': 'Навигация настроена — попробуйте другие команды', 'guideMeetingStart': 'Tell Lily: “Create a meeting reminder for 3pm tomorrow”', 'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow', @@ -490,38 +496,38 @@ const Map ruRU = { 'recordingDetails': 'Детали записи', 'aiSummary': 'AI-резюме', 'meetingTranscript': 'Транскрипт встречи', - 'files': 'Files', - 'mine': 'Mine', - 'connect': 'Connect', - 'allFiles': 'All Files', - 'searchInAllFiles': 'Search in all files', - 'from': 'From', - 'sortBy': 'Sort by', - 'creationTime': 'Creation Time', - 'bluetoothConnection': 'Bluetooth Connection', - 'meetingReconnect': 'Reconnect', - 'searching': 'Searching...', - 'searchFailed': 'Search failed, please check if Bluetooth is enabled', - 'aiPenNotFound': 'AI PEN device not found', - 'connectedToAiPen': 'Connected to AI PEN device', - 'checkingNewFiles': 'Checking for new files to import', - 'startingWifi': 'Starting Wi-Fi...', - 'newFilesDetected': 'New files detected, preparing to import', - 'noNewFiles': 'No new files to import', - 'connectingWifi': 'Connecting to Wi-Fi...', - 'wifiConnected': 'Wi-Fi connected successfully', - 'downloadingFiles': 'Downloading files...', - 'downloadingFileProgress': 'Total {total} files, downloading file {current}', - 'downloadComplete': 'Download complete', + 'files': 'Файлы', + 'mine': 'Мои', + 'connect': 'Подключить', + 'allFiles': 'Все файлы', + 'searchInAllFiles': 'Искать во всех файлах', + 'from': 'От', + 'sortBy': 'Сортировать по', + 'creationTime': 'Время создания', + 'bluetoothConnection': 'Bluetooth‑подключение', + 'meetingReconnect': 'Переподключиться', + 'searching': 'Поиск...', + 'searchFailed': 'Поиск не удался, проверьте, включён ли Bluetooth', + 'aiPenNotFound': 'Устройство AI PEN не найдено', + 'connectedToAiPen': 'Подключено к AI PEN', + 'checkingNewFiles': 'Проверка новых файлов для импорта', + 'startingWifi': 'Запуск Wi‑Fi...', + 'newFilesDetected': 'Найдены новые файлы, подготовка к импорту', + 'noNewFiles': 'Нет новых файлов для импорта', + 'connectingWifi': 'Подключение к Wi‑Fi...', + 'wifiConnected': 'Wi‑Fi подключён успешно', + 'downloadingFiles': 'Загрузка файлов...', + 'downloadingFileProgress': 'Всего {total} файлов, загружается файл {current}', + 'downloadComplete': 'Загрузка завершена', 'downloadCompleteInfo': - 'Download complete, {count} files in total, returning automatically in 2 seconds', + 'Загрузка завершена, всего {count} файлов, возврат автоматически через 2 секунды', // Meeting模块 - 录音功能 - 'startRecording': 'Start Recording', - 'liveRecording': 'Live Recording', - 'audioVideoRecording': 'Audio/Video Recording', - 'callRecording': 'Call Recording', - 'importAudio': 'Import Audio', + 'startRecording': 'Начать запись', + 'liveRecording': 'Запись в реальном времени', + 'audioVideoRecording': 'Запись аудио/видео', + 'callRecording': 'Запись звонка', + 'importAudio': 'Импорт аудио', 'meetingRecordExitTitle': 'Выйти из записи', // 退出录音 'meetingRecordExitMessage': 'Пожалуйста, выберите действие после выхода', // 请选择离开后的操作 @@ -586,30 +592,31 @@ const Map ruRU = { 'custom': 'Пользовательский', 'pleaseEnter': 'Пожалуйста, введите', 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', + 'recordingLanguage': 'Язык записи', '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.', + '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', + 'importingLocalRecordings': 'Импорт локальных записей...', + 'importFailed': 'Не удалось импортировать файл: {filePath}, ошибка: {error}', + 'importSuccess': 'Успешно импортировано локальных записей: {count}', + 'importError': 'Импорт не удался: {error}', + 'pleaseSelectAudioFile': 'Пожалуйста, выберите аудиофайл', 'shareAudio': 'Share Meeting Audio', 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + 'shareFailed': 'Не удалось поделиться: {error}', + 'fileProcessingFailed': + 'Не удалось обработать файл: {filePath}, ошибка: {error}', // Meeting模块 - 思维导图 'saveMindMap': 'Сохранить интеллект-карту', 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', + 'shareSuccess': 'Успешно поделились', // Meeting模块 - AI问答 'askAI': 'Ask AI ...', @@ -645,26 +652,27 @@ const Map ruRU = { // Meeting模块 - 云端同步 'syncToCloud': 'Sync to Cloud', 'syncToCloudTip': - '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', + 'Автоматически синхронизируйте записи с облаком — вы сможете воспроизводить, управлять и делиться ими через любое приложение VOITRANS или VOITRANS Web (web.voitrans.com).', 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', + 'transcriptionRecord': 'Запись транскрипции', // Meeting模块 - 我的页面 - 'transcriptionRecords': 'Transcription Records', + 'transcriptionRecords': 'Записи транскрипции', 'templateCommunity': 'Template Community', 'comingSoon': 'Coming Soon', 'integration': 'Integration', 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', - 'enabled': 'Enabled', - 'disabled': 'Disabled', - 'myVoitransDevice': 'My VOITRANS Device', + 'enabled': 'Включено', + 'disabled': 'Выключено', + 'myVoitransDevice': 'Моё устройство VOITRANS', 'helpAndFeedback': 'Help & Feedback', 'aboutVoitrans': 'About VOITRANS', 'meetingDays': 'Days', 'meetingHours': 'Hours', 'voitransAiMember': 'Voitrans AI Member', 'unlockStarterMember': 'Unlock Starter Member', - 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', + 'bindDeviceToActivate': + 'Привяжите устройство Voitrans, чтобы активировать подписку Starter', 'unlockNow': 'Unlock Now', // Meeting模块 - 会员与升级 @@ -688,7 +696,7 @@ const Map ruRU = { 'customTemplateDesc': 'You can customize summary prompts according to your needs and use them to generate the required summaries.', 'askAiDesc': - 'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.', + 'Умно извлекайте более глубокую информацию из записей, одним нажатием создавайте таблицы данных, ключевые выводы обсуждения, списки дел, письма‑отчеты и другой форматированный контент.', 'visualMindMapDesc': 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', 'templateCommunityDesc': @@ -696,13 +704,13 @@ const Map ruRU = { 'speakerIdentificationDesc': 'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.', 'privateCloudSyncDesc': - 'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.', + 'Ваши записи и транскрипции будут надежно храниться на выделенных облачных серверах с полным шифрованием при загрузке и скачивании для обеспечения конфиденциальности и безопасности.', '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.', + 'Экспортируйте аудиозаписи, текст транскрипции и сводки в разных форматах (TXT, PDF, JPEG) под ваши задачи.', 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -732,7 +740,7 @@ const Map ruRU = { 'purchase': 'Purchase', // Meeting模块 - 录音语言 - 'recordLanguage': 'Recording Language', + 'recordLanguage': 'Язык записи', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', @@ -759,10 +767,10 @@ const Map ruRU = { "translationRecharge": "Пополнение перевода", "meetingAssistantRecharge": "Пополнение помощника встречи", "cloudSync": "Пополнение синхронизации в облаке", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "memberService": "Сервис для участников", + "bindRewardTitle": "Награды", "bindRewardSimpleDesc": - "First bind device reward has been issued. Tap OK to close.", + "Награда за первое привязывание устройства начислена. Нажмите OK, чтобы закрыть.", "joinDevice": "Подключенное устройство:", "accountId": "ID аккаунта:", "systemSetting": "Системные настройки", @@ -812,19 +820,20 @@ const Map ruRU = { "loading": "Загрузка...", // 设备管理模块 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", - "deviceTypeSmartEye": "Smart Glasses", + "deviceTypeUnknown": "Неизвестное устройство", + "deviceTypeClassicBluetoothHeadset": "Классическая Bluetooth-гарнитура", + "deviceTypeBleBluetoothHeadset": "BLE Bluetooth-гарнитура", + "deviceTypeSmartVoiceRecorder": "Умный диктофон", + "deviceTypeSmartEye": "Умные очки", "unbind": "Отвязать", - "noDevicesBound": "No devices bound yet", - "pleaseBindDeviceFirst": "Please bind a device first to manage", - "noMacAddress": "No MAC Address", - "licenseCode": "License Code", - "confirmUnbind": "Confirm Unbind", - "confirmUnbindMessage": "Are you sure you want to unbind device \\", - "confirmUnbindAction": "Confirm Unbind", + "noDevicesBound": "Пока нет привязанных устройств", + "pleaseBindDeviceFirst": "Сначала привяжите устройство для управления", + "noMacAddress": "Нет MAC-адреса", + "licenseCode": "Лицензионный код", + "confirmUnbind": "Подтвердить отвязку", + "confirmUnbindMessage": + "Вы уверены, что хотите отвязать устройство \"{deviceName}\"?", + "confirmUnbindAction": "Подтвердить отвязку", // Agent模块 - 主界面 "Lily": "Lily", @@ -854,31 +863,31 @@ const Map ruRU = { "loadMoreMessages": "Загрузить еще сообщения...", "loadFailedClickRetry": "Не удалось загрузить, нажмите, чтобы повторить", "swipeUpForMore": "Проведите пальцем вверх, чтобы увидеть больше", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 + "callingTool": "Помогаю вам, подождите!", // 正在帮您,请稍等! + "voice_interrupt": "Прервать", // 语音打断 'voice_interrupt_tip': 'При включении: ИИ не будет прерываться вашим голосом во время ответа и сможет обрабатывать только один раунд разговора за раз. Чтобы начать новый раунд, просто произнесите слово активации.', // Agent模块 - 预设提示词 - "presetMusic": "Play some music", // 来点音乐 - "presetNavigation": "Navigation to", // 导航 - "presetWeather": "Today's weather", // 今日天气 - "presetNews": "Today's news", // 今日新闻 - "presetFood": "Nearby food", // 美食 - "playSomeMusic": "Play some popular music", // 播放一些流行音乐 - "navigationTo": "Please help me navigate to", // 导航到 - "todayWeather": "How's the weather today?", // 今日天气 - "todayNews": "What's the news today?", // 今日新闻 - "nearbyFood": "What delicious food is nearby?", // 美食 + "presetMusic": "Включи музыку", // 来点音乐 + "presetNavigation": "Навигация до", // 导航 + "presetWeather": "Погода сегодня", // 今日天气 + "presetNews": "Новости сегодня", // 今日新闻 + "presetFood": "Еда рядом", // 美食 + "playSomeMusic": "Включи популярную музыку", // 播放一些流行音乐 + "navigationTo": "Пожалуйста, помоги проложить маршрут до", // 导航到 + "todayWeather": "Какая сегодня погода?", // 今日天气 + "todayNews": "Какие сегодня новости?", // 今日新闻 + "nearbyFood": "Какая вкусная еда есть рядом?", // 美食 // Agent模块 - 欢迎消息与权限 - 'welcomeMessage': '你好!我是**Lily**,我能帮你:\n\n' - '• 回答问题和提供信息\n\n' - '• 实时语音翻译\n\n' - '• 推荐音乐和播客\n\n' - '• 语音备忘录和提醒\n\n' - '• 控制耳机功能\n\n' - '有什么我可以帮你的吗?', + 'welcomeMessage': 'Привет! Я **Лили**.\n\n' + '• Отвечу на вопросы и предоставлю информацию\n\n' + '• Переведу речь в режиме реального времени\n\n' + '• Порекомендую музыку и подкасты\n\n' + '• Голосовые заметки и напоминания\n\n' + '• Управлю функциями наушников\n\n' + 'Чем я могу тебе помочь?', // 有什么我可以帮你的吗? 'microphonePermission': 'Микрофон', 'voiceRecognitionPermissionText': 'Для распознавания речи требуется доступ к микрофону.', @@ -1016,8 +1025,8 @@ const Map ruRU = { "strongWind": "Сильный ветер", // 翻译模块 - 中间层 - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", + "pictureTranslation": "Перевод изображений", + "textTranslation": "Текстовый перевод", // 翻译模块 - 主页 "translationHistory": "История переводов", @@ -1027,14 +1036,14 @@ const Map ruRU = { "phoneUser": "Пользователь телефона", "selectSourceLanguage": "Выберите исходный язык", "selectTargetLanguage": "Выберите целевой язык", - "me": "Me", - "counterPart": "Counterpart", + "me": "Я", + "counterPart": "Собеседник", "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - "autoDetect": "Auto Detect", // 自动检测 + "Убедитесь, что Bluetooth-гарнитура подключена к телефону и идет звонок", + "autoDetect": "Автоопределение", // 自动检测 // 翻译模块 - 文本翻译 - "languageDetectionFailed": "Language detection failed", + "languageDetectionFailed": "Не удалось определить язык", // 翻译模块 - 悬浮窗与权限 'disableFloatingWindow': 'Отключить плавающее окно', @@ -1043,17 +1052,17 @@ const Map ruRU = { 'micPermissionRequiredForRecording': 'Для записи требуется разрешение микрофона', 'deleteTranslationRecordError': 'Ошибка при удалении записи перевода: @error', - "translationFailed": "Translation failed", + "translationFailed": "Перевод не удался", "translating": "Перевод", "translate": "Перевести", - "pleaseInputText": "Please input text", + "pleaseInputText": "Введите текст", "inputTextToTranslate": "Введите текст для перевода", - "textTooLong": "Text too long, max 5000 characters", + "textTooLong": "Текст слишком длинный, максимум 5000 символов", // 翻译模块 - 历史记录 "noTranslationHistory": "История отсутствует", - "historyRecords": "History Records", - "clearResults": "Clear Results", + "historyRecords": "История записей", + "clearResults": "Очистить результаты", "clearHistory": "Очистить историю", "clearHistoryConfirm": "Вы уверены, что хотите очистить всю историю переводов? Это действие необратимо.", @@ -1063,55 +1072,55 @@ const Map ruRU = { "Вы уверены, что хотите удалить все записи переводов этой сессии? Это действие необратимо.", // 翻译模块 - 图片翻译 - "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", + "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": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", + "Обработка изображения или перевод не удались. Повторите попытку.\nОшибка: {error}", + "imageTooLarge": "Размер изображения превышает лимит 4 МБ", "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", + "Размер изображения превышает 4 МБ. Уменьшите качество или размеры и повторите", + "emptyTranslationResult": "API перевода изображений вернул пустой результат", "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", + "Исключение API перевода изображений. Проверьте сеть и повторите", + "permissionRequired": "Требуется разрешение", + "cameraPermissionRequired": "Для съемки требуется разрешение камеры", "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", + "Для выбора изображений требуется разрешение на фотоальбом", + "translationDetails": "Детали перевода", + "originalImage": "Оригинальное изображение", + "sourceLanguage": "Исходный язык", + "targetLanguage": "Целевой язык", + "translationTime": "Время перевода", + "shareInDevelopment": "Функция обмена в разработке", // 翻译模块 - 录音文件 "translateAudioFiles": "Перевести аудиофайлы", @@ -1209,32 +1218,32 @@ const Map ruRU = { 'Служба аккаунтов инициализирована', // AccountService 已初始化 // 权限模块 - 'meetingStoragePermission': 'Storage', + 'meetingStoragePermission': 'Хранилище', 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', + 'Нам нужен доступ к хранилищу, чтобы вы могли выбирать и загружать аудиофайлы.', 'meetingStoragePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', + 'Обнаружено, что вы навсегда отказали в доступе к хранилищу. Чтобы продолжить использовать эту функцию, откройте настройки приложения и включите разрешение вручную.', 'getPermissionStatusFailed': 'Не удалось получить статус разрешений', 'communicationPermissions': 'Разрешения на связь', - 'bluetoothPermissions': 'Bluetooth Permissions', - 'notificationPermissions': 'Notification Permissions', - 'storagePermissions': 'Storage Permissions', - 'microphonePermissions': 'Microphone Permissions', - 'alarmPermissions': 'Alarm Permissions', + 'bluetoothPermissions': 'Разрешения Bluetooth', + 'notificationPermissions': 'Разрешения уведомлений', + 'storagePermissions': 'Разрешения хранилища', + 'microphonePermissions': 'Разрешения микрофона', + 'alarmPermissions': 'Разрешения будильника', 'calendarPermissions': 'Разрешения календаря', 'locationPermissions': 'Разрешения на местоположение', 'phone': 'Телефон', 'sms': 'SMS', - 'contacts': 'Contacts', - 'notification': 'Notification', - 'alarm': 'Alarm', + 'contacts': 'Контакты', + 'notification': 'Уведомления', + 'alarm': 'Будильник', 'calendarWrite': 'Запись в календарь', 'calendarFullAccess': 'Полный доступ к календарю', 'locationInfo': 'Информация о местоположении', 'phonePermissionDesc': 'Используется для совершения звонков', 'smsPermissionDesc': 'Используется для отправки SMS', 'alarmPermissionDesc': - 'Used to set exact alarms to ensure reminders trigger on time', + 'Используется для установки точных будильников, чтобы напоминания срабатывали вовремя', 'calendarWritePermissionDesc': 'Используется для создания событий и напоминаний в календаре', 'calendarFullAccessPermissionDesc': @@ -1254,72 +1263,74 @@ const Map ruRU = { 'smsPermissionDetailDesc': 'Для функции отправки SMS требуется разрешение на доступ к SMS', 'alarmPermissionDetailDesc': - 'This permission is required to set exact alarms and ensure reminders trigger on time', + 'Это разрешение требуется для установки точных будильников и своевременного срабатывания напоминаний', 'calendarWritePermissionDetailDesc': 'Для создания событий в календаре требуется разрешение на запись в календарь', 'calendarFullAccessPermissionDetailDesc': 'Для управления событиями в календаре требуется полный доступ к календарю', 'locationPermissionDetailDesc': 'Для получения информации о местоположении требуется разрешение на доступ к местоположению', - 'contactsPermissionDesc': 'Used for accessing contact information', + 'contactsPermissionDesc': 'Используется для доступа к контактной информации', 'contactsPermissionDetailDesc': - 'Phone call and SMS functionality requires contacts permission to select contacts', + 'Для звонков и SMS требуется доступ к контактам, чтобы выбирать получателей', 'bluetoothPermissionDesc': - 'Used for connecting and managing Bluetooth devices', + 'Используется для подключения и управления Bluetooth-устройствами', 'bluetoothPermissionDetailDesc': - 'Connecting to Bluetooth headphones and other devices requires Bluetooth permission', - 'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices', + 'Для подключения Bluetooth-наушников и других устройств требуется разрешение Bluetooth', + 'bluetoothScanPermissionDesc': + 'Используется для сканирования Bluetooth-устройств поблизости', 'bluetoothScanPermissionDetailDesc': - 'Scanning for nearby Bluetooth devices requires Bluetooth scan permission', - 'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices', + 'Для сканирования Bluetooth-устройств поблизости требуется разрешение на сканирование Bluetooth', + 'bluetoothConnectPermissionDesc': + 'Используется для подключения к Bluetooth-устройствам', 'bluetoothConnectPermissionDetailDesc': - 'Connecting to Bluetooth devices requires Bluetooth connect permission', - 'notificationPermissionDesc': 'Used for sending notification messages', + 'Для подключения к Bluetooth-устройствам требуется разрешение на подключение Bluetooth', + 'notificationPermissionDesc': 'Используется для отправки уведомлений', 'notificationPermissionDetailDesc': - 'App needs notification permission to send you important alerts and messages', + 'Приложению нужно разрешение на уведомления, чтобы отправлять важные оповещения и сообщения', 'appNeedsPermissionForFullFunction': 'Приложению требуется это разрешение для предоставления полной функциональности', 'permanentDenialText': 'Вы навсегда отказали в доступе к {permission}, пожалуйста, перейдите в настройки приложения, чтобы включить его', 'goToSettings': 'Перейти в настройки', - 'bluetoothScan': 'Bluetooth Scan', - 'bluetoothConnect': 'Bluetooth Connect', + 'bluetoothScan': 'Сканирование Bluetooth', + 'bluetoothConnect': 'Подключение Bluetooth', 'bluetoothScanExplanation': - 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', + 'Приложению нужно разрешение на сканирование Bluetooth для поиска устройств поблизости.', 'bluetoothConnectExplanation': - 'The app needs Bluetooth connect permission to connect to Bluetooth devices.', + 'Приложению нужно разрешение на подключение Bluetooth, чтобы подключаться к устройствам.', 'locationForBluetoothExplanation': - 'The app needs location permission to scan Bluetooth devices.', + 'Приложению нужно разрешение на местоположение для сканирования Bluetooth-устройств.', 'bluetoothScanPermanentDenial': - 'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.', + 'Разрешение на сканирование Bluetooth навсегда отклонено, включите его вручную в настройках.', 'bluetoothConnectPermanentDenial': - 'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.', + 'Разрешение на подключение Bluetooth навсегда отклонено, включите его вручную в настройках.', 'locationPermanentDenial': - 'Location permission has been permanently denied, please go to settings to enable it manually.', - 'notificationPermission': 'Notification', - 'locationPermission': 'Location', + 'Разрешение на местоположение навсегда отклонено, включите его вручную в настройках.', + 'notificationPermission': 'Уведомления', + 'locationPermission': 'Местоположение', 'notificationPermissionExplanation': - 'Notification permission is required to display music playback status.', + 'Разрешение на уведомления требуется для отображения статуса воспроизведения музыки.', '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.', - 'storagePermission': 'Storage', + 'Вы навсегда отказали в разрешении на местоположение, включите его в настройках.', + 'storagePermission': 'Хранилище', 'microphonePermissionExplanation': - 'We need microphone permission to record audio content.', + 'Нам нужно разрешение микрофона для записи аудио.', 'storagePermissionExplanation': - 'We need storage permission so you can select and upload audio files.', + 'Нам нужно разрешение хранилища, чтобы вы могли выбирать и загружать аудиофайлы.', 'microphonePermissionPermanentDenial': - '检测到您已永久拒绝录音权限。如需继续使用此功能,请前往应用设置中手动开启麦克风权限。', + 'Обнаружено, что вы навсегда отказали в доступе к микрофону. Чтобы продолжить использовать эту функцию, откройте настройки приложения и включите разрешение микрофона вручную.', 'storagePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', + 'Обнаружено, что вы навсегда отказали в доступе к хранилищу. Чтобы продолжить использовать эту функцию, откройте настройки приложения и включите разрешение хранилища вручную.', + 'permissionUtilNeed': 'Нужно ', + 'permissionUtilPermission': ' разрешение', + 'permissionUtilRestricted': ' разрешение ограничено', 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'Эта функция недоступна или ограничена на текущем устройстве. Проверьте настройки устройства или системные ограничения.', 'permissionUtilConfirm': 'OK', // 原生前台服务通知(Android) @@ -1412,27 +1423,27 @@ const Map ruRU = { 'bleConnectionFailed': 'Не удалось подключиться через BLE', 'deviceAuthorizationFailedCheckCode': 'Ошибка авторизации устройства, проверьте код авторизации', - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + 'bluetoothGuideTitle': 'Требуется ручное включение Bluetooth', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'Выполните следующие шаги:', // 请按照以下步骤操作: 'bluetoothGuideStep1': - 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'Включите Bluetooth: Настройки → Bluetooth → Включить', // 开启蓝牙:设置 → 蓝牙 → 开启 'bluetoothGuideStep2': - 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'Подключите устройство: найдите устройство в «Мои устройства» и нажмите, чтобы подключиться', // 连接设备:在"我的设备"中找到您的设备并点击连接 'bluetoothGuideStep3': - 'Return to app to continue pairing process', // 返回应用继续配对流程 + 'Вернитесь в приложение, чтобы продолжить сопряжение', // 返回应用继续配对流程 'bluetoothGuideTip': - 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': 'I Know', // 我知道了 + 'Совет: можно также удерживать значок Bluetooth в Пункте управления, чтобы быстро открыть настройки Bluetooth', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + '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:", + "firstBindRewardTitle": "Приветственный бонус", + "firstBindRewardDesc": "Вы получили бонус за привязку устройства.", + "vipLevelLabel": "Уровень VIP:", + "expiryLabel": "Срок действия:", + "notActivated": "Не активировано", + "aiChatCreditsLabel": "Кредиты чата AI:", + "translationCreditsLabel": "Кредиты перевода:", + "meetingCreditsLabel": "Кредиты встреч:", "ok": "OK", // 用户反馈模块 @@ -1463,13 +1474,14 @@ const Map ruRU = { "connectionFailed": "Ошибка подключения", "retryConnection": "Повторить подключение", "ota_updateNow": "Обновить сейчас", - "otaVersionInfoFailed": "Failed to get version info. Please try again later.", + "otaVersionInfoFailed": + "Не удалось получить информацию о версии. Попробуйте еще раз позже.", "otaDeviceInfoUnavailable": - "Unable to get device info. Please check the connection and retry.", + "Не удалось получить информацию об устройстве. Проверьте подключение и повторите.", "otaProductInfoUnavailable": - "Unable to identify the device. Please reconnect and retry.", + "Не удалось определить устройство. Подключитесь снова и повторите.", "otaFirmwareVersionInvalid": - "Firmware version is abnormal. Please reconnect and retry.", + "Некорректная версия прошивки. Подключитесь снова и повторите.", "keepConnectedDontClose": "Пожалуйста, держите устройство подключенным, не закрывайте приложение", "doNotDisconnect": "Пожалуйста, не отключайтесь", @@ -1496,7 +1508,7 @@ const Map ruRU = { 'Требуется BLE-подключение\nУбедитесь, что устройство подключено, и повторите', 'otaDeviceInfoUnavailableTitle': 'Информация об устройстве недоступна', 'otaCannotGetDeviceInfo': - 'Cannot get device info\nPlease reconnect device or try again later', + 'Не удаётся получить информацию об устройстве\nПереподключите устройство или попробуйте позже', 'otaBleCheckFailed': 'Проверка BLE-соединения не удалась', 'otaCannotGetDeviceInfoCheckConnection': 'Не удаётся получить информацию, проверьте подключение', diff --git a/lib/core/translations/language/sk_sk.dart b/lib/core/translations/language/sk_sk.dart index 9ba45053b..6395db155 100644 --- a/lib/core/translations/language/sk_sk.dart +++ b/lib/core/translations/language/sk_sk.dart @@ -1,3 +1,4 @@ +// 斯洛伐克-斯洛伐克语 const Map skSK = { // 通用 'continue': 'Pokračovať', @@ -18,11 +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", + "justNow": "Teraz", + "minutesAgo": "@minutes minút pred", + "yesterday": "Včera", + "daysAgo": "@days dní pred", + "hoursAgo": "@hours hodín pred", // 启动页 "slogan": "Pripájanie sveta, za hranicami zvuku", @@ -110,7 +111,7 @@ const Map skSK = { "welcomeToThisApp": "Vitajte v Voitrans, prečítajte si prosím pozorne", // 欢迎使用Voitrans,请充分阅读 "privacyPolicyText": - ",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 + ", Klepnutím na „Súhlasím a vstúpiť“ potvrdzujete, že ste si prečítali a súhlasíte s vyššie uvedenými zmluvami. Klepnutím na „Nesúhlasím“ sa aplikácia ukončí.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Nesúhlasím", // 不同意 "agreeAndEnter": "Súhlasím a vstúpiť", // 同意并进入 @@ -169,27 +170,27 @@ const Map skSK = { 'checkConnectionStatusFailed': 'Kontrola stavu pripojenia zlyhala', // 蓝牙扫描模块 - 'bleInitFailedWithError': 'Bluetooth initialization failed: @error', + 'bleInitFailedWithError': 'Inicializácia Bluetooth zlyhala: @error', 'needBluetoothAndLocationPermission': - 'Bluetooth and location permissions are required to scan devices', - 'permissionRequestFailedWithError': 'Permission request failed: @error', - 'needPermission': 'Permission Required', + 'Na vyhľadávanie zariadení sú potrebné povolenia Bluetooth a polohy', + 'permissionRequestFailedWithError': 'Žiadosť o povolenie zlyhala: @error', + 'needPermission': 'Vyžaduje sa povolenie', 'blePermissionDialogContent': - 'This app requires Bluetooth and location permissions to scan devices. Please enable them in Settings.', - 'needEnableBluetooth': 'Enable Bluetooth', + 'Táto aplikácia potrebuje povolenia Bluetooth a polohy na vyhľadávanie zariadení. Povoľte ich v Nastaveniach.', + 'needEnableBluetooth': 'Zapnúť Bluetooth', 'enableBluetoothDialogContent': - 'Please enable Bluetooth to scan and connect devices.', - 'bleScanFailedWithError': 'Scan failed: @error', - 'bleConnectionSuccess': 'Connection Successful', - 'bleConnectedToDevice': 'Connected to @device', - 'bleConnectionFailedWithError': 'Connection failed: @error', - 'bleDisconnected': 'Disconnected', - 'bleDeviceDisconnected': 'Device disconnected', - 'bleDisconnectFailedWithError': 'Disconnect failed: @error', - 'signalStrong': 'Strong', - 'signalMedium': 'Medium', - 'signalWeak': 'Weak', - 'signalVeryWeak': 'Very Weak', + 'Zapnite Bluetooth, aby ste mohli vyhľadávať a pripájať zariadenia.', + 'bleScanFailedWithError': 'Skenovanie zlyhalo: @error', + 'bleConnectionSuccess': 'Pripojenie úspešné', + 'bleConnectedToDevice': 'Pripojené k @device', + 'bleConnectionFailedWithError': 'Pripojenie zlyhalo: @error', + 'bleDisconnected': 'Odpojené', + 'bleDeviceDisconnected': 'Zariadenie odpojené', + 'bleDisconnectFailedWithError': 'Odpojenie zlyhalo: @error', + 'signalStrong': 'Silný', + 'signalMedium': 'Stredný', + 'signalWeak': 'Slabý', + 'signalVeryWeak': 'Veľmi slabý', // 发现页 "searchAi": "Hľadať AI funkcie...", @@ -219,22 +220,22 @@ const Map skSK = { // 用量统计模块 "aiChat": "AI Chat", - "translationStats": "Translation Statistics", - "meetingStats": "Meeting Statistics", - "today": "Today", - "thisWeek": "This Week", - "thisMonth": "This Month", - "history": "History", - "currentSessionStats": "Current Session Stats", - "translationCount": "Translation Count", - "sessionDuration": "Session Duration", - "characters": "Characters", - "recordingDuration": "Recording Duration", - "totalApiCalls": "Total API Calls", - "sessionCount": "Session Count", - "totalCharacters": "Total Characters", - "apiCallStats": "API Call Stats", - "translationApi": "Translation API", + "translationStats": "Štatistika prekladu", + "meetingStats": "Štatistika stretnutí", + "today": "Dnes", + "thisWeek": "Tento týždeň", + "thisMonth": "Tento mesiac", + "history": "História", + "currentSessionStats": "Štatistika aktuálnej relácie", + "translationCount": "Počet prekladov", + "sessionDuration": "Trvanie relácie", + "characters": "Znaky", + "recordingDuration": "Trvanie nahrávania", + "totalApiCalls": "Celkový počet volaní API", + "sessionCount": "Počet relácií", + "totalCharacters": "Celkový počet znakov", + "apiCallStats": "Štatistika volaní API", + "translationApi": "API prekladu", "asr": "ASR", "tts": "TTS", "dataVolumeStats": "Data Volume Stats", @@ -253,9 +254,9 @@ const Map skSK = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - "loadFailed": "Load Failed", + "loadFailed": "Načítanie zlyhalo", "statsLoadFailedTryLater": - "Statistics failed to load. Please try again later.", + "Štatistiky sa nepodarilo načítať. Skúste to znova neskôr.", "cleanupComplete": "Cleanup Complete", "cleanedOldData": "Cleaned data older than 90 days", "exportFeature": "Export Feature", @@ -327,10 +328,10 @@ const Map skSK = { 'alipayPaymentException': 'Výnimka Alipay', "insufficientIntegral": "Insufficient integral", "insufficientBalanceDesc": - "Insufficient balance, please go to the corresponding recharge page to recharge.", + "Nedostatočný zostatok, prejdite na príslušnú stránku dobitia a dobite si.", "recharge": "Go to Recharge", "aiMemberExpiredDesc": - "AI membership expired, please go to the membership recharge page to renew.", + "Členstvo AI vypršalo, prejdite na stránku dobitia členstva a obnovte ho.", // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', @@ -358,18 +359,18 @@ const Map skSK = { 'templatedMessagesAndScheduleReminders': 'Template messages and schedule reminders', 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', + 'Funkcie závisia od povolení zariadenia, dostupnosti služby a sieťových podmienok.', // 商品模块 - 翻译商品页 'realtimeTranscription': 'Real-time Transcription', 'sceneLexicon': 'Scenario Glossary', 'subtitleDisplay': 'Subtitles', 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'Simultánne tlmočenie a textový preklad v reálnom čase s nízkou latenciou hlasu.', 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', + 'translateZhEn': 'Preklad čínština–angličtina', 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', + 'multiLangTextTranslation': 'Viacjazyčný textový preklad', 'termOptimizationContextPreserve': 'Terminology optimization and context preservation', 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', @@ -377,18 +378,18 @@ const Map skSK = { 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', 'colorHighContrast': 'High color contrast', 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', + 'Výkon prekladu závisí od mikrofónu, latencie siete a okolitého hluku.', // 商品模块 - 会议商品页 - 'meetingRecording': 'Meeting Recording', + 'meetingRecording': 'Záznam stretnutia', 'transcriptionAndSummary': 'Transcription & Summary', 'keywordSearch': 'Keyword Search', 'collaborationSharing': 'Collaboration & Sharing', 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'Nahrávanie zvuku, prepis, vyhľadávanie kľúčových slov a automatické zhrnutie na zvýšenie efektivity stretnutí.', 'meetingHeaderDesc2': 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingAutoRecording': 'Automatické nahrávanie a segmentácia', 'meetingSpeakerTagging': 'Speaker labeling', 'meetingLongAudioTranscription': 'Long audio transcription', 'meetingKeyPointSummary': 'Key point extraction', @@ -397,7 +398,7 @@ const Map skSK = { 'meetingExportSummary': 'Export minutes', 'meetingMultiPlatformShare': 'Share across platforms', 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', + 'Používajte v tichom prostredí; výkon závisí od mikrofónu a siete.', // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', @@ -411,7 +412,7 @@ const Map skSK = { 'longTermDiscountPlan': 'Long-term discount plan', 'generalPrivileges': 'General privileges', 'earlyAccessNewFeatures': 'Early access to new features', - 'crossDeviceSync': 'Cross-device sync', + 'crossDeviceSync': 'Synchronizácia medzi zariadeniami', 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', @@ -422,18 +423,18 @@ const Map skSK = { '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', + 'trans_001_name': 'Preklad Základ 100', + 'trans_002_name': 'Preklad Základ 500', + 'trans_003_name': 'Preklad Základ 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).', + 'meet_001_desc': 'Obsahuje 100 nahrávok/prepisov stretnutí.', + 'meet_002_desc': 'Obsahuje 500 nahrávok/prepisov stretnutí.', + 'meet_003_desc': 'Obsahuje 1000 nahrávok/prepisov stretnutí.', + 'trans_001_desc': 'Obsahuje 100 prekladov (hlas/text).', + 'trans_002_desc': 'Obsahuje 500 prekladov (hlas/text).', + 'trans_003_desc': 'Obsahuje 1000 prekladov (hlas/text).', // 商品模块 - 页脚 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', @@ -491,35 +492,36 @@ const Map skSK = { 'meetingTranscript': 'Prepis stretnutia', 'files': 'Files', 'mine': 'Mine', - 'connect': 'Connect', + 'connect': 'Pripojiť', 'allFiles': 'All Files', 'searchInAllFiles': 'Search in all files', 'from': 'From', 'sortBy': 'Sort by', 'creationTime': 'Creation Time', - 'bluetoothConnection': 'Bluetooth Connection', - 'meetingReconnect': 'Reconnect', + 'bluetoothConnection': 'Bluetooth pripojenie', + 'meetingReconnect': 'Znova pripojiť', 'searching': 'Searching...', - 'searchFailed': 'Search failed, please check if Bluetooth is enabled', - 'aiPenNotFound': 'AI PEN device not found', - 'connectedToAiPen': 'Connected to AI PEN device', - 'checkingNewFiles': 'Checking for new files to import', + 'searchFailed': 'Vyhľadávanie zlyhalo, skontrolujte, či je Bluetooth zapnutý', + 'aiPenNotFound': 'Zariadenie AI PEN sa nenašlo', + 'connectedToAiPen': 'Pripojené k zariadeniu AI PEN', + 'checkingNewFiles': 'Kontrola nových súborov na import', 'startingWifi': 'Starting Wi-Fi...', 'newFilesDetected': 'New files detected, preparing to import', 'noNewFiles': 'No new files to import', - 'connectingWifi': 'Connecting to Wi-Fi...', - 'wifiConnected': 'Wi-Fi connected successfully', - 'downloadingFiles': 'Downloading files...', - 'downloadingFileProgress': 'Total {total} files, downloading file {current}', - 'downloadComplete': 'Download complete', + 'connectingWifi': 'Pripája sa k Wi‑Fi...', + 'wifiConnected': 'Wi‑Fi úspešne pripojené', + 'downloadingFiles': 'Sťahovanie súborov...', + 'downloadingFileProgress': + 'Celkom {total} súborov, sťahuje sa súbor {current}', + 'downloadComplete': 'Sťahovanie dokončené', 'downloadCompleteInfo': - 'Download complete, {count} files in total, returning automatically in 2 seconds', + 'Sťahovanie dokončené, celkom {count} súborov, automatický návrat o 2 sekundy', // Meeting模块 - 录音功能 - 'startRecording': 'Start Recording', - 'liveRecording': 'Live Recording', - 'audioVideoRecording': 'Audio/Video Recording', - 'callRecording': 'Call Recording', + 'startRecording': 'Spustiť nahrávanie', + 'liveRecording': 'Nahrávanie naživo', + 'audioVideoRecording': 'Nahrávanie zvuku/videa', + 'callRecording': 'Nahrávanie hovoru', 'importAudio': 'Import Audio', 'meetingRecordExitTitle': 'Ukončiť nahrávanie', // 退出录音 'meetingRecordExitMessage': 'Vyberte akciu po odchode', // 请选择离开后的操作 @@ -584,30 +586,31 @@ const Map skSK = { 'custom': 'Vlastné', 'pleaseEnter': 'Prosím zadajte', 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', + 'recordingLanguage': 'Jazyk nahrávky', '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.', + 'AI analýza identifikuje kľúčové udalosti v nahrávkach, aby ste mohli vybrať dôležité udalosti na generovanie 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', + 'importingLocalRecordings': 'Import miestnych nahrávok...', + 'importFailed': 'Import súboru zlyhal: {filePath}, chyba: {error}', + 'importSuccess': 'Úspešne importovaných {count} miestnych nahrávok', + 'importError': 'Import zlyhal: {error}', + 'pleaseSelectAudioFile': 'Vyberte zvukový súbor', 'shareAudio': 'Share Meeting Audio', 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + 'shareFailed': 'Zdieľanie zlyhalo: {error}', + 'fileProcessingFailed': + 'Spracovanie súboru zlyhalo: {filePath}, chyba: {error}', // Meeting模块 - 思维导图 'saveMindMap': 'Uložiť myšlienkovú mapu', 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', + 'shareSuccess': 'Zdieľanie úspešné', // Meeting模块 - AI问答 'askAI': 'Ask AI ...', @@ -643,26 +646,27 @@ const Map skSK = { // Meeting模块 - 云端同步 'syncToCloud': 'Sync to Cloud', 'syncToCloudTip': - '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', + 'Nahrávky sa automaticky synchronizujú do cloudu; nahrávky môžete prehrávať, spravovať a zdieľať cez ľubovoľnú aplikáciu VOITRANS alebo VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Synchronizovať do aplikácie VOITRANS', + 'transcriptionRecord': 'Záznam prepisu', // Meeting模块 - 我的页面 - 'transcriptionRecords': 'Transcription Records', + 'transcriptionRecords': 'Záznamy prepisu', 'templateCommunity': 'Template Community', 'comingSoon': 'Coming Soon', 'integration': 'Integration', 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', - 'enabled': 'Enabled', - 'disabled': 'Disabled', - 'myVoitransDevice': 'My VOITRANS Device', + 'enabled': 'Povolené', + 'disabled': 'Zakázané', + 'myVoitransDevice': 'Moje zariadenie VOITRANS', 'helpAndFeedback': 'Help & Feedback', 'aboutVoitrans': 'About VOITRANS', 'meetingDays': 'Days', 'meetingHours': 'Hours', 'voitransAiMember': 'Voitrans AI Member', 'unlockStarterMember': 'Unlock Starter Member', - 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', + 'bindDeviceToActivate': + 'Ak chcete aktivovať Starter členstvo, pripojte zariadenie Voitrans', 'unlockNow': 'Unlock Now', // Meeting模块 - 会员与升级 @@ -686,7 +690,7 @@ const Map skSK = { 'customTemplateDesc': 'You can customize summary prompts according to your needs and use them to generate the required summaries.', 'askAiDesc': - 'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.', + 'Inteligentne získajte hlbšie informácie z nahrávok; jedným kliknutím vygenerujte tabuľky, kľúčové závery diskusie, zoznam úloh, e-maily so správami a ďalší formátovaný obsah.', 'visualMindMapDesc': 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', 'templateCommunityDesc': @@ -694,13 +698,13 @@ const Map skSK = { 'speakerIdentificationDesc': 'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.', 'privateCloudSyncDesc': - 'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.', + 'Vaše nahrávky a prepisy budú bezpečne uložené na vyhradených cloudových serveroch s úplným šifrovaním počas nahrávania aj sťahovania, aby sa zabezpečilo súkromie a bezpečnosť.', '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.', + 'Exportujte zvukové nahrávky, text prepisu a zhrnutia v rôznych formátoch (TXT, PDF, JPEG) podľa potreby.', 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -730,7 +734,7 @@ const Map skSK = { 'purchase': 'Purchase', // Meeting模块 - 录音语言 - 'recordLanguage': 'Recording Language', + 'recordLanguage': 'Jazyk nahrávania', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', @@ -757,10 +761,10 @@ const Map skSK = { "translationRecharge": "Nákup prekladov", "meetingAssistantRecharge": "Nákup asistentu stretnutia", "cloudSync": "Nákup synchronizácie v cloude", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "memberService": "Členské služby", + "bindRewardTitle": "Odmeny", "bindRewardSimpleDesc": - "First bind device reward has been issued. Tap OK to close.", + "Odmena za prvé pripojenie zariadenia bola pripísaná. Klepnite na OK a zatvorte.", "joinDevice": "Pripojené zariadenie:", "accountId": "ID účtu:", "systemSetting": "Systémové nastavenie", @@ -809,19 +813,21 @@ const Map skSK = { "loading": "Načítava sa...", // 设备管理模块 - "deviceTypeUnknown": "Unknown Device", + "deviceTypeUnknown": "Neznáme zariadenie", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", + "deviceTypeSmartVoiceRecorder": "Inteligentný hlasový záznamník", "deviceTypeSmartEye": "Smart Glasses", "unbind": "Zrušiť prepojenie", - "noDevicesBound": "No devices bound yet", - "pleaseBindDeviceFirst": "Please bind a device first to manage", + "noDevicesBound": "Zatiaľ nie sú pripojené žiadne zariadenia", + "pleaseBindDeviceFirst": + "Najprv pripojte zariadenie, aby ste ho mohli spravovať", "noMacAddress": "No MAC Address", "licenseCode": "License Code", - "confirmUnbind": "Confirm Unbind", - "confirmUnbindMessage": "Are you sure you want to unbind device \\", - "confirmUnbindAction": "Confirm Unbind", + "confirmUnbind": "Potvrdiť odpojenie", + "confirmUnbindMessage": + "Ste si istí, že chcete odpojiť zariadenie \"{deviceName}\"?", + "confirmUnbindAction": "Potvrdiť odpojenie", // Agent模块 - 主界面 "Lily": "Lily", @@ -851,31 +857,31 @@ const Map skSK = { "loadMoreMessages": "Načítať viac správ...", "loadFailedClickRetry": "Načítanie zlyhalo, kliknite pre opakovanie", "swipeUpForMore": "Potiahnite nahor pre viac", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 + "callingTool": "Pomáham vám, prosím počkajte!", // 正在帮您,请稍等! + "voice_interrupt": "Prerušiť", // 语音打断 '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", // 今日天气 - "presetNews": "Today's news", // 今日新闻 - "presetFood": "Nearby food", // 美食 - "playSomeMusic": "Play some popular music", // 播放一些流行音乐 - "navigationTo": "Please help me navigate to", // 导航到 - "todayWeather": "How's the weather today?", // 今日天气 - "todayNews": "What's the news today?", // 今日新闻 - "nearbyFood": "What delicious food is nearby?", // 美食 + "presetMusic": "Pusti hudbu", // 来点音乐 + "presetNavigation": "Naviguj do", // 导航 + "presetWeather": "Počasie dnes", // 今日天气 + "presetNews": "Správy dnes", // 今日新闻 + "presetFood": "Jedlo v blízkosti", // 美食 + "playSomeMusic": "Pusti populárnu hudbu", // 播放一些流行音乐 + "navigationTo": "Naviguj do", // 导航到 + "todayWeather": "Aké je dnes počasie?", // 今日天气 + "todayNews": "Aké sú dnes správy?", // 今日新闻 + "nearbyFood": "Kde je dobré jedlo v blízkosti?", // 附近有什么好吃的 // Agent模块 - 欢迎消息与权限 - 'welcomeMessage': '你好!我是**Lily**,我能帮你:\n\n' - '• 回答问题和提供信息\n\n' - '• 实时语音翻译\n\n' - '• 推荐音乐和播客\n\n' - '• 语音备忘录和提醒\n\n' - '• 控制耳机功能\n\n' - '有什么我可以帮你的吗?', + 'welcomeMessage': 'Ahoj! Som **Lily**.\n\n' + '• Odpoviem na otázky a poskytnem informácie\n\n' + '• Real-time hlasový preklad\n\n' + '• Odporúčam hudbu a podcasty\n\n' + '• Hlasové poznámky a pripomenutia\n\n' + '• Ovládam funkcie slúchadiel\n\n' + 'V čom ti môžem pomôcť?', 'microphonePermission': 'Mikrofón', 'voiceRecognitionPermissionText': 'Funkcia rozpoznávania reči vyžaduje prístup k mikrofónu.', @@ -949,16 +955,16 @@ const Map skSK = { 'useAppleNavigation': 'Navigate with Apple Maps', 'builtInNavigation': 'Built-in Navigation', 'useBuiltInNavigation': 'Navigate with built-in map', - 'navigationStartFailed': 'Failed to start navigation', + 'navigationStartFailed': 'Spustenie navigácie zlyhalo', 'cannotPlayMusicListRetryLater': - 'Cannot play music list, please try again later', + 'Zoznam hudby sa nepodarilo prehrať, skúste to neskôr', 'cannotPlaySong': 'Cannot play song', - 'openMapError': 'Error opening map', - 'pleaseInstallAmapApp': 'Please install the Amap app first', - 'pleaseInstallBaiduMapApp': 'Please install the Baidu Maps app first', - 'appleMapStartFailed': 'Apple Maps failed to start', + 'openMapError': 'Chyba pri otváraní mapy', + 'pleaseInstallAmapApp': 'Najprv si nainštalujte aplikáciu Amap', + 'pleaseInstallBaiduMapApp': 'Najprv si nainštalujte aplikáciu Baidu Maps', + 'appleMapStartFailed': 'Apple Maps sa nepodarilo spustiť', 'appleMapUnavailable': 'Apple Maps unavailable', - 'openAppleMapError': 'Error opening Apple Maps', + 'openAppleMapError': 'Chyba pri otváraní Apple Maps', // Agent模块 - 天气卡片 'weatherQuery': 'Dotaz na poveternostné podmienky:', @@ -1012,8 +1018,8 @@ const Map skSK = { "strongWind": "Silný vietor", // 翻译模块 - 中间层 - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", + "pictureTranslation": "Preklad obrázka", + "textTranslation": "Preklad textu", // 翻译模块 - 主页 "translationHistory": "História prekladov", @@ -1026,29 +1032,30 @@ const Map skSK = { "me": "Me", "counterPart": "Counterpart", "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "Uistite sa, že Bluetooth slúchadlá sú pripojené k telefónu a že prebieha hovor", "autoDetect": "Auto Detect", // 自动检测 // 翻译模块 - 文本翻译 - "languageDetectionFailed": "Language detection failed", + "languageDetectionFailed": "Rozpoznanie jazyka zlyhalo", // 翻译模块 - 悬浮窗与权限 - 'disableFloatingWindow': 'Disable Floating Window', - 'enableFloatingWindow': 'Enable Floating Window', - 'permissionTip': 'Permission Tip', + 'disableFloatingWindow': 'Vypnúť plávajúce okno', + 'enableFloatingWindow': 'Zapnúť plávajúce okno', + 'permissionTip': 'Tip k povoleniam', 'micPermissionRequiredForRecording': - 'Microphone permission is required for recording', - 'deleteTranslationRecordError': 'Error deleting translation record: @error', - "translationFailed": "Translation failed", + 'Na nahrávanie je potrebné povolenie mikrofónu', + 'deleteTranslationRecordError': + 'Chyba pri odstraňovaní záznamu prekladu: @error', + "translationFailed": "Preklad zlyhal", "translating": "Translating", - "translate": "Translate", - "pleaseInputText": "Please input text", + "translate": "Preložiť", + "pleaseInputText": "Zadajte text", "inputTextToTranslate": "Zadajte text na preklad", "textTooLong": "Text too long, max 5000 characters", // 翻译模块 - 历史记录 "noTranslationHistory": "Žiadna história", - "historyRecords": "History Records", + "historyRecords": "Záznamy histórie", "clearResults": "Clear Results", "clearHistory": "Vymazať históriu", "clearHistoryConfirm": @@ -1061,12 +1068,12 @@ const Map skSK = { // 翻译模块 - 图片翻译 "selectImageSource": "Select Image Source", "imagePreview": "Image Preview", - "translationResult": "Translation Result", + "translationResult": "Výsledok prekladu", "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", + "translatedImagePreview": "Náhľad preloženého obrázka", + "translatedImageLoadFailed": "Nepodarilo sa načítať preložený obrázok", + "pleaseSelectImage": "Vyberte obrázok", + "imageLoadFailed": "Načítanie obrázka zlyhalo", "imageQuality": "Image Quality", "maxSize": "Max Size", "close": "Close", @@ -1075,38 +1082,38 @@ const Map skSK = { "setMaxSize": "Set Max Size", "currentMaxSize": "Current: @pxpx", "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", + "pleaseSelectImageToStart": "Vyberte obrázok na začatie", "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", + "callingImageTranslateService": "Volá sa služba prekladu obrázkov...", + "savingRecord": "Ukladanie záznamu", + "savingTranslationResult": "Ukladanie výsledku prekladu...", + "translationCompleted": "Preklad dokončený", "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", + "processingFailed": "Spracovanie zlyhalo", "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", + "Spracovanie obrázka alebo preklad zlyhal. Skúste to znova.\nChyba: {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", + "emptyTranslationResult": "API prekladu obrázkov vrátilo prázdny výsledok", "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", + "Preklad obrázka zlyhal. Problém so sieťou alebo limitom. Skúste to neskôr", "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", + "Chyba API prekladu obrázkov. Skontrolujte sieť a skúste to znova", + "permissionRequired": "Vyžaduje sa povolenie", + "cameraPermissionRequired": "Na fotenie je potrebné povolenie kamery", "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", + "Na výber obrázkov je potrebné povolenie fotogalérie", + "translationDetails": "Podrobnosti prekladu", "originalImage": "Original Image", "sourceLanguage": "Source Language", "targetLanguage": "Target Language", - "translationTime": "Translation Time", + "translationTime": "Čas prekladu", "shareInDevelopment": "Sharing feature under development", // 翻译模块 - 录音文件 @@ -1203,18 +1210,18 @@ const Map skSK = { 'Služba účtu bola inicializovaná', // AccountService 已初始化 // 权限模块 - 'meetingStoragePermission': 'Storage', + 'meetingStoragePermission': 'Úložisko', 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', + 'Potrebujeme povolenie prístupu k úložisku, aby ste mohli vybrať a nahrať zvukové súbory.', 'meetingStoragePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', + 'Zistili sme, že ste trvalo zamietli povolenie úložiska. Ak chcete pokračovať v používaní tejto funkcie, prejdite do nastavení aplikácie a manuálne povoľte prístup k úložisku.', 'getPermissionStatusFailed': 'Získanie stavu povolenia zlyhalo', 'communicationPermissions': 'Komunikačné povolenia', - 'bluetoothPermissions': 'Bluetooth Permissions', - 'notificationPermissions': 'Notification Permissions', - 'storagePermissions': 'Storage Permissions', - 'microphonePermissions': 'Microphone Permissions', - 'alarmPermissions': 'Alarm Permissions', + 'bluetoothPermissions': 'Povolenia Bluetooth', + 'notificationPermissions': 'Povolenia oznámení', + 'storagePermissions': 'Povolenia úložiska', + 'microphonePermissions': 'Povolenia mikrofónu', + 'alarmPermissions': 'Povolenia alarmu', 'calendarPermissions': 'Povolenia kalendára', 'locationPermissions': 'Povolenia polohy', 'phone': 'Telefón', @@ -1228,7 +1235,7 @@ const Map skSK = { 'phonePermissionDesc': 'Používa sa pre funkciu volania', 'smsPermissionDesc': 'Používa sa pre funkciu odosielania SMS', 'alarmPermissionDesc': - 'Used to set exact alarms to ensure reminders trigger on time', + 'Používa sa na nastavenie presných alarmov, aby sa pripomienky spúšťali načas', 'calendarWritePermissionDesc': 'Používa sa na vytváranie udalostí a pripomienok v kalendári', 'calendarFullAccessPermissionDesc': @@ -1247,72 +1254,74 @@ const Map skSK = { 'smsPermissionDetailDesc': 'Funkcia odosielania SMS vyžaduje povolenie pre SMS', 'alarmPermissionDetailDesc': - 'This permission is required to set exact alarms and ensure reminders trigger on time', + 'Toto povolenie je potrebné na nastavenie presných alarmov a aby sa pripomienky spúšťali načas', 'calendarWritePermissionDetailDesc': 'Vytváranie udalostí v kalendári vyžaduje povolenie na zápis do kalendára', 'calendarFullAccessPermissionDetailDesc': 'Správa udalostí v kalendári vyžaduje úplné povolenie pre kalendár', 'locationPermissionDetailDesc': 'Získanie informácií o polohe vyžaduje povolenie pre polohu', - 'contactsPermissionDesc': 'Used for accessing contact information', + 'contactsPermissionDesc': 'Používa sa na prístup k informáciám o kontaktoch', 'contactsPermissionDetailDesc': - 'Phone call and SMS functionality requires contacts permission to select contacts', + 'Funkcie volania a SMS vyžadujú povolenie kontaktov na výber kontaktov', 'bluetoothPermissionDesc': - 'Used for connecting and managing Bluetooth devices', + 'Používa sa na pripojenie a správu Bluetooth zariadení', 'bluetoothPermissionDetailDesc': - 'Connecting to Bluetooth headphones and other devices requires Bluetooth permission', - 'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices', + 'Pripojenie k Bluetooth slúchadlám a iným zariadeniam vyžaduje povolenie Bluetooth', + 'bluetoothScanPermissionDesc': + 'Používa sa na vyhľadávanie Bluetooth zariadení v okolí', 'bluetoothScanPermissionDetailDesc': - 'Scanning for nearby Bluetooth devices requires Bluetooth scan permission', - 'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices', + 'Vyhľadávanie Bluetooth zariadení v okolí vyžaduje povolenie na skenovanie Bluetooth', + 'bluetoothConnectPermissionDesc': + 'Používa sa na pripájanie k Bluetooth zariadeniam', 'bluetoothConnectPermissionDetailDesc': - 'Connecting to Bluetooth devices requires Bluetooth connect permission', + 'Pripájanie k Bluetooth zariadeniam vyžaduje povolenie na pripojenie Bluetooth', 'notificationPermissionDesc': 'Used for sending notification messages', 'notificationPermissionDetailDesc': - 'App needs notification permission to send you important alerts and messages', + 'Aplikácia potrebuje povolenie oznámení na odosielanie dôležitých upozornení a správ', 'appNeedsPermissionForFullFunction': 'Aplikácia vyžaduje toto povolenie pre plnú funkčnosť', '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', + 'bluetoothConnect': 'Pripojenie Bluetooth', 'bluetoothScanExplanation': - 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', + 'Aplikácia potrebuje povolenie skenovania Bluetooth na vyhľadávanie Bluetooth zariadení v okolí.', 'bluetoothConnectExplanation': - 'The app needs Bluetooth connect permission to connect to Bluetooth devices.', + 'Aplikácia potrebuje povolenie pripojenia Bluetooth na pripájanie k Bluetooth zariadeniam.', 'locationForBluetoothExplanation': - 'The app needs location permission to scan Bluetooth devices.', + 'Aplikácia potrebuje povolenie polohy na vyhľadávanie Bluetooth zariadení.', 'bluetoothScanPermanentDenial': - 'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.', + 'Povolenie skenovania Bluetooth bolo trvalo odmietnuté, prejdite do nastavení a povoľte ho manuálne.', 'bluetoothConnectPermanentDenial': - 'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.', + 'Povolenie pripojenia Bluetooth bolo trvalo odmietnuté, prejdite do nastavení a povoľte ho manuálne.', 'locationPermanentDenial': - 'Location permission has been permanently denied, please go to settings to enable it manually.', + 'Povolenie polohy bolo trvalo odmietnuté, prejdite do nastavení a povoľte ho manuálne.', 'notificationPermission': 'Notification', 'locationPermission': 'Location', 'notificationPermissionExplanation': - 'Notification permission is required to display music playback status.', + 'Povolenie oznámení je potrebné na zobrazenie stavu prehrávania hudby.', 'locationPermissionExplanation': - 'Location permission is required to get current location.', + 'Povolenie polohy je potrebné na získanie aktuálnej polohy.', 'notificationPermissionPermanentDenial': - 'You have permanently denied notification permission, please go to settings to enable it.', + 'Trvalo ste odmietli povolenie oznámení, prejdite do nastavení a povoľte ho.', 'locationPermissionPermanentDenial': - 'You have permanently denied location permission, please go to settings to enable it.', + 'Trvalo ste odmietli povolenie polohy, prejdite do nastavení a povoľte ho.', 'storagePermission': 'Storage', 'microphonePermissionExplanation': - 'We need microphone permission to record audio content.', + 'Potrebujeme povolenie mikrofónu na nahrávanie zvukového obsahu.', 'storagePermissionExplanation': - 'We need storage permission so you can select and upload audio files.', + 'Potrebujeme povolenie úložiska, aby ste mohli vybrať a nahrať zvukové súbory.', 'microphonePermissionPermanentDenial': - '检测到您已永久拒绝录音权限。如需继续使用此功能,请前往应用设置中手动开启麦克风权限。', + 'Zistili sme, že ste trvalo zamietli povolenie mikrofónu. Ak chcete pokračovať v používaní tejto funkcie, prejdite do nastavení aplikácie a manuálne povoľte prístup k mikrofónu.', 'storagePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', + 'Zistili sme, že ste trvalo zamietli povolenie úložiska. Ak chcete pokračovať v používaní tejto funkcie, prejdite do nastavení aplikácie a manuálne povoľte prístup k úložisku.', 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', + 'permissionUtilPermission': ' Povolenie', + 'permissionUtilRestricted': ' Povolenie obmedzené', 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'Táto funkcia nie je na aktuálnom zariadení dostupná alebo je obmedzená, skontrolujte nastavenia zariadenia alebo systémové obmedzenia', 'permissionUtilConfirm': 'OK', // 原生前台服务通知(Android) @@ -1402,27 +1411,27 @@ const Map skSK = { 'bleConnectionFailed': 'Pripojenie BLE zlyhalo', 'deviceAuthorizationFailedCheckCode': 'Autorizácia zariadenia zlyhala, skontrolujte autorizačný kód', - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + 'bluetoothGuideTitle': 'Vyžaduje sa manuálne zapnutie Bluetooth', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'Postupujte podľa týchto krokov:', // 请按照以下步骤操作: 'bluetoothGuideStep1': - 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'Zapnite Bluetooth: Nastavenia → Bluetooth → Zapnúť', // 开启蓝牙:设置 → 蓝牙 → 开启 'bluetoothGuideStep2': - 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'Pripojte zariadenie: v "Moje zariadenia" nájdite svoje zariadenie a ťuknite na pripojenie', // 连接设备:在"我的设备"中找到您的设备并点击连接 'bluetoothGuideStep3': - 'Return to app to continue pairing process', // 返回应用继续配对流程 + 'Vráťte sa do aplikácie a pokračujte v procese párovania', // 返回应用继续配对流程 'bluetoothGuideTip': - 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': 'I Know', // 我知道了 + 'Tip: v Ovládacom centre môžete dlhým stlačením ikony Bluetooth rýchlo otvoriť nastavenia Bluetooth', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + 'iKnow': 'Rozumiem', // 我知道了 // 配对模块 - 绑定奖励 - "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:", + "firstBindRewardTitle": "Uvítacia odmena", + "firstBindRewardDesc": "Získali ste odmeny za pripojenie.", + "vipLevelLabel": "Úroveň VIP:", + "expiryLabel": "Dátum vypršania:", + "notActivated": "Neaktivované", + "aiChatCreditsLabel": "Kredity AI chatu:", + "translationCreditsLabel": "Kredity prekladu:", + "meetingCreditsLabel": "Kredity stretnutí:", "ok": "OK", // 用户反馈模块 @@ -1454,13 +1463,14 @@ const Map skSK = { "connectionFailed": "Pripojenie zlyhalo", "retryConnection": "Znova pripojiť", "ota_updateNow": "Aktualizovať teraz", - "otaVersionInfoFailed": "Failed to get version info. Please try again later.", + "otaVersionInfoFailed": + "Nepodarilo sa získať informácie o verzii. Skúste to neskôr.", "otaDeviceInfoUnavailable": - "Unable to get device info. Please check the connection and retry.", + "Nie je možné získať informácie o zariadení. Skontrolujte pripojenie a skúste to znova.", "otaProductInfoUnavailable": - "Unable to identify the device. Please reconnect and retry.", + "Nie je možné identifikovať zariadenie. Znova ho pripojte a skúste to znova.", "otaFirmwareVersionInvalid": - "Firmware version is abnormal. Please reconnect and retry.", + "Verzia firmvéru je neštandardná. Znova zariadenie pripojte a skúste to znova.", "keepConnectedDontClose": "Udržujte zariadenie pripojené, nezatvárajte aplikáciu", "doNotDisconnect": "Neodpájajte", @@ -1473,54 +1483,55 @@ const Map skSK = { 'otaNewVersionFoundWithVersion': 'New version @version found', 'otaConfirmUpdateNow': 'Update now?', 'otaUpdate': 'Update', - 'otaUpgradeSuccess': 'Upgrade Successful', + 'otaUpgradeSuccess': 'Aktualizácia úspešná', 'otaUpgradeCompleteRepair': - 'Firmware upgrade complete!\n\nDevice needs to be re-paired to work properly. Go to pairing page now?', + 'Aktualizácia firmvéru dokončená!\n\nAby zariadenie fungovalo správne, je potrebné ho znovu spárovať. Prejsť teraz na stránku párovania?', 'otaPairLater': 'Pair Later', 'otaPairNow': 'Pair Now', 'okConfirm': 'OK', // OTA升级模块 - 设备检查 - 'otaBleCheckErrorWithError': 'Error checking BLE connection: @error', - 'otaBleNotConnected': 'BLE Device Not Connected', + 'otaBleCheckErrorWithError': 'Chyba pri kontrole BLE pripojenia: @error', + 'otaBleNotConnected': 'BLE zariadenie nie je pripojené', 'otaBleNeedConnection': - 'Firmware upgrade requires BLE device connection\nPlease ensure device is properly connected and try again', - 'otaDeviceInfoUnavailableTitle': 'Device Info Unavailable', + 'Aktualizácia firmvéru vyžaduje pripojenie BLE zariadenia\nUistite sa, že je zariadenie správne pripojené, a skúste to znova', + 'otaDeviceInfoUnavailableTitle': 'Informácie o zariadení nie sú dostupné', 'otaCannotGetDeviceInfo': - 'Cannot get device info\nPlease reconnect device or try again later', - 'otaBleCheckFailed': 'BLE Connection Check Failed', + 'Nie je možné získať informácie o zariadení\nZnova pripojte zariadenie alebo skúste to neskôr', + 'otaBleCheckFailed': 'Kontrola BLE pripojenia zlyhala', 'otaCannotGetDeviceInfoCheckConnection': - 'Cannot get device info, please check device connection', + 'Nie je možné získať informácie o zariadení, skontrolujte pripojenie', 'otaCannotGetProductInfoWithName': - 'Cannot get product info, device name: @deviceName', + 'Nie je možné získať informácie o produkte, názov zariadenia: @deviceName', 'otaCannotGetBatteryInfo': 'Cannot get valid battery info', 'otaLowBattery': 'Low Battery', 'otaSingleBatteryLow': - 'Device battery too low for firmware upgrade\nRequirement: battery must be above 20%\nCurrent: @ear @battery%\nPlease charge and try again', + 'Batéria zariadenia je príliš nízka na aktualizáciu firmvéru\nPožiadavka: batéria musí byť nad 20%\nAktuálne: @ear @battery%\nNabite a skúste to znova', 'otaDoubleBatteryLow': - 'Device battery too low for firmware upgrade\nRequirement: both earbuds must be above 20%\nCurrent: Left @left%, Right @right%\nPlease charge and try again', - 'otaBatteryCheckFailed': 'Battery Check Failed', + 'Batéria zariadenia je príliš nízka na aktualizáciu firmvéru\nPožiadavka: obe slúchadlá musia byť nad 20%\nAktuálne: Ľavé @left%, Pravé @right%\nNabite a skúste to znova', + 'otaBatteryCheckFailed': 'Kontrola batérie zlyhala', // OTA升级模块 - 升级状态 'otaDefaultUpdateDesc': 'This update includes performance optimizations and bug fixes.', - 'otaGetLatestVersionFailed': 'Failed to get latest version info', - 'otaGetVersionInfoFailed': 'Failed to get version info', - 'otaCheckingDeviceStatus': 'Checking device status...', + 'otaGetLatestVersionFailed': + 'Nepodarilo sa získať informácie o najnovšej verzii', + 'otaGetVersionInfoFailed': 'Nepodarilo sa získať informácie o verzii', + 'otaCheckingDeviceStatus': 'Kontroluje sa stav zariadenia...', 'otaDownloadFailedCheckNetwork': - 'Download failed, please check network connection', - 'otaDownloadFailed': 'Download Failed', - 'otaPreparingConnection': 'Preparing device connection...', - 'otaConnectingDevice': 'Connecting to device...', + 'Sťahovanie zlyhalo, skontrolujte sieťové pripojenie', + 'otaDownloadFailed': 'Sťahovanie zlyhalo', + 'otaPreparingConnection': 'Pripravuje sa pripojenie zariadenia...', + 'otaConnectingDevice': 'Pripája sa k zariadeniu...', 'otaUpgradeStarted': 'OTA upgrade started...', 'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%', - 'otaUpgradeSuccessComplete': 'Upgrade completed successfully', - 'otaUpgradeFailedWithCode': 'Upgrade failed, error code: @code', - 'otaUpgradeFailedTitle': 'Upgrade Failed', + 'otaUpgradeSuccessComplete': 'Aktualizácia bola úspešne dokončená', + 'otaUpgradeFailedWithCode': 'Aktualizácia zlyhala, kód chyby: @code', + 'otaUpgradeFailedTitle': 'Aktualizácia zlyhala', 'otaUpgradeFailedDesc': - 'Please check device connection or update package, error code: @code', - 'otaDeviceDisconnected': 'Device disconnected', - 'otaDeviceConnected': 'Device connected', + 'Skontrolujte pripojenie zariadenia alebo aktualizačný balík, kód chyby: @code', + 'otaDeviceDisconnected': 'Zariadenie sa odpojilo', + 'otaDeviceConnected': 'Zariadenie je pripojené', // 音乐模块 "noMusic": "Žiadna hudba", // 暂无音乐 diff --git a/lib/core/translations/language/sl_si.dart b/lib/core/translations/language/sl_si.dart index 09452bfbb..edd729c3d 100644 --- a/lib/core/translations/language/sl_si.dart +++ b/lib/core/translations/language/sl_si.dart @@ -1,3 +1,4 @@ +// 斯洛文尼亚-斯洛文尼亚语 const Map slSI = { // 通用 'continue': 'Nadaljuj', @@ -18,11 +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", + "justNow": "Pravkar", + "minutesAgo": "Pred @minutes minutami", + "yesterday": "Včeraj", + "daysAgo": "Pred @days dnevi", + "hoursAgo": "Pred @hours urami", // 启动页 "slogan": "Povezovanje sveta, onkraj zvoka", @@ -110,7 +111,7 @@ const Map slSI = { "welcomeToThisApp": "Dobrodošli v Voitrans, prosimo, da natančno preberete", // 欢迎使用Voitrans,请充分阅读 "privacyPolicyText": - ",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 + "Z dotikom »Strinjam se in vstopi« potrjujete, da ste prebrali in se strinjate z zgornjimi pogoji. Če tapnete »Ne strinjam se«, se aplikacija zapre.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Ne strinjam se", // 不同意 "agreeAndEnter": "Strinjam se in vstopi", // 同意并进入 @@ -169,27 +170,27 @@ const Map slSI = { 'checkConnectionStatusFailed': 'Preverjanje stanja povezave ni uspelo', // 蓝牙扫描模块 - 'bleInitFailedWithError': 'Bluetooth initialization failed: @error', + 'bleInitFailedWithError': 'Inicializacija Bluetooth ni uspela: @error', 'needBluetoothAndLocationPermission': - 'Bluetooth and location permissions are required to scan devices', - 'permissionRequestFailedWithError': 'Permission request failed: @error', - 'needPermission': 'Permission Required', + 'Za iskanje naprav so potrebna dovoljenja Bluetooth in lokacije', + 'permissionRequestFailedWithError': 'Zahteva za dovoljenje ni uspela: @error', + 'needPermission': 'Zahtevano dovoljenje', 'blePermissionDialogContent': - 'This app requires Bluetooth and location permissions to scan devices. Please enable them in Settings.', - 'needEnableBluetooth': 'Enable Bluetooth', + 'Ta aplikacija za iskanje naprav potrebuje dovoljenja Bluetooth in lokacije. Omogočite jih v Nastavitvah.', + 'needEnableBluetooth': 'Vklopi Bluetooth', 'enableBluetoothDialogContent': - 'Please enable Bluetooth to scan and connect devices.', - 'bleScanFailedWithError': 'Scan failed: @error', - 'bleConnectionSuccess': 'Connection Successful', - 'bleConnectedToDevice': 'Connected to @device', - 'bleConnectionFailedWithError': 'Connection failed: @error', - 'bleDisconnected': 'Disconnected', - 'bleDeviceDisconnected': 'Device disconnected', - 'bleDisconnectFailedWithError': 'Disconnect failed: @error', - 'signalStrong': 'Strong', - 'signalMedium': 'Medium', - 'signalWeak': 'Weak', - 'signalVeryWeak': 'Very Weak', + 'Vklopite Bluetooth za iskanje in povezovanje naprav.', + 'bleScanFailedWithError': 'Skeniranje ni uspelo: @error', + 'bleConnectionSuccess': 'Povezava uspešna', + 'bleConnectedToDevice': 'Povezano z @device', + 'bleConnectionFailedWithError': 'Povezava ni uspela: @error', + 'bleDisconnected': 'Povezava prekinjena', + 'bleDeviceDisconnected': 'Naprava je prekinila povezavo', + 'bleDisconnectFailedWithError': 'Prekinitev povezave ni uspela: @error', + 'signalStrong': 'Močan', + 'signalMedium': 'Srednji', + 'signalWeak': 'Šibek', + 'signalVeryWeak': 'Zelo šibek', // 发现页 "searchAi": "Išči funkcije AI...", @@ -219,22 +220,22 @@ const Map slSI = { // 用量统计模块 "aiChat": "AI Chat", - "translationStats": "Translation Statistics", - "meetingStats": "Meeting Statistics", - "today": "Today", - "thisWeek": "This Week", - "thisMonth": "This Month", - "history": "History", - "currentSessionStats": "Current Session Stats", - "translationCount": "Translation Count", - "sessionDuration": "Session Duration", - "characters": "Characters", - "recordingDuration": "Recording Duration", - "totalApiCalls": "Total API Calls", - "sessionCount": "Session Count", - "totalCharacters": "Total Characters", - "apiCallStats": "API Call Stats", - "translationApi": "Translation API", + "translationStats": "Statistika prevodov", + "meetingStats": "Statistika sestankov", + "today": "Danes", + "thisWeek": "Ta teden", + "thisMonth": "Ta mesec", + "history": "Zgodovina", + "currentSessionStats": "Statistika trenutne seje", + "translationCount": "Število prevodov", + "sessionDuration": "Trajanje seje", + "characters": "Znaki", + "recordingDuration": "Trajanje snemanja", + "totalApiCalls": "Skupno klicev API", + "sessionCount": "Število sej", + "totalCharacters": "Skupno znakov", + "apiCallStats": "Statistika klicev API", + "translationApi": "API prevajanja", "asr": "ASR", "tts": "TTS", "dataVolumeStats": "Data Volume Stats", @@ -253,9 +254,9 @@ const Map slSI = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - "loadFailed": "Load Failed", + "loadFailed": "Nalaganje ni uspelo", "statsLoadFailedTryLater": - "Statistics failed to load. Please try again later.", + "Statistike ni bilo mogoče naložiti. Poskusite znova pozneje.", "cleanupComplete": "Cleanup Complete", "cleanedOldData": "Cleaned data older than 90 days", "exportFeature": "Export Feature", @@ -328,10 +329,10 @@ const Map slSI = { 'alipayPaymentException': 'Izjema Alipay', "insufficientIntegral": "Insufficient integral", "insufficientBalanceDesc": - "Insufficient balance, please go to the corresponding recharge page to recharge.", + "Ni dovolj dobroimetja, pojdite na ustrezno stran za polnjenje in dopolnite.", "recharge": "Go to Recharge", "aiMemberExpiredDesc": - "AI membership expired, please go to the membership recharge page to renew.", + "Članstvo AI je poteklo, pojdite na stran za polnjenje članstva in ga obnovite.", // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', @@ -359,18 +360,18 @@ const Map slSI = { 'templatedMessagesAndScheduleReminders': 'Template messages and schedule reminders', 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', + 'Funkcije so odvisne od dovoljenj naprave, razpoložljivosti storitev in omrežnih razmer.', // 商品模块 - 翻译商品页 'realtimeTranscription': 'Real-time Transcription', 'sceneLexicon': 'Scenario Glossary', 'subtitleDisplay': 'Subtitles', 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'Sočasno tolmačenje in prevajanje besedila v realnem času z nizko zakasnitvijo zvoka.', 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', + 'translateZhEn': 'Prevajanje kitajščina–angleščina', 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', + 'multiLangTextTranslation': 'Večjezično prevajanje besedila', 'termOptimizationContextPreserve': 'Terminology optimization and context preservation', 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', @@ -378,18 +379,18 @@ const Map slSI = { 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', 'colorHighContrast': 'High color contrast', 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', + 'Učinkovitost prevajanja je odvisna od mikrofona, zakasnitve omrežja in hrupa okolice.', // 商品模块 - 会议商品页 - 'meetingRecording': 'Meeting Recording', + 'meetingRecording': 'Snemanje sestankov', 'transcriptionAndSummary': 'Transcription & Summary', 'keywordSearch': 'Keyword Search', 'collaborationSharing': 'Collaboration & Sharing', 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'Snemanje zvoka, prepis, iskanje ključnih besed in samodejni povzetek za večjo učinkovitost sestankov.', 'meetingHeaderDesc2': 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingAutoRecording': 'Samodejno snemanje in segmentacija', 'meetingSpeakerTagging': 'Speaker labeling', 'meetingLongAudioTranscription': 'Long audio transcription', 'meetingKeyPointSummary': 'Key point extraction', @@ -398,7 +399,7 @@ const Map slSI = { 'meetingExportSummary': 'Export minutes', 'meetingMultiPlatformShare': 'Share across platforms', 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', + 'Uporabljajte v tihem okolju; delovanje je odvisno od mikrofona in omrežja.', // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', @@ -412,7 +413,7 @@ const Map slSI = { 'longTermDiscountPlan': 'Long-term discount plan', 'generalPrivileges': 'General privileges', 'earlyAccessNewFeatures': 'Early access to new features', - 'crossDeviceSync': 'Cross-device sync', + 'crossDeviceSync': 'Sinhronizacija med napravami', 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', @@ -423,18 +424,18 @@ const Map slSI = { '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', + 'trans_001_name': 'Prevod Osnovni 100', + 'trans_002_name': 'Prevod Osnovni 500', + 'trans_003_name': 'Prevod Osnovni 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).', + 'meet_001_desc': 'Vključuje 100 snemanj/prepisov sestankov.', + 'meet_002_desc': 'Vključuje 500 snemanj/prepisov sestankov.', + 'meet_003_desc': 'Vključuje 1000 snemanj/prepisov sestankov.', + 'trans_001_desc': 'Vključuje 100 prevodov (glas/besedilo).', + 'trans_002_desc': 'Vključuje 500 prevodov (glas/besedilo).', + 'trans_003_desc': 'Vključuje 1000 prevodov (glas/besedilo).', // 商品模块 - 页脚 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', @@ -492,35 +493,36 @@ const Map slSI = { 'meetingTranscript': 'Prepis sestanka', 'files': 'Files', 'mine': 'Mine', - 'connect': 'Connect', + 'connect': 'Poveži', 'allFiles': 'All Files', 'searchInAllFiles': 'Search in all files', 'from': 'From', 'sortBy': 'Sort by', 'creationTime': 'Creation Time', - 'bluetoothConnection': 'Bluetooth Connection', - 'meetingReconnect': 'Reconnect', + 'bluetoothConnection': 'Povezava Bluetooth', + 'meetingReconnect': 'Ponovno poveži', 'searching': 'Searching...', - 'searchFailed': 'Search failed, please check if Bluetooth is enabled', - 'aiPenNotFound': 'AI PEN device not found', - 'connectedToAiPen': 'Connected to AI PEN device', - 'checkingNewFiles': 'Checking for new files to import', + 'searchFailed': 'Iskanje ni uspelo, preverite, ali je Bluetooth vklopljen', + 'aiPenNotFound': 'Naprave AI PEN ni mogoče najti', + 'connectedToAiPen': 'Povezano z napravo AI PEN', + 'checkingNewFiles': 'Preverjanje novih datotek za uvoz', 'startingWifi': 'Starting Wi-Fi...', 'newFilesDetected': 'New files detected, preparing to import', 'noNewFiles': 'No new files to import', - 'connectingWifi': 'Connecting to Wi-Fi...', - 'wifiConnected': 'Wi-Fi connected successfully', - 'downloadingFiles': 'Downloading files...', - 'downloadingFileProgress': 'Total {total} files, downloading file {current}', - 'downloadComplete': 'Download complete', + 'connectingWifi': 'Povezovanje z Wi‑Fi...', + 'wifiConnected': 'Wi‑Fi je uspešno povezan', + 'downloadingFiles': 'Prenašanje datotek...', + 'downloadingFileProgress': + 'Skupaj {total} datotek, prenaša se datoteka {current}', + 'downloadComplete': 'Prenos dokončan', 'downloadCompleteInfo': - 'Download complete, {count} files in total, returning automatically in 2 seconds', + 'Prenos dokončan, skupaj {count} datotek, samodejna vrnitev čez 2 sekundi', // Meeting模块 - 录音功能 - 'startRecording': 'Start Recording', - 'liveRecording': 'Live Recording', - 'audioVideoRecording': 'Audio/Video Recording', - 'callRecording': 'Call Recording', + 'startRecording': 'Začni snemanje', + 'liveRecording': 'Snemanje v živo', + 'audioVideoRecording': 'Snemanje avdia/videa', + 'callRecording': 'Snemanje klica', 'importAudio': 'Import Audio', 'meetingRecordExitTitle': 'Izhod iz snemanja', // 退出录音 'meetingRecordExitMessage': 'Izberite dejanje po izhodu', // 请选择离开后的操作 @@ -585,30 +587,31 @@ const Map slSI = { 'custom': 'Po meri', 'pleaseEnter': 'Prosimo vnesite', 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', + 'recordingLanguage': 'Jezik snemanja', '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.', + 'AI analiza prepozna ključne dogodke v posnetkih, kar vam omogoča izbiro pomembnih dogodkov za generiranje z 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', + 'importingLocalRecordings': 'Uvažanje lokalnih posnetkov...', + 'importFailed': 'Uvoz datoteke ni uspel: {filePath}, napaka: {error}', + 'importSuccess': 'Uspešno uvoženih {count} lokalnih posnetkov', + 'importError': 'Uvoz ni uspel: {error}', + 'pleaseSelectAudioFile': 'Izberite zvočno datoteko', 'shareAudio': 'Share Meeting Audio', 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + 'shareFailed': 'Deljenje ni uspelo: {error}', + 'fileProcessingFailed': + 'Obdelava datoteke ni uspela: {filePath}, napaka: {error}', // Meeting模块 - 思维导图 'saveMindMap': 'Shrani miselni zemljevid', 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', + 'shareSuccess': 'Deljenje uspešno', // Meeting模块 - AI问答 'askAI': 'Ask AI ...', @@ -642,28 +645,29 @@ const Map slSI = { 'Summary speakers will be updated automatically', // Meeting模块 - 云端同步 - 'syncToCloud': 'Sync to Cloud', + 'syncToCloud': 'Sinhroniziraj v oblak', 'syncToCloudTip': - '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', + 'Samodejno sinhronizirajte posnetke v oblak; posnetke lahko predvajate, upravljate in delite prek katere koli aplikacije VOITRANS ali VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sinhroniziraj v aplikacijo VOITRANS', + 'transcriptionRecord': 'Zapis prepisa', // Meeting模块 - 我的页面 - 'transcriptionRecords': 'Transcription Records', + 'transcriptionRecords': 'Zapisi prepisov', 'templateCommunity': 'Template Community', 'comingSoon': 'Coming Soon', 'integration': 'Integration', 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', - 'enabled': 'Enabled', - 'disabled': 'Disabled', - 'myVoitransDevice': 'My VOITRANS Device', + 'enabled': 'Omogočeno', + 'disabled': 'Onemogočeno', + 'myVoitransDevice': 'Moja naprava VOITRANS', 'helpAndFeedback': 'Help & Feedback', 'aboutVoitrans': 'About VOITRANS', 'meetingDays': 'Days', 'meetingHours': 'Hours', 'voitransAiMember': 'Voitrans AI Member', 'unlockStarterMember': 'Unlock Starter Member', - 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', + 'bindDeviceToActivate': + 'Povežite napravo Voitrans za aktivacijo Starter članstva', 'unlockNow': 'Unlock Now', // Meeting模块 - 会员与升级 @@ -687,7 +691,7 @@ const Map slSI = { 'customTemplateDesc': 'You can customize summary prompts according to your needs and use them to generate the required summaries.', 'askAiDesc': - 'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.', + 'Pametno izluščite globlje informacije iz posnetkov; z enim klikom ustvarite podatkovne tabele, ključne zaključke razprave, sezname opravil, poročilna e‑sporočila in drugo formatirano vsebino.', 'visualMindMapDesc': 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', 'templateCommunityDesc': @@ -695,13 +699,13 @@ const Map slSI = { 'speakerIdentificationDesc': 'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.', 'privateCloudSyncDesc': - 'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.', + 'Vaši posnetki in prepisi bodo varno shranjeni na namenskih strežnikih v oblaku, z popolnim šifriranjem med nalaganjem in prenašanjem, za zagotavljanje zasebnosti in varnosti.', '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.', + 'Izvozite zvočne posnetke, besedilo prepisa in povzetke v različnih formatih (TXT, PDF, JPEG) po svojih potrebah.', 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -731,7 +735,7 @@ const Map slSI = { 'purchase': 'Purchase', // Meeting模块 - 录音语言 - 'recordLanguage': 'Recording Language', + 'recordLanguage': 'Jezik snemanja', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', @@ -758,10 +762,10 @@ const Map slSI = { "translationRecharge": "Nákup prevajanja", "meetingAssistantRecharge": "Nákup asistenta sestanka", "cloudSync": "Nákup sinkronizacije v oblaku", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "memberService": "Članske storitve", + "bindRewardTitle": "Nagrade", "bindRewardSimpleDesc": - "First bind device reward has been issued. Tap OK to close.", + "Nagrada za prvo povezavo naprave je bila izdana. Tapnite OK za zapiranje.", "joinDevice": "Povezana naprava:", "accountId": "ID računa:", "systemSetting": "Sistemska nastavitev", @@ -812,19 +816,20 @@ const Map slSI = { "loading": "Nalaganje...", // 设备管理模块 - "deviceTypeUnknown": "Unknown Device", + "deviceTypeUnknown": "Neznana naprava", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", + "deviceTypeSmartVoiceRecorder": "Pametni glasovni snemalnik", "deviceTypeSmartEye": "Smart Glasses", "unbind": "Prekini povezavo", - "noDevicesBound": "No devices bound yet", - "pleaseBindDeviceFirst": "Please bind a device first to manage", + "noDevicesBound": "Še ni povezanih naprav", + "pleaseBindDeviceFirst": "Najprej povežite napravo za upravljanje", "noMacAddress": "No MAC Address", "licenseCode": "License Code", - "confirmUnbind": "Confirm Unbind", - "confirmUnbindMessage": "Are you sure you want to unbind device \\", - "confirmUnbindAction": "Confirm Unbind", + "confirmUnbind": "Potrdi prekinitev povezave", + "confirmUnbindMessage": + "Ali ste prepričani, da želite prekiniti povezavo z napravo \"{deviceName}\"?", + "confirmUnbindAction": "Potrdi prekinitev povezave", // Agent模块 - 主界面 "Lily": "Lily", @@ -854,31 +859,31 @@ const Map slSI = { "loadMoreMessages": "Naloži več sporočil...", "loadFailedClickRetry": "Nalaganje ni uspelo, kliknite za ponovni poskus", "swipeUpForMore": "Povlecite navzgor za več", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 + "callingTool": "Pomagam vam, prosim počakajte!", // 正在帮您,请稍等! + "voice_interrupt": "Prekini", // 语音打断 '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", // 今日天气 - "presetNews": "Today's news", // 今日新闻 - "presetFood": "Nearby food", // 美食 - "playSomeMusic": "Play some popular music", // 播放一些流行音乐 - "navigationTo": "Please help me navigate to", // 导航到 - "todayWeather": "How's the weather today?", // 今日天气 - "todayNews": "What's the news today?", // 今日新闻 - "nearbyFood": "What delicious food is nearby?", // 美食 + "presetMusic": "Predvajaj glasbo", // 来点音乐 + "presetNavigation": "Navigiraj do", // 导航 + "presetWeather": "Vreme danes", // 今日天气 + "presetNews": "Novice danes", // 今日新闻 + "presetFood": "Hrano v bližini", // 美食 + "playSomeMusic": "Predvajaj priljubljeno glasbo", // 播放一些流行音乐 + "navigationTo": "Navigiraj do", // 导航到 + "todayWeather": "Kako je danes vreme?", // 今日天气 + "todayNews": "Kakšne so danes novice?", // 今日新闻 + "nearbyFood": "Kje je dobrih jedi v bližini?", // 附近有什么好吃的 // Agent模块 - 欢迎消息与权限 - 'welcomeMessage': '你好!我是**Lily**,我能帮你:\n\n' - '• 回答问题和提供信息\n\n' - '• 实时语音翻译\n\n' - '• 推荐音乐和播客\n\n' - '• 语音备忘录和提醒\n\n' - '• 控制耳机功能\n\n' - '有什么我可以帮你的吗?', + 'welcomeMessage': 'Pozdravljeni! Sem **Lily**.\n\n' + '• Odgovorim na vprašanja in podam informacije\n\n' + '• Realnočasovni govorni prevod\n\n' + '• Priporočam glasbo in podkaste\n\n' + '• Glasovne zapiske in opomniki\n\n' + '• Upravljam funkcije slušalk\n\n' + 'V čem vam lahko pomagam?', 'microphonePermission': 'Mikrofon', 'voiceRecognitionPermissionText': 'Funkcija prepoznavanja govora zahteva dostop do mikrofona.', @@ -953,16 +958,16 @@ const Map slSI = { 'useAppleNavigation': 'Navigate with Apple Maps', 'builtInNavigation': 'Built-in Navigation', 'useBuiltInNavigation': 'Navigate with built-in map', - 'navigationStartFailed': 'Failed to start navigation', + 'navigationStartFailed': 'Zagon navigacije ni uspel', 'cannotPlayMusicListRetryLater': - 'Cannot play music list, please try again later', + 'Seznama glasbe ni mogoče predvajati, poskusite znova pozneje', 'cannotPlaySong': 'Cannot play song', - 'openMapError': 'Error opening map', - 'pleaseInstallAmapApp': 'Please install the Amap app first', - 'pleaseInstallBaiduMapApp': 'Please install the Baidu Maps app first', - 'appleMapStartFailed': 'Apple Maps failed to start', + 'openMapError': 'Napaka pri odpiranju zemljevida', + 'pleaseInstallAmapApp': 'Najprej namestite aplikacijo Amap', + 'pleaseInstallBaiduMapApp': 'Najprej namestite aplikacijo Baidu Maps', + 'appleMapStartFailed': 'Apple Maps se ni uspel zagnati', 'appleMapUnavailable': 'Apple Maps unavailable', - 'openAppleMapError': 'Error opening Apple Maps', + 'openAppleMapError': 'Napaka pri odpiranju Apple Maps', // Agent模块 - 天气卡片 'weatherQuery': 'Poizvedba o vremenskih razmerah:', @@ -1017,8 +1022,8 @@ const Map slSI = { "strongWind": "Močan veter", // 翻译模块 - 中间层 - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", + "pictureTranslation": "Prevajanje slike", + "textTranslation": "Prevajanje besedila", // 翻译模块 - 主页 "translationHistory": "Zgodovina prevodov", @@ -1031,29 +1036,29 @@ const Map slSI = { "me": "Me", "counterPart": "Counterpart", "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "Preverite, ali so Bluetooth slušalke povezane s telefonom in v stanju klica", "autoDetect": "Auto Detect", // 自动检测 // 翻译模块 - 文本翻译 - "languageDetectionFailed": "Language detection failed", + "languageDetectionFailed": "Prepoznavanje jezika ni uspelo", // 翻译模块 - 悬浮窗与权限 - 'disableFloatingWindow': 'Disable Floating Window', - 'enableFloatingWindow': 'Enable Floating Window', - 'permissionTip': 'Permission Tip', + 'disableFloatingWindow': 'Onemogoči plavajoče okno', + 'enableFloatingWindow': 'Omogoči plavajoče okno', + 'permissionTip': 'Namig za dovoljenja', 'micPermissionRequiredForRecording': - 'Microphone permission is required for recording', - 'deleteTranslationRecordError': 'Error deleting translation record: @error', - "translationFailed": "Translation failed", + 'Za snemanje je potrebno dovoljenje mikrofona', + 'deleteTranslationRecordError': 'Napaka pri brisanju zapisa prevoda: @error', + "translationFailed": "Prevajanje ni uspelo", "translating": "Translating", - "translate": "Translate", - "pleaseInputText": "Please input text", + "translate": "Prevedi", + "pleaseInputText": "Vnesite besedilo", "inputTextToTranslate": "Vnesite besedilo za prevod", "textTooLong": "Text too long, max 5000 characters", // 翻译模块 - 历史记录 "noTranslationHistory": "Ni zgodovine", - "historyRecords": "History Records", + "historyRecords": "Zgodovina", "clearResults": "Clear Results", "clearHistory": "Počisti zgodovino", "clearHistoryConfirm": @@ -1066,12 +1071,12 @@ const Map slSI = { // 翻译模块 - 图片翻译 "selectImageSource": "Select Image Source", "imagePreview": "Image Preview", - "translationResult": "Translation Result", + "translationResult": "Rezultat prevoda", "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", + "translatedImagePreview": "Predogled prevedene slike", + "translatedImageLoadFailed": "Prevedene slike ni bilo mogoče naložiti", + "pleaseSelectImage": "Izberite sliko", + "imageLoadFailed": "Nalaganje slike ni uspelo", "imageQuality": "Image Quality", "maxSize": "Max Size", "close": "Close", @@ -1080,38 +1085,38 @@ const Map slSI = { "setMaxSize": "Set Max Size", "currentMaxSize": "Current: @pxpx", "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", + "pleaseSelectImageToStart": "Za začetek izberite sliko", "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", + "callingImageTranslateService": "Klicanje storitve za prevajanje slik...", + "savingRecord": "Shranjevanje zapisa", + "savingTranslationResult": "Shranjevanje rezultata prevoda...", + "translationCompleted": "Prevajanje dokončano", "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", + "processingFailed": "Obdelava ni uspela", "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", + "Obdelava slike ali prevajanje ni uspelo. Poskusite znova.\nNapaka: {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", + "emptyTranslationResult": "API za prevajanje slik je vrnil prazen rezultat", "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", + "Prevajanje slike ni uspelo. Težava z omrežjem ali omejitev hitrosti. Poskusite pozneje", "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", + "Izjema API za prevajanje slik. Preverite omrežje in poskusite znova", + "permissionRequired": "Zahtevano dovoljenje", + "cameraPermissionRequired": "Za fotografiranje je potrebno dovoljenje kamere", "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", + "Za izbiro slik je potrebno dovoljenje za fotografije", + "translationDetails": "Podrobnosti prevoda", "originalImage": "Original Image", "sourceLanguage": "Source Language", "targetLanguage": "Target Language", - "translationTime": "Translation Time", + "translationTime": "Čas prevajanja", "shareInDevelopment": "Sharing feature under development", // 翻译模块 - 录音文件 @@ -1208,18 +1213,18 @@ const Map slSI = { 'AccountService je bil inicializiran', // AccountService 已初始化 // 权限模块 - 'meetingStoragePermission': 'Storage', + 'meetingStoragePermission': 'Shramba', 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', + 'Za izbiro in nalaganje zvočnih datotek potrebujemo dostop do dovoljenja za shranjevanje.', 'meetingStoragePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', + 'Zaznali smo, da ste trajno zavrnili dovoljenje za shrambo. Za nadaljnjo uporabo te funkcije pojdite v nastavitve aplikacije in ročno omogočite dovoljenje za shrambo.', 'getPermissionStatusFailed': 'Pridobivanje stanja dovoljenja ni uspelo', 'communicationPermissions': 'Dovoljenja za komunikacijo', - 'bluetoothPermissions': 'Bluetooth Permissions', - 'notificationPermissions': 'Notification Permissions', - 'storagePermissions': 'Storage Permissions', - 'microphonePermissions': 'Microphone Permissions', - 'alarmPermissions': 'Alarm Permissions', + 'bluetoothPermissions': 'Dovoljenja Bluetooth', + 'notificationPermissions': 'Dovoljenja za obvestila', + 'storagePermissions': 'Dovoljenja za shranjevanje', + 'microphonePermissions': 'Dovoljenja za mikrofon', + 'alarmPermissions': 'Dovoljenja za alarm', 'calendarPermissions': 'Dovoljenja za koledar', 'locationPermissions': 'Dovoljenja za lokacijo', 'phone': 'Telefon', @@ -1253,7 +1258,7 @@ const Map slSI = { 'smsPermissionDetailDesc': 'Funkcija pošiljanja SMS zahteva dovoljenje za SMS', 'alarmPermissionDetailDesc': - 'This permission is required to set exact alarms and ensure reminders trigger on time', + 'To dovoljenje je potrebno za nastavitev natančnih alarmov in zagotavljanje pravočasnega sprožanja opomnikov', 'calendarWritePermissionDetailDesc': 'Ustvarjanje dogodkov v koledarju zahteva dovoljenje za pisanje v koledar', 'calendarFullAccessPermissionDetailDesc': @@ -1262,63 +1267,65 @@ const Map slSI = { 'Pridobivanje informacij o lokaciji zahteva dovoljenje za lokacijo', 'contactsPermissionDesc': 'Used for accessing contact information', 'contactsPermissionDetailDesc': - 'Phone call and SMS functionality requires contacts permission to select contacts', + 'Funkciji klicanja in SMS zahtevata dovoljenje za stike, da lahko izberete stike', 'bluetoothPermissionDesc': - 'Used for connecting and managing Bluetooth devices', + 'Uporablja se za povezovanje in upravljanje Bluetooth naprav', 'bluetoothPermissionDetailDesc': - 'Connecting to Bluetooth headphones and other devices requires Bluetooth permission', - 'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices', + 'Za povezovanje z Bluetooth slušalkami in drugimi napravami je potrebno dovoljenje Bluetooth', + 'bluetoothScanPermissionDesc': + 'Uporablja se za iskanje bližnjih Bluetooth naprav', 'bluetoothScanPermissionDetailDesc': - 'Scanning for nearby Bluetooth devices requires Bluetooth scan permission', - 'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices', + 'Za iskanje bližnjih Bluetooth naprav je potrebno dovoljenje za skeniranje Bluetooth', + 'bluetoothConnectPermissionDesc': + 'Uporablja se za povezovanje z Bluetooth napravami', 'bluetoothConnectPermissionDetailDesc': - 'Connecting to Bluetooth devices requires Bluetooth connect permission', + 'Za povezovanje z Bluetooth napravami je potrebno dovoljenje za povezavo Bluetooth', 'notificationPermissionDesc': 'Used for sending notification messages', 'notificationPermissionDetailDesc': - 'App needs notification permission to send you important alerts and messages', + 'Aplikacija potrebuje dovoljenje za obvestila, da vam lahko pošilja pomembna opozorila in sporočila', 'appNeedsPermissionForFullFunction': 'Aplikacija zahteva to dovoljenje za polno funkcionalnost', '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', + 'bluetoothConnect': 'Povezava Bluetooth', 'bluetoothScanExplanation': - 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', + 'Aplikacija potrebuje dovoljenje za skeniranje Bluetooth za iskanje bližnjih Bluetooth naprav.', 'bluetoothConnectExplanation': - 'The app needs Bluetooth connect permission to connect to Bluetooth devices.', + 'Aplikacija potrebuje dovoljenje za povezavo Bluetooth za povezovanje z Bluetooth napravami.', 'locationForBluetoothExplanation': - 'The app needs location permission to scan Bluetooth devices.', + 'Aplikacija potrebuje dovoljenje za lokacijo za iskanje Bluetooth naprav.', 'bluetoothScanPermanentDenial': - 'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.', + 'Dovoljenje za skeniranje Bluetooth je bilo trajno zavrnjeno, pojdite v nastavitve in ga ročno omogočite.', 'bluetoothConnectPermanentDenial': - 'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.', + 'Dovoljenje za povezavo Bluetooth je bilo trajno zavrnjeno, pojdite v nastavitve in ga ročno omogočite.', 'locationPermanentDenial': - 'Location permission has been permanently denied, please go to settings to enable it manually.', + 'Dovoljenje za lokacijo je bilo trajno zavrnjeno, pojdite v nastavitve in ga ročno omogočite.', 'notificationPermission': 'Notification', 'locationPermission': 'Location', 'notificationPermissionExplanation': - 'Notification permission is required to display music playback status.', + 'Dovoljenje za obvestila je potrebno za prikaz stanja predvajanja glasbe.', 'locationPermissionExplanation': - 'Location permission is required to get current location.', + 'Dovoljenje za lokacijo je potrebno za pridobitev trenutne lokacije.', 'notificationPermissionPermanentDenial': - 'You have permanently denied notification permission, please go to settings to enable it.', + 'Trajno ste zavrnili dovoljenje za obvestila, pojdite v nastavitve in ga omogočite.', 'locationPermissionPermanentDenial': - 'You have permanently denied location permission, please go to settings to enable it.', + 'Trajno ste zavrnili dovoljenje za lokacijo, pojdite v nastavitve in ga omogočite.', 'storagePermission': 'Storage', 'microphonePermissionExplanation': - 'We need microphone permission to record audio content.', + 'Potrebujemo dovoljenje mikrofona za snemanje zvočne vsebine.', 'storagePermissionExplanation': - 'We need storage permission so you can select and upload audio files.', + 'Potrebujemo dovoljenje za shranjevanje, da lahko izberete in naložite zvočne datoteke.', 'microphonePermissionPermanentDenial': - '检测到您已永久拒绝录音权限。如需继续使用此功能,请前往应用设置中手动开启麦克风权限。', + 'Zaznali smo, da ste trajno zavrnili dovoljenje za mikrofon. Za nadaljnjo uporabo te funkcije pojdite v nastavitve aplikacije in ročno omogočite dovoljenje za mikrofon.', 'storagePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', + 'Zaznali smo, da ste trajno zavrnili dovoljenje za shrambo. Za nadaljnjo uporabo te funkcije pojdite v nastavitve aplikacije in ročno omogočite dovoljenje za shrambo.', 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', + 'permissionUtilPermission': ' Dovoljenje', + 'permissionUtilRestricted': ' Dovoljenje omejeno', 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'Ta funkcija na trenutni napravi ni na voljo ali je omejena; preverite nastavitve naprave ali sistemske omejitve', 'permissionUtilConfirm': 'OK', // 原生前台服务通知(Android) @@ -1409,27 +1416,27 @@ const Map slSI = { 'bleConnectionFailed': 'Povezava BLE ni uspela', 'deviceAuthorizationFailedCheckCode': 'Avtorizacija naprave ni uspela, preverite avtorizacijsko kodo', - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + 'bluetoothGuideTitle': 'Potrebna je ročna aktivacija Bluetootha', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'Prosimo, sledite tem korakom:', // 请按照以下步骤操作: 'bluetoothGuideStep1': - 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'Vklopite Bluetooth: Nastavitve → Bluetooth → Vklopi', // 开启蓝牙:设置 → 蓝牙 → 开启 'bluetoothGuideStep2': - 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'Povežite napravo: v "Moje naprave" poiščite svojo napravo in tapnite za povezavo', // 连接设备:在"我的设备"中找到您的设备并点击连接 'bluetoothGuideStep3': - 'Return to app to continue pairing process', // 返回应用继续配对流程 + 'Vrnite se v aplikacijo in nadaljujte postopek seznanjanja', // 返回应用继续配对流程 'bluetoothGuideTip': - 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': 'I Know', // 我知道了 + 'Namig: za hiter dostop do nastavitev Bluetooth lahko v Nadzornem centru dolgo pritisnete ikono Bluetooth', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + 'iKnow': 'Razumem', // 我知道了 // 配对模块 - 绑定奖励 - "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:", + "firstBindRewardTitle": "Pozdravna nagrada", + "firstBindRewardDesc": "Prejeli ste nagrade za vezavo.", + "vipLevelLabel": "VIP raven:", + "expiryLabel": "Datum poteka:", + "notActivated": "Ni aktivirano", + "aiChatCreditsLabel": "Krediti za AI klepet:", + "translationCreditsLabel": "Kredity prevajanja:", + "meetingCreditsLabel": "Krediti za sestanke:", "ok": "OK", // 用户反馈模块 @@ -1460,13 +1467,14 @@ const Map slSI = { "connectionFailed": "Povezava ni uspela", "retryConnection": "Ponovno poskusi povezati", "ota_updateNow": "Posodobi zdaj", - "otaVersionInfoFailed": "Failed to get version info. Please try again later.", + "otaVersionInfoFailed": + "Pridobivanje informacij o različici ni uspelo. Poskusite znova pozneje.", "otaDeviceInfoUnavailable": - "Unable to get device info. Please check the connection and retry.", + "Ni mogoče pridobiti informacij o napravi. Preverite povezavo in poskusite znova.", "otaProductInfoUnavailable": - "Unable to identify the device. Please reconnect and retry.", + "Naprave ni mogoče prepoznati. Ponovno jo povežite in poskusite znova.", "otaFirmwareVersionInvalid": - "Firmware version is abnormal. Please reconnect and retry.", + "Različica vdelane programske opreme je nenavadna. Ponovno povežite napravo in poskusite znova.", "keepConnectedDontClose": "Ohranite napravo povezano, ne zapirajte aplikacije", "doNotDisconnect": "Ne prekinjajte povezave", @@ -1479,54 +1487,55 @@ const Map slSI = { 'otaNewVersionFoundWithVersion': 'New version @version found', 'otaConfirmUpdateNow': 'Update now?', 'otaUpdate': 'Update', - 'otaUpgradeSuccess': 'Upgrade Successful', + 'otaUpgradeSuccess': 'Nadgradnja uspešna', 'otaUpgradeCompleteRepair': - 'Firmware upgrade complete!\n\nDevice needs to be re-paired to work properly. Go to pairing page now?', + 'Nadgradnja vdelane programske opreme dokončana!\n\nZa pravilno delovanje je treba napravo znova seznaniti. Želite zdaj na stran za seznanjanje?', 'otaPairLater': 'Pair Later', 'otaPairNow': 'Pair Now', 'okConfirm': 'OK', // OTA升级模块 - 设备检查 - 'otaBleCheckErrorWithError': 'Error checking BLE connection: @error', - 'otaBleNotConnected': 'BLE Device Not Connected', + 'otaBleCheckErrorWithError': 'Napaka pri preverjanju povezave BLE: @error', + 'otaBleNotConnected': 'Naprava BLE ni povezana', 'otaBleNeedConnection': - 'Firmware upgrade requires BLE device connection\nPlease ensure device is properly connected and try again', - 'otaDeviceInfoUnavailableTitle': 'Device Info Unavailable', + 'Nadgradnja vdelane programske opreme zahteva povezavo naprave BLE\nPreverite, ali je naprava pravilno povezana, in poskusite znova', + 'otaDeviceInfoUnavailableTitle': 'Informacije o napravi niso na voljo', 'otaCannotGetDeviceInfo': - 'Cannot get device info\nPlease reconnect device or try again later', - 'otaBleCheckFailed': 'BLE Connection Check Failed', + 'Ni mogoče pridobiti informacij o napravi\nPonovno povežite napravo ali poskusite znova pozneje', + 'otaBleCheckFailed': 'Preverjanje povezave BLE ni uspelo', 'otaCannotGetDeviceInfoCheckConnection': - 'Cannot get device info, please check device connection', + 'Ni mogoče pridobiti informacij o napravi, preverite povezavo naprave', 'otaCannotGetProductInfoWithName': - 'Cannot get product info, device name: @deviceName', + 'Ni mogoče pridobiti informacij o izdelku, ime naprave: @deviceName', 'otaCannotGetBatteryInfo': 'Cannot get valid battery info', 'otaLowBattery': 'Low Battery', 'otaSingleBatteryLow': - 'Device battery too low for firmware upgrade\nRequirement: battery must be above 20%\nCurrent: @ear @battery%\nPlease charge and try again', + 'Baterija naprave je prenizka za nadgradnjo vdelane programske opreme\nZahteva: baterija mora biti nad 20%\nTrenutno: @ear @battery%\nNapolnite in poskusite znova', 'otaDoubleBatteryLow': - 'Device battery too low for firmware upgrade\nRequirement: both earbuds must be above 20%\nCurrent: Left @left%, Right @right%\nPlease charge and try again', - 'otaBatteryCheckFailed': 'Battery Check Failed', + 'Baterija naprave je prenizka za nadgradnjo vdelane programske opreme\nZahteva: obe slušalki morata biti nad 20%\nTrenutno: Leva @left%, Desna @right%\nNapolnite in poskusite znova', + 'otaBatteryCheckFailed': 'Preverjanje baterije ni uspelo', // OTA升级模块 - 升级状态 'otaDefaultUpdateDesc': 'This update includes performance optimizations and bug fixes.', - 'otaGetLatestVersionFailed': 'Failed to get latest version info', - 'otaGetVersionInfoFailed': 'Failed to get version info', - 'otaCheckingDeviceStatus': 'Checking device status...', + 'otaGetLatestVersionFailed': + 'Pridobivanje informacij o najnovejši različici ni uspelo', + 'otaGetVersionInfoFailed': 'Pridobivanje informacij o različici ni uspelo', + 'otaCheckingDeviceStatus': 'Preverjanje stanja naprave...', 'otaDownloadFailedCheckNetwork': - 'Download failed, please check network connection', - 'otaDownloadFailed': 'Download Failed', - 'otaPreparingConnection': 'Preparing device connection...', - 'otaConnectingDevice': 'Connecting to device...', + 'Prenos ni uspel, preverite omrežno povezavo', + 'otaDownloadFailed': 'Prenos ni uspel', + 'otaPreparingConnection': 'Priprava povezave naprave...', + 'otaConnectingDevice': 'Povezovanje z napravo...', 'otaUpgradeStarted': 'OTA upgrade started...', 'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%', - 'otaUpgradeSuccessComplete': 'Upgrade completed successfully', - 'otaUpgradeFailedWithCode': 'Upgrade failed, error code: @code', - 'otaUpgradeFailedTitle': 'Upgrade Failed', + 'otaUpgradeSuccessComplete': 'Nadgradnja je bila uspešno dokončana', + 'otaUpgradeFailedWithCode': 'Nadgradnja ni uspela, koda napake: @code', + 'otaUpgradeFailedTitle': 'Nadgradnja ni uspela', 'otaUpgradeFailedDesc': - 'Please check device connection or update package, error code: @code', - 'otaDeviceDisconnected': 'Device disconnected', - 'otaDeviceConnected': 'Device connected', + 'Preverite povezavo naprave ali paket posodobitve, koda napake: @code', + 'otaDeviceDisconnected': 'Naprava je prekinila povezavo', + 'otaDeviceConnected': 'Naprava je povezana', // 音乐模块 "noMusic": "Ni glasbe", // 暂无音乐 diff --git a/lib/core/translations/language/sr_rs.dart b/lib/core/translations/language/sr_rs.dart index 2bced0a0e..c6aab02dc 100644 --- a/lib/core/translations/language/sr_rs.dart +++ b/lib/core/translations/language/sr_rs.dart @@ -1,3 +1,4 @@ +// 塞尔维亚-塞尔维亚语 const Map srRS = { // 通用 'continue': 'Nastavi', @@ -172,8 +173,7 @@ const Map srRS = { 'bleInitFailedWithError': 'Inicijalizacija Bluetooth-a nije uspela: @error', 'needBluetoothAndLocationPermission': 'Za skeniranje uređaja potrebne su dozvole za Bluetooth i lokaciju', - 'permissionRequestFailedWithError': - 'Zahtev za dozvolu nije uspeo: @error', + 'permissionRequestFailedWithError': 'Zahtev za dozvolu nije uspeo: @error', 'needPermission': 'Potrebna dozvola', 'blePermissionDialogContent': 'Ova aplikacija zahteva dozvole za Bluetooth i lokaciju za skeniranje uređaja. Molimo omogućite ih u Podešavanjima.', @@ -343,14 +343,16 @@ const Map srRS = { 'Duža kvota za razgovor, više poziva alata, produžena dužina konteksta.', 'aiHeaderDesc2': 'Pogodno za pitanja i odgovore agenta, sažimanje, analizu i izvršavanje zadataka.', - 'musicSearchPlaybackControl': 'Pretraga muzičke biblioteke i kontrola reprodukcije', + 'musicSearchPlaybackControl': + 'Pretraga muzičke biblioteke i kontrola reprodukcije', 'smartPlaylistAndSimilarRecommendations': 'Pametna lista pesama i preporuke sličnih pesama', - 'routePlanningAndCongestionAvoidance': - 'Planiranje rute i izbegavanje gužve', - 'voiceBroadcastAndWaypoints': 'Glasovno emitovanje i podešavanje putnih tačaka', + 'routePlanningAndCongestionAvoidance': 'Planiranje rute i izbegavanje gužve', + 'voiceBroadcastAndWaypoints': + 'Glasovno emitovanje i podešavanje putnih tačaka', 'realTimeWeatherForecast': 'Vremenski uslovi i prognoza u realnom vremenu', - 'clothingAdviceAndTravelReminders': 'Saveti za odeću i podsetnici za putovanje', + 'clothingAdviceAndTravelReminders': + 'Saveti za odeću i podsetnici za putovanje', 'poiSearchFoodGasParking': 'POI pretraga: hrana / gorivo / parking', 'ratingsHoursAndDirectRoutes': 'Ocene, radno vreme i direktne rute', 'hotNewsAndTopicOverview': 'Najnovije vesti i pregled tema', @@ -511,7 +513,8 @@ const Map srRS = { 'connectingWifi': 'Povezivanje sa Wi-Fi-jem...', 'wifiConnected': 'Wi-Fi uspešno povezan', 'downloadingFiles': 'Preuzimanje datoteka...', - 'downloadingFileProgress': 'Ukupno {total} datoteka, preuzimanje datoteke {current}', + 'downloadingFileProgress': + 'Ukupno {total} datoteka, preuzimanje datoteke {current}', 'downloadComplete': 'Preuzimanje završeno', 'downloadCompleteInfo': 'Preuzimanje završeno, ukupno {count} datoteka, automatsko vraćanje za 2 sekunde', @@ -603,7 +606,8 @@ const Map srRS = { 'shareAudio': 'Podeli audio sastanka', 'shareComplete': 'Deljenje završeno!', 'shareFailed': 'Deljenje nije uspelo: {error}', - 'fileProcessingFailed': 'Obrada datoteke nije uspela: {filePath}, greška: {error}', + 'fileProcessingFailed': + 'Obrada datoteke nije uspela: {filePath}, greška: {error}', // Meeting模块 - 思维导图 'saveMindMap': 'Sačuvaj mentalnu mapu', @@ -663,7 +667,8 @@ const Map srRS = { 'meetingHours': 'Sati', 'voitransAiMember': 'Voitrans AI član', 'unlockStarterMember': 'Otključajte početno članstvo', - 'bindDeviceToActivate': 'Povežite Voitrans uređaj da aktivirate početno članstvo', + 'bindDeviceToActivate': + 'Povežite Voitrans uređaj da aktivirate početno članstvo', 'unlockNow': 'Otključaj sada', // Meeting模块 - 会员与升级 @@ -712,7 +717,8 @@ const Map srRS = { 'unlimitedMonthly': 'Neograničeno ¥120/mesec', 'unlimitedMonthlyDesc': '7-dnevni besplatni probni period, zatim ¥1600/godišnje. Otkažite bilo kada pre isteka probnog perioda.', - 'trialNote': '*Besplatni probni period 7 dana, zatim se naplaćuje godišnje, otkažite bilo kada.', + 'trialNote': + '*Besplatni probni period 7 dana, zatim se naplaćuje godišnje, otkažite bilo kada.', 'proPrice': 'Pro ¥120', 'proMonthlyPrice': '¥120/mesec', 'subscribe': 'Pretplati se', @@ -822,7 +828,8 @@ const Map srRS = { "noMacAddress": "Nema MAC adrese", "licenseCode": "Licencni kod", "confirmUnbind": "Potvrdite prekid veze", - "confirmUnbindMessage": "Da li ste sigurni da želite da prekinete vezu sa uređajem \\", + "confirmUnbindMessage": + "Da li ste sigurni da želite da prekinete vezu sa uređajem \\", "confirmUnbindAction": "Potvrdi prekid veze", // Agent模块 - 主界面 @@ -1102,8 +1109,7 @@ const Map srRS = { "Izuzetak API-ja za prevod slike. Proverite mrežu i pokušajte ponovo", "permissionRequired": "Potrebna dozvola", "cameraPermissionRequired": "Dozvola za kameru je potrebna za fotografisanje", - "photoAlbumPermissionRequired": - "Dozvola za album je potrebna za izbor slika", + "photoAlbumPermissionRequired": "Dozvola za album je potrebna za izbor slika", "translationDetails": "Detalji prevoda", "originalImage": "Originalna slika", "sourceLanguage": "Izvorni jezik", @@ -1265,10 +1271,12 @@ const Map srRS = { 'Koristi se za povezivanje i upravljanje Bluetooth uređajima', 'bluetoothPermissionDetailDesc': 'Povezivanje sa Bluetooth slušalicama i drugim uređajima zahteva dozvolu za Bluetooth', - 'bluetoothScanPermissionDesc': 'Koristi se za skeniranje Bluetooth uređaja u blizini', + 'bluetoothScanPermissionDesc': + 'Koristi se za skeniranje Bluetooth uređaja u blizini', 'bluetoothScanPermissionDetailDesc': 'Skeniranje Bluetooth uređaja u blizini zahteva dozvolu za Bluetooth skeniranje', - 'bluetoothConnectPermissionDesc': 'Koristi se za povezivanje sa Bluetooth uređajima', + 'bluetoothConnectPermissionDesc': + 'Koristi se za povezivanje sa Bluetooth uređajima', 'bluetoothConnectPermissionDetailDesc': 'Povezivanje sa Bluetooth uređajima zahteva dozvolu za Bluetooth povezivanje', 'notificationPermissionDesc': 'Koristi se za slanje obaveštenja', @@ -1406,7 +1414,8 @@ const Map srRS = { 'bleConnectionFailed': 'Neuspešna BLE veza', 'deviceAuthorizationFailedCheckCode': 'Neuspešna autorizacija uređaja, proverite autorizacioni kod', - 'bluetoothGuideTitle': 'Potrebno je ručno uključivanje Bluetooth-a', // 需要手动开启蓝牙 + 'bluetoothGuideTitle': + 'Potrebno je ručno uključivanje Bluetooth-a', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Molimo pratite sledeće korake:', // 请按照以下步骤操作: 'bluetoothGuideStep1': 'Uključite Bluetooth: Podešavanja → Bluetooth → Uključi', // 开启蓝牙:设置 → 蓝牙 → 开启 @@ -1458,7 +1467,8 @@ const Map srRS = { "connectionFailed": "Neuspešno povezivanje", "retryConnection": "Pokušaj ponovo povezivanje", "ota_updateNow": "Ažuriraj sada", - "otaVersionInfoFailed": "Dobijanje informacija o verziji nije uspelo. Pokušajte ponovo kasnije.", + "otaVersionInfoFailed": + "Dobijanje informacija o verziji nije uspelo. Pokušajte ponovo kasnije.", "otaDeviceInfoUnavailable": "Nije moguće dobiti informacije o uređaju. Proverite vezu i pokušajte ponovo.", "otaProductInfoUnavailable": @@ -1496,7 +1506,8 @@ const Map srRS = { 'Nije moguće dobiti informacije o uređaju, proverite vezu sa uređajem', 'otaCannotGetProductInfoWithName': 'Nije moguće dobiti informacije o proizvodu, naziv uređaja: @deviceName', - 'otaCannotGetBatteryInfo': 'Nije moguće dobiti validne informacije o bateriji', + 'otaCannotGetBatteryInfo': + 'Nije moguće dobiti validne informacije o bateriji', 'otaLowBattery': 'Slab nivo baterije', 'otaSingleBatteryLow': 'Nivo baterije uređaja je prenizak za nadogradnju firmvera\nUslov: baterija mora biti iznad 20%\nTrenutno: @ear @battery%\nMolimo napunite i pokušajte ponovo', @@ -1507,7 +1518,8 @@ const Map srRS = { // OTA升级模块 - 升级状态 'otaDefaultUpdateDesc': 'Ovo ažuriranje uključuje optimizacije performansi i ispravke grešaka.', - 'otaGetLatestVersionFailed': 'Dobijanje informacija o najnovijoj verziji nije uspelo', + 'otaGetLatestVersionFailed': + 'Dobijanje informacija o najnovijoj verziji nije uspelo', 'otaGetVersionInfoFailed': 'Dobijanje informacija o verziji nije uspelo', 'otaCheckingDeviceStatus': 'Provera statusa uređaja...', 'otaDownloadFailedCheckNetwork': diff --git a/lib/core/translations/language/sv_se.dart b/lib/core/translations/language/sv_se.dart index e29719e0c..b40dbca87 100644 --- a/lib/core/translations/language/sv_se.dart +++ b/lib/core/translations/language/sv_se.dart @@ -1,5 +1,5 @@ +//瑞典-瑞典语 const Map svSE = { - // 通用 'continue': 'Fortsätt', 'confirm': 'Bekräfta', @@ -80,7 +80,8 @@ const Map svSE = { // 登录模块 "welcome": "Välkommen", - "loginTips": "Logga in eller registrera dig med ditt telefonnummer eller din e-postadress", + "loginTips": + "Logga in eller registrera dig med ditt telefonnummer eller din e-postadress", "accountNumber": "Telefonnummer eller e-post", "verificationCode": "Verifieringskod", "getCode": "Hämta kod", @@ -99,16 +100,18 @@ const Map svSE = { "tip": "Tips", "pleaseEnterCompleteCode": "Ange hela verifieringskoden", "loginFailed": "Inloggning misslyckades, försök igen", - 'pleaseAcceptPrivacyPolicy': 'Läs och godkänn integritetspolicyn och användaravtalet först', + 'pleaseAcceptPrivacyPolicy': + 'Läs och godkänn integritetspolicyn och användaravtalet först', "enterVerificationCode": "Ange verifieringskod", "verificationCodeSentTo": "Verifieringskod har skickats till", "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,请充分阅读 + "welcomeToThisApp": + "Välkommen till Voitrans, vänligen läs noggrant", // 欢迎使用Voitrans,请充分阅读 "privacyPolicyText": - ",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 + "Genom att trycka på ”Godkänn och gå in” bekräftar du att du har läst och godkänner avtalen ovan. Tryck på ”Godkänner inte” för att avsluta appen.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Godkänner inte", // 不同意 "agreeAndEnter": "Godkänn och gå in", // 同意并进入 @@ -120,24 +123,29 @@ const Map svSE = { "signal": "Signal", "deviceId": "Enhets-ID", "firmwareVersion": "Firmware-version", - "disconnectedDevice": "Ingen enhet ansluten, klicka på knappen nedan för att ansluta", + "disconnectedDevice": + "Ingen enhet ansluten, klicka på knappen nedan för att ansluta", "connectDevice": "Anslut enhet", "topAiExperiences": "Topp AI-upplevelser", "aiAssistant": "AI Allround-assistent", "aiAssistantInfo": "Exklusiv konsult dygnet runt, svarar på frågor, ger råd", "interpretation": "Simultantolkning", - "simultaneousInterpretationInfo": "Realtidsöversättning för flera språk, bekymmersfria utlandsresor", + "simultaneousInterpretationInfo": + "Realtidsöversättning för flera språk, bekymmersfria utlandsresor", "aiCompanion": "Familjekamrat", "aiCompanionInfo": "Förstår dig, varmt sällskap", "homeSlogan": "Anslut världen, bortom ljudet", - "turnEarphones": "Öppna laddningsfodralet för hörlurarna och placera hörlurarna i dina öron", + "turnEarphones": + "Öppna laddningsfodralet för hörlurarna och placera hörlurarna i dina öron", "currentlyConnected": "För närvarande ansluten:", "unsystemSetup": "Gå till systeminställningar", "talkLater": "Senare", "initializing": "Initierar...", - "bluetoothInitializationFailure": "Initiering av Bluetooth-tjänst misslyckades", + "bluetoothInitializationFailure": + "Initiering av Bluetooth-tjänst misslyckades", "checkingPermissions": "Kontrollerar behörigheter...", - "lackPermissions": "Saknar Bluetooth-behörigheter och kräver att du tillåter åtkomst till plats", + "lackPermissions": + "Saknar Bluetooth-behörigheter och kräver att du tillåter åtkomst till plats", "searchingDevice": "Söker efter enheter...", "findConnectedDevice": "Hittade ansluten enhet", "notFound": "Ingen ansluten Bluetooth-enhet hittades", @@ -163,12 +171,16 @@ const Map svSE = { // 蓝牙扫描模块 'bleInitFailedWithError': 'Bluetooth-initiering misslyckades: @error', - 'needBluetoothAndLocationPermission': 'Bluetooth- och platsbehörigheter krävs för att söka enheter', - 'permissionRequestFailedWithError': 'Behörighetsförfrågan misslyckades: @error', + 'needBluetoothAndLocationPermission': + 'Bluetooth- och platsbehörigheter krävs för att söka enheter', + 'permissionRequestFailedWithError': + 'Behörighetsförfrågan misslyckades: @error', 'needPermission': 'Behörighet krävs', - 'blePermissionDialogContent': 'Appen behöver Bluetooth- och platsbehörigheter för att söka enheter. Aktivera dem i Inställningar.', + 'blePermissionDialogContent': + 'Appen behöver Bluetooth- och platsbehörigheter för att söka enheter. Aktivera dem i Inställningar.', 'needEnableBluetooth': 'Aktivera Bluetooth', - 'enableBluetoothDialogContent': 'Aktivera Bluetooth för att söka och ansluta enheter.', + 'enableBluetoothDialogContent': + 'Aktivera Bluetooth för att söka och ansluta enheter.', 'bleScanFailedWithError': 'Sökning misslyckades: @error', 'bleConnectionSuccess': 'Anslutningen lyckades', 'bleConnectedToDevice': 'Ansluten till @device', @@ -200,118 +212,125 @@ const Map svSE = { "healthConsultant": "Mångfunktionell AI-chatt", "healthConsultantInfo": "Erbjuder fler AI-chattfunktioner", "conferenceAssistant": "Affärsmötesassistent", - "conferenceAssistantInfo": "Realtidsinspelning av mötesprotokoll, flerspråkig översättning", + "conferenceAssistantInfo": + "Realtidsinspelning av mötesprotokoll, flerspråkig översättning", "usageStats": "Användningsstatistik", "usageStatsInfo": "Visa din användningsstatistik", "scene": "Scenario", // 用量统计模块 - "aiChat": "AI Chat", - "translationStats": "Translation Statistics", - "meetingStats": "Meeting Statistics", - "today": "Today", - "thisWeek": "This Week", - "thisMonth": "This Month", - "history": "History", - "currentSessionStats": "Current Session Stats", - "translationCount": "Translation Count", - "sessionDuration": "Session Duration", - "characters": "Characters", - "recordingDuration": "Recording Duration", - "totalApiCalls": "Total API Calls", - "sessionCount": "Session Count", - "totalCharacters": "Total Characters", - "apiCallStats": "API Call Stats", - "translationApi": "Translation API", + "aiChat": "AI-chatt", + "translationStats": "Översättningsstatistik", + "meetingStats": "Mötesstatistik", + "today": "Idag", + "thisWeek": "Denna vecka", + "thisMonth": "Denna månad", + "history": "Historik", + "currentSessionStats": "Statistik för aktuell session", + "translationCount": "Antal översättningar", + "sessionDuration": "Sessionens längd", + "characters": "Tecken", + "recordingDuration": "Inspelningslängd", + "totalApiCalls": "Totalt antal API-anrop", + "sessionCount": "Antal sessioner", + "totalCharacters": "Totalt antal tecken", + "apiCallStats": "Statistik för API-anrop", + "translationApi": "Översättnings-API", "asr": "ASR", "tts": "TTS", - "dataVolumeStats": "Data Volume Stats", - "sourceTextCharacters": "Source Text Characters", - "ttsTextCharacters": "TTS Text Characters", - "effectiveAudioDuration": "Effective Audio Duration", - "totalSessionDuration": "Total Session Duration", - "costStats": "Cost Stats", - "estimatedCost": "Estimated Cost", - "dailyCostThreshold": "Daily Cost Threshold", - "monthlyCostThreshold": "Monthly Cost Threshold", - "usageBehaviorStats": "Usage Behavior Stats", - "mostUsedLanguagePair": "Most-used language pair", - "mostUsedMode": "Most-used mode", - "asrApiCalls": "ASR Calls", - "totalAudioDuration": "Total Audio Duration", - "audioFileSize": "Audio File Size", - "transcriptBytes": "Transcript Bytes", - "loadFailed": "Load Failed", - "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", + "dataVolumeStats": "Statistik för datavolym", + "sourceTextCharacters": "Tecken i källtext", + "ttsTextCharacters": "Tecken i TTS-text", + "effectiveAudioDuration": "Effektiv ljudlängd", + "totalSessionDuration": "Total sessionslängd", + "costStats": "Kostnadsstatistik", + "estimatedCost": "Uppskattad kostnad", + "dailyCostThreshold": "Daglig kostnadsgräns", + "monthlyCostThreshold": "Månatlig kostnadsgräns", + "usageBehaviorStats": "Statistik för användningsbeteende", + "mostUsedLanguagePair": "Mest använda språkpar", + "mostUsedMode": "Mest använda läge", + "asrApiCalls": "ASR-anrop", + "totalAudioDuration": "Total ljudlängd", + "audioFileSize": "Ljudfilstorlek", + "transcriptBytes": "Transkriptionsbyte", + "loadFailed": "Kunde inte läsa in", + "statsLoadFailedTryLater": + "Kunde inte läsa in statistik. Försök igen senare.", "cleanupComplete": "Cleanup Complete", "cleanedOldData": "Cleaned data older than 90 days", "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", // 商品模块 - 通用 - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - '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.", + 'availablePackages': 'Tillgängliga paket', + 'remainingQuota': 'Återstående kvot', + 'totalQuota': 'Total kvot', + 'remaining': 'Återstår', + 'featureDescription': 'Funktionsbeskrivning', + '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": "Otillräckliga poäng", + "insufficientBalanceDesc": + "Otillräckligt saldo, gå till rätt påfyllningssida för att fylla på.", + "recharge": "Gå till påfyllning", + "aiMemberExpiredDesc": + "AI-medlemskapet har gått ut, gå till medlemskapets påfyllningssida för att förnya.", // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', @@ -319,11 +338,15 @@ const Map svSE = { '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.', + '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', + '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', @@ -332,33 +355,40 @@ const Map svSE = { '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.', + 'templatedMessagesAndScheduleReminders': + 'Template messages and schedule reminders', + 'aiDisclaimer': + 'Funktioner beror på enhetens behörigheter, tjänstens tillgänglighet och nätverksförhållanden.', // 商品模块 - 翻译商品页 'realtimeTranscription': 'Real-time Transcription', 'sceneLexicon': 'Scenario Glossary', 'subtitleDisplay': 'Subtitles', - 'transHeaderDesc1': 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'transHeaderDesc1': + 'Simultantolkning i realtid och textöversättning med låg latens.', 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', + 'translateZhEn': 'Kinesisk–engelsk översättning', 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': 'Terminology optimization and context preservation', + 'multiLangTextTranslation': 'Flerspråkig textöversättning', + '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.', + 'transDisclaimer': + 'Översättningens prestanda beror på mikrofon, nätverkslatens och bakgrundsljud.', // 商品模块 - 会议商品页 - 'meetingRecording': 'Meeting Recording', + 'meetingRecording': 'Mötesinspelning', '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', + 'meetingHeaderDesc1': + 'Ljudinspelning, transkribering, nyckelordssökning och automatisk sammanfattning för att öka möteseffektiviteten.', + 'meetingHeaderDesc2': + 'Suitable for business meetings, class notes, and interview minutes.', + 'meetingAutoRecording': 'Automatisk inspelning och segmentering', 'meetingSpeakerTagging': 'Speaker labeling', 'meetingLongAudioTranscription': 'Long audio transcription', 'meetingKeyPointSummary': 'Key point extraction', @@ -366,7 +396,8 @@ const Map svSE = { 'meetingTimelineJump': 'Timeline jump', 'meetingExportSummary': 'Export minutes', 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': 'Use in quiet environments; performance depends on microphone and network.', + 'meetingDisclaimer': + 'Använd i tysta miljöer; prestanda beror på mikrofon och nätverk.', // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', @@ -380,8 +411,9 @@ const Map svSE = { 'longTermDiscountPlan': 'Long-term discount plan', 'generalPrivileges': 'General privileges', 'earlyAccessNewFeatures': 'Early access to new features', - 'crossDeviceSync': 'Cross-device sync', - 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', + 'crossDeviceSync': 'Synkronisering mellan enheter', + 'vipDisclaimer': + 'Actual benefits depend on the package details and may change with versions.', // 商品模块 - 商品名称与描述 'ai_001_name': 'AI Basic 100', @@ -390,18 +422,18 @@ const Map svSE = { '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', + 'trans_001_name': 'Översättning Bas 100', + 'trans_002_name': 'Översättning Bas 500', + 'trans_003_name': 'Översättning Bas 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).', + 'meet_001_desc': 'Inkluderar 100 mötesinspelningar/transkriptioner.', + 'meet_002_desc': 'Inkluderar 500 mötesinspelningar/transkriptioner.', + 'meet_003_desc': 'Inkluderar 1000 mötesinspelningar/transkriptioner.', + 'trans_001_desc': 'Inkluderar 100 översättningar (röst/text).', + 'trans_002_desc': 'Inkluderar 500 översättningar (röst/text).', + 'trans_003_desc': 'Inkluderar 1000 översättningar (röst/text).', // 商品模块 - 页脚 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', @@ -431,7 +463,8 @@ const Map svSE = { 'guideNavInput': 'Navigate to Shenzhen Airport', 'guideNavSend': 'Lily will plan the route', 'guideNavEnd': 'Navigation set—try other commands', - 'guideMeetingStart': 'Tell Lily: “Create a meeting reminder for 3pm tomorrow”', + 'guideMeetingStart': + 'Tell Lily: “Create a meeting reminder for 3pm tomorrow”', 'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow', 'guideMeetingSend': 'Lily will create a meeting reminder', 'guideMeetingEnd': 'Reminder created—try other commands', @@ -456,47 +489,54 @@ const Map svSE = { 'recordingDetails': 'Inspelningsdetaljer', 'aiSummary': 'AI-sammanfattning', 'meetingTranscript': 'Mötesutskrift', - 'files': 'Files', - 'mine': 'Mine', - 'connect': 'Connect', - 'allFiles': 'All Files', - 'searchInAllFiles': 'Search in all files', - 'from': 'From', - 'sortBy': 'Sort by', - 'creationTime': 'Creation Time', - 'bluetoothConnection': 'Bluetooth Connection', - 'meetingReconnect': 'Reconnect', - 'searching': 'Searching...', - 'searchFailed': 'Search failed, please check if Bluetooth is enabled', - 'aiPenNotFound': 'AI PEN device not found', - 'connectedToAiPen': 'Connected to AI PEN device', - 'checkingNewFiles': 'Checking for new files to import', + 'files': 'Filer', + 'mine': 'Mina', + 'connect': 'Anslut', + 'allFiles': 'Alla filer', + 'searchInAllFiles': 'Sök i alla filer', + 'from': 'Från', + 'sortBy': 'Sortera efter', + 'creationTime': 'Skapad', + 'bluetoothConnection': 'Bluetooth-anslutning', + 'meetingReconnect': 'Anslut igen', + 'searching': 'Söker...', + 'searchFailed': + 'Sökningen misslyckades, kontrollera att Bluetooth är aktiverat', + 'aiPenNotFound': 'AI PEN-enhet hittades inte', + 'connectedToAiPen': 'Ansluten till AI PEN-enhet', + 'checkingNewFiles': 'Söker efter nya filer att importera', 'startingWifi': 'Starting Wi-Fi...', 'newFilesDetected': 'New files detected, preparing to import', 'noNewFiles': 'No new files to import', - 'connectingWifi': 'Connecting to Wi-Fi...', - 'wifiConnected': 'Wi-Fi connected successfully', - 'downloadingFiles': 'Downloading files...', - 'downloadingFileProgress': 'Total {total} files, downloading file {current}', - 'downloadComplete': 'Download complete', - 'downloadCompleteInfo': 'Download complete, {count} files in total, returning automatically in 2 seconds', + 'connectingWifi': 'Ansluter till Wi‑Fi...', + 'wifiConnected': 'Wi‑Fi anslutet', + 'downloadingFiles': 'Laddar ner filer...', + 'downloadingFileProgress': 'Totalt {total} filer, laddar ner fil {current}', + 'downloadComplete': 'Nedladdning klar', + 'downloadCompleteInfo': + 'Nedladdning klar, {count} filer totalt, återgår automatiskt om 2 sekunder', // Meeting模块 - 录音功能 - 'startRecording': 'Start Recording', - 'liveRecording': 'Live Recording', - 'audioVideoRecording': 'Audio/Video Recording', - 'callRecording': 'Call Recording', + 'startRecording': 'Starta inspelning', + 'liveRecording': 'Liveinspelning', + 'audioVideoRecording': 'Ljud-/videoinspelning', + 'callRecording': 'Samtalsinspelning', 'importAudio': 'Import Audio', 'meetingRecordExitTitle': 'Avsluta inspelning', // 退出录音 'meetingRecordExitMessage': 'Välj en åtgärd efter att ha lämnat', // 请选择离开后的操作 'meetingRecordEndAndSave': 'Avsluta och spara', // 结束录音并保存 'meetingRecordEndWithoutSave': 'Avsluta utan att spara', // 结束录音不保存 - 'meetingRecordContinueInBackground': 'Fortsätt spela in i bakgrunden', // 后台继续录音 - 'meetingRecordStopTimeout': 'Tidsgräns för att stoppa inspelning, försök igen', // 结束录音超时,请重试 - 'meetingRecordStopFailed': 'Misslyckades med att stoppa inspelningen, försök igen', // 结束录音失败,请重试 - 'meetingRecordSaveFailed': 'Misslyckades med att spara inspelningen, försök igen', // 保存录音失败,请重试 + 'meetingRecordContinueInBackground': + 'Fortsätt spela in i bakgrunden', // 后台继续录音 + 'meetingRecordStopTimeout': + 'Tidsgräns för att stoppa inspelning, försök igen', // 结束录音超时,请重试 + 'meetingRecordStopFailed': + 'Misslyckades med att stoppa inspelningen, försök igen', // 结束录音失败,请重试 + 'meetingRecordSaveFailed': + 'Misslyckades med att spara inspelningen, försök igen', // 保存录音失败,请重试 'meetingRecordRecordingNotificationTitle': 'Inspelning pågår', // 录音进行中 - 'meetingRecordRecordingNotificationBody': 'Spelar in i bakgrunden, tryck för att återgå', // 正在后台录音,点击返回应用 + 'meetingRecordRecordingNotificationBody': + 'Spelar in i bakgrunden, tryck för att återgå', // 正在后台录音,点击返回应用 'overlayPermissionTitle': 'Behörighet för flytande fönster', // 悬浮窗权限 'overlayPermissionTranslationDesc': 'För att visa översättningsresultat under samtal eller vid ljud-/videöversättning behöver vi behörigheten för flytande fönster. Det gör att du kan se översättningar i realtid när du använder andra appar.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 @@ -528,99 +568,105 @@ const Map svSE = { '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', + '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': 'Visa alla', + 'recordingLanguage': 'Inspelningsspråk', '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.', + 'meetingGenerateNow': 'Generera nu', + 'keyEventsAnalyzed': 'Analyserade {count} nyckelhändelser.', + 'aiAnalysisDesc': + 'AI-analys identifierar nyckelhändelser i inspelningar, så att du kan välja viktiga händelser för AI-generering.', // 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', + 'importing': 'Importerar...', + 'batchImporting': 'Batchimporterar...', + 'importingLocalRecordings': 'Importerar lokala inspelningar...', + 'importFailed': 'Import av fil misslyckades: {filePath}, fel: {error}', + 'importSuccess': 'Importerade {count} lokala inspelningar', + 'importError': 'Import misslyckades: {error}', + 'pleaseSelectAudioFile': 'Välj en ljudfil', 'shareAudio': 'Share Meeting Audio', 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + 'shareFailed': 'Delning misslyckades: {error}', + 'fileProcessingFailed': + 'Filbearbetning misslyckades: {filePath}, fel: {error}', // Meeting模块 - 思维导图 - 'saveMindMap': 'Spara tankekarta', - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', + 'saveMindMap': 'Spara tankekarta', + 'shareMindMap': 'Dela tankekarta', + 'shareSuccess': 'Delning lyckades', // 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', + 'askAI': 'Fråga AI...', + 'askAIPrompt': 'Hur kan jag hjälpa dig idag?', + 'continueAsk': 'Fortsätt fråga', + 'todoList': 'Att-göra-lista', + 'extractConclusion': 'Extrahera slutsats', + 'generateKeyIndicators': 'Skapa nyckelindikatorer', // 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', + 'shareLink': 'Dela länk', + 'copyTranscript': 'Kopiera transkript', + 'copySummary': 'Kopiera sammanfattning', + 'exportAudio': 'Exportera ljud', + 'exportTranscript': 'Exportera transkript', + 'shareMeetingAudio': 'Dela mötesljud', + 'exportSummary': 'Exportera sammanfattning', + 'exportAs': 'Exportera som', + 'exportingPDF': 'Exporterar 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', + 'summaryWillBeUpdatedAutomatically': + 'Sammanfattningen uppdateras automatiskt baserat på mallen', + 'nameCurrentSpeaker': 'Namnge aktuell talare', + 'recentlyUsedNames': 'Nyligen använda namn', + 'applyToCurrentParagraph': 'Använd på aktuellt stycke', + 'totalTime': 'Total tid', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Talare i sammanfattningen uppdateras automatiskt', // Meeting模块 - 云端同步 - 'syncToCloud': 'Sync to Cloud', + 'syncToCloud': 'Synkronisera till molnet', 'syncToCloudTip': - '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', + 'Synkronisera dina inspelningar automatiskt till molnet; du kan spela upp, hantera och dela inspelningar via valfri VOITRANS-app eller VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Synkronisera VOITRANS-appen', + 'transcriptionRecord': 'Transkriptionspost', // Meeting模块 - 我的页面 - 'transcriptionRecords': 'Transcription Records', - 'templateCommunity': 'Template Community', - 'comingSoon': 'Coming Soon', + 'transcriptionRecords': 'Transkriptionsposter', + 'templateCommunity': 'Mallgemenskap', + 'comingSoon': 'Kommer snart', 'integration': 'Integration', 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', - 'enabled': 'Enabled', - 'disabled': 'Disabled', - 'myVoitransDevice': 'My VOITRANS Device', + 'enabled': 'Aktiverad', + 'disabled': 'Inaktiverad', + 'myVoitransDevice': 'Min VOITRANS-enhet', 'helpAndFeedback': 'Help & Feedback', 'aboutVoitrans': 'About VOITRANS', - 'meetingDays': 'Days', - 'meetingHours': 'Hours', + 'meetingDays': 'Dagar', + 'meetingHours': 'Timmar', 'voitransAiMember': 'Voitrans AI Member', 'unlockStarterMember': 'Unlock Starter Member', - 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', - 'unlockNow': 'Unlock Now', + 'bindDeviceToActivate': + 'Koppla Voitrans-enhet för att aktivera Starter-medlemskap', + 'unlockNow': 'Lås upp nu', // Meeting模块 - 会员与升级 'comparison': 'Comparison', @@ -638,60 +684,74 @@ const Map svSE = { 'audioImport': 'Audio Import', 'multipleExportFormats': 'Multiple Export Formats', 'professionalSummaryTemplates': 'Professional Summary Templates', - 'professionalTemplateDesc': 'Professional template design to improve your work efficiency. Customized according to industry needs.', - 'customTemplateDesc': 'You can customize summary prompts according to your needs and use them to generate the required summaries.', - 'askAiDesc': 'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.', - 'visualMindMapDesc': 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', - 'templateCommunityDesc': 'Discover, share, and get inspiration from the template library created by users.', - 'speakerIdentificationDesc': 'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.', - 'privateCloudSyncDesc': 'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.', - '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.', + 'professionalTemplateDesc': + 'Professional template design to improve your work efficiency. Customized according to industry needs.', + 'customTemplateDesc': + 'You can customize summary prompts according to your needs and use them to generate the required summaries.', + 'askAiDesc': + 'Extraherar intelligent djupare information från inspelningar och skapar med ett klick datatabeller, viktiga diskussionsslutsatser, att-göra-listor, rapportmejl och annat formaterat innehåll.', + 'visualMindMapDesc': + 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', + 'templateCommunityDesc': + 'Discover, share, and get inspiration from the template library created by users.', + 'speakerIdentificationDesc': + 'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.', + 'privateCloudSyncDesc': + 'Dina inspelningar och transkriptioner lagras säkert på dedikerade molnservrar, med full kryptering vid uppladdning och nedladdning för att säkerställa integritet och säkerhet.', + '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': + 'Exportera dina ljudinspelningar, transkript och sammanfattningar i olika format (TXT, PDF, JPEG) efter behov.', 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', 'proMonthly': 'Pro ¥60/month', - 'proMonthlyDesc': '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', + 'proMonthlyDesc': + '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', 'sevenDayTrial': '7-day Free Trial', 'unlimitedMonthly': 'Unlimited ¥120/month', - 'unlimitedMonthlyDesc': '7-day free trial, then ¥1600/year. Cancel anytime before trial ends.', + 'unlimitedMonthlyDesc': + '7-day free trial, then ¥1600/year. Cancel anytime before trial ends.', 'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.', 'proPrice': 'Pro ¥120', 'proMonthlyPrice': '¥120/month', 'subscribe': 'Subscribe', 'unlimitedPrice': 'Unlimited ¥198', 'unlimitedMonthlyPrice': '¥198/month', - 'upgradeNote': '*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account', + 'upgradeNote': + '*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account', 'buyMoreTranscriptionTime': 'Buy More Transcription Time', 'sixThousandMinutes': '6,000 minutes', 'threeThousandMinutes': '3,000 minutes', 'sixHundredMinutes': '600 minutes', 'oneHundredTwentyMinutes': '120 minutes', 'validityPeriod': '*Validity Period: ', - 'validityNote': 'Activated immediately after purchase, valid for 2 years after activation.', + 'validityNote': + 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', // Meeting模块 - 录音语言 - 'recordLanguage': 'Recording Language', + 'recordLanguage': 'Inspelningsspråk', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', // 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', + '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', + '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", @@ -700,9 +760,10 @@ const Map svSE = { "translationRecharge": "Översättningslåntagning", "meetingAssistantRecharge": "Mötesassistentlåntagning", "cloudSync": "Molnsynkronisering", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", - "bindRewardSimpleDesc": "First bind device reward has been issued. Tap OK to close.", + "memberService": "Medlemstjänst", + "bindRewardTitle": "Belöningar", + "bindRewardSimpleDesc": + "Belöningen för den första enhetskopplingen har delats ut. Tryck på OK för att stänga.", "joinDevice": "Ansluten enhet:", "accountId": "Konto-ID:", "systemSetting": "Systeminställning", @@ -715,7 +776,8 @@ const Map svSE = { "privacySettings": "Integritetsinställningar", "privacySettingsInfo": "Hantera datainsamling och behörigheter", "permissionManagement": "Behörighetshantering", // 权限管理 - "permissionManagementInfo": "Hantera inställningar för appbehörigheter", // 管理应用权限设置 + "permissionManagementInfo": + "Hantera inställningar för appbehörigheter", // 管理应用权限设置 "aboutApplication": "Om appen", "versions": "Version", "checkUpdates": "Sök efter uppdateringar", @@ -724,9 +786,11 @@ const Map svSE = { "voiceServiceInfo": "Välj röstigenkännings- och syntestjänst", "selectVoiceService": "Välj rösttjänst", "azureVoiceService": "Azure Rösttjänst", - "azureVoiceServiceInfo": "Microsofts molnbaserade rösttjänst, stöder högkvalitativ röstsyntes och igenkänning", + "azureVoiceServiceInfo": + "Microsofts molnbaserade rösttjänst, stöder högkvalitativ röstsyntes och igenkänning", "flutterVoiceService": "Flutter Lokal Rösttjänst", - "flutterVoiceServiceInfo": "Enhetens lokala rösttjänst, kan användas utan internetanslutning", + "flutterVoiceServiceInfo": + "Enhetens lokala rösttjänst, kan användas utan internetanslutning", 'timbreService': 'Klangtjänst', 'timbreServiceInfo': 'Välj klangtjänst för röstsyntes', 'defaultTimbre': 'Standardklang', @@ -744,23 +808,25 @@ const Map svSE = { 'checkUpdateFailed': 'Kontroll av uppdatering misslyckades', 'networkErrorRetry': 'Nätverksfel, försök igen senare', "realtimeVoiceChat": "Realtids röstchatt", - "realtimeVoiceChatInfo": "Upplev intelligent röstinteraktionsfunktion (funktionsförhandsvisning)", + "realtimeVoiceChatInfo": + "Upplev intelligent röstinteraktionsfunktion (funktionsförhandsvisning)", "loading": "Laddar...", // 设备管理模块 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", - "deviceTypeSmartEye": "Smart Glasses", + "deviceTypeUnknown": "Okänd enhet", + "deviceTypeClassicBluetoothHeadset": "Klassiskt Bluetooth-headset", + "deviceTypeBleBluetoothHeadset": "BLE Bluetooth-headset", + "deviceTypeSmartVoiceRecorder": "Smart röstinspelare", + "deviceTypeSmartEye": "Smarta glasögon", "unbind": "Lossa bindning", - "noDevicesBound": "No devices bound yet", - "pleaseBindDeviceFirst": "Please bind a device first to manage", - "noMacAddress": "No MAC Address", - "licenseCode": "License Code", - "confirmUnbind": "Confirm Unbind", - "confirmUnbindMessage": "Are you sure you want to unbind device \\", - "confirmUnbindAction": "Confirm Unbind", + "noDevicesBound": "Inga enheter är kopplade ännu", + "pleaseBindDeviceFirst": "Koppla först en enhet för att hantera", + "noMacAddress": "Ingen MAC-adress", + "licenseCode": "Licenskod", + "confirmUnbind": "Bekräfta lossning", + "confirmUnbindMessage": + "Är du säker på att du vill lossa bindningen för enheten \"{deviceName}\"?", + "confirmUnbindAction": "Lossa bindning", // Agent模块 - 主界面 "Lily": "Lily", @@ -790,35 +856,40 @@ const Map svSE = { "loadMoreMessages": "Ladda fler meddelanden...", "loadFailedClickRetry": "Inläsning misslyckades, klicka för att försöka igen", "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.', + "callingTool": "Jag hjälper dig, vänta!", // 正在帮您,请稍等! + "voice_interrupt": "Avbryt", // 语音打断 + '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", // 今日天气 - "presetNews": "Today's news", // 今日新闻 - "presetFood": "Nearby food", // 美食 - "playSomeMusic": "Play some popular music", // 播放一些流行音乐 - "navigationTo": "Please help me navigate to", // 导航到 - "todayWeather": "How's the weather today?", // 今日天气 - "todayNews": "What's the news today?", // 今日新闻 - "nearbyFood": "What delicious food is nearby?", // 美食 + "presetMusic": "Spela musik", // 来点音乐 + "presetNavigation": "Navigera till", // 导航 + "presetWeather": "Vädret idag", // 今日天气 + "presetNews": "Nyheter idag", // 今日新闻 + "presetFood": "Mat i närheten", // 美食 + "playSomeMusic": "Spela populär musik", // 播放一些流行音乐 + "navigationTo": "Navigera till", // 导航到 + "todayWeather": "Hur är vädret idag?", // 今日天气 + "todayNews": "Vad är nyheterna idag?", // 今日新闻 + "nearbyFood": "Var finns god mat i närheten?", // 附近有什么好吃的 // Agent模块 - 欢迎消息与权限 - 'welcomeMessage': '你好!我是**Lily**,我能帮你:\n\n' - '• 回答问题和提供信息\n\n' - '• 实时语音翻译\n\n' - '• 推荐音乐和播客\n\n' - '• 语音备忘录和提醒\n\n' - '• 控制耳机功能\n\n' - '有什么我可以帮你的吗?', + 'welcomeMessage': 'Hej! Jag är **Lily**.\n\n' + '• Besvarar frågor och ger information\n\n' + '• Röstöversättning i realtid\n\n' + '• Rekommenderar musik och poddar\n\n' + '• Röstanteckningar och påminnelser\n\n' + '• styr hörlursfunktioner\n\n' + 'Vad kan jag hjälpa dig med?', 'microphonePermission': 'Mikrofon', - 'voiceRecognitionPermissionText': 'Röstigenkänning kräver åtkomst till mikrofonen.', - 'voiceTranslationPermissionText': 'Röstigenkänning och översättning kräver åtkomst till mikrofonen.', - 'phoneCallPermissionText': 'Att ringa samtal kräver åtkomst till mikrofonen för röstsamtal.', - 'permissionDeniedText': 'Du har permanent nekat åtkomst till mikrofonen, vänligen gå till systeminställningarna för att aktivera behörigheten.', + 'voiceRecognitionPermissionText': + 'Röstigenkänning kräver åtkomst till mikrofonen.', + 'voiceTranslationPermissionText': + 'Röstigenkänning och översättning kräver åtkomst till mikrofonen.', + 'phoneCallPermissionText': + 'Att ringa samtal kräver åtkomst till mikrofonen för röstsamtal.', + 'permissionDeniedText': + 'Du har permanent nekat åtkomst till mikrofonen, vänligen gå till systeminställningarna för att aktivera behörigheten.', 'startVoiceInput': 'Starta röstinmatning', 'startPhoneCallMode': 'Starta samtalsläge, starta röstinmatning', @@ -840,7 +911,8 @@ const Map svSE = { 'privacyRelated': 'Integritetsrelaterat', '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å.', + 'reportDescriptionHint': + 'Vi vill veta varför du anmäler, du kan beskriva problemet du stött på.', 'generatedByAi': 'Genererad av AI', // Agent模块 - 工具调用 @@ -883,7 +955,8 @@ const Map svSE = { 'builtInNavigation': 'Inbyggd navigation', 'useBuiltInNavigation': 'Navigera med inbyggd karta', 'navigationStartFailed': 'Kunde inte starta navigering', - 'cannotPlayMusicListRetryLater': 'Kan inte spela musiklistan, försök igen senare', + 'cannotPlayMusicListRetryLater': + 'Kan inte spela musiklistan, försök igen senare', 'cannotPlaySong': 'Kan inte spela låten', 'openMapError': 'Fel vid öppning av karta', 'pleaseInstallAmapApp': 'Installera Amap-appen först', @@ -897,15 +970,24 @@ const Map svSE = { 'highest': 'Högsta', 'lowest': 'Lägsta', 'futureForecast': 'Framtida prognos', - 'hotWeatherTip': 'Idag är det varmt, var försiktig med värmeslag och drick mycket vatten', - 'coldWeatherTip': 'Idag är temperaturen låg, klä dig varmt när du går ut för att undvika förkylning', - 'rainyWeatherTip': 'Idag regnar det, ta med ett paraply när du går ut och var försiktig', - 'snowyWeatherTip': 'Idag snöar det, vägen är hal, var försiktig och klä dig varmt', - 'foggyWeatherTip': 'Idag är det dimmigt, sikten är låg, använd en mask när du går ut', - 'windyWeatherTip': 'Idag blåser det mycket, var försiktig när du går ut och säkra dina tillhörigheter', - 'sunnyWeatherTip': 'Idag är det soligt och stark UV-strålning, använd solskydd när du går ut', - 'temperatureDifferenceTip': 'Idag är det stor temperaturskillnad mellan dag och natt, anpassa kläderna därefter', - 'comfortableWeatherTip': 'Idag är vädret behagligt, en bra tid för utomhusaktiviteter', + 'hotWeatherTip': + 'Idag är det varmt, var försiktig med värmeslag och drick mycket vatten', + 'coldWeatherTip': + 'Idag är temperaturen låg, klä dig varmt när du går ut för att undvika förkylning', + 'rainyWeatherTip': + 'Idag regnar det, ta med ett paraply när du går ut och var försiktig', + 'snowyWeatherTip': + 'Idag snöar det, vägen är hal, var försiktig och klä dig varmt', + 'foggyWeatherTip': + 'Idag är det dimmigt, sikten är låg, använd en mask när du går ut', + 'windyWeatherTip': + 'Idag blåser det mycket, var försiktig när du går ut och säkra dina tillhörigheter', + 'sunnyWeatherTip': + 'Idag är det soligt och stark UV-strålning, använd solskydd när du går ut', + 'temperatureDifferenceTip': + 'Idag är det stor temperaturskillnad mellan dag och natt, anpassa kläderna därefter', + 'comfortableWeatherTip': + 'Idag är vädret behagligt, en bra tid för utomhusaktiviteter', "monday": "Mån", "tuesday": "Tis", "wednesday": "Ons", @@ -936,8 +1018,8 @@ const Map svSE = { "strongWind": "Stark vind", // 翻译模块 - 中间层 - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", + "pictureTranslation": "Bildöversättning", + "textTranslation": "Textöversättning", // 翻译模块 - 主页 "translationHistory": "Översättningshistorik", @@ -947,81 +1029,92 @@ const Map svSE = { "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", // 自动检测 + "me": "Jag", + "counterPart": "Samtalspartner", + "bluetoothCallStateError": + "Se till att Bluetooth-headsetet är anslutet till telefonen och att ett samtal pågår", + "autoDetect": "Automatisk detektering", // 自动检测 // 翻译模块 - 悬浮窗与权限 'disableFloatingWindow': 'Inaktivera flytande fönster', 'enableFloatingWindow': 'Aktivera flytande fönster', 'permissionTip': 'Behörighetstips', - 'micPermissionRequiredForRecording': 'Mikrofonbehörighet krävs för inspelning', - 'deleteTranslationRecordError': 'Fel vid radering av översättningspost: @error', + 'micPermissionRequiredForRecording': + 'Mikrofonbehörighet krävs för inspelning', + 'deleteTranslationRecordError': + 'Fel vid radering av översättningspost: @error', // 翻译模块 - 文本翻译 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", + "languageDetectionFailed": "Språkdetektering misslyckades", + "translationFailed": "Översättning misslyckades", "translating": "Översätter", "translate": "Översätt", - "pleaseInputText": "Please input text", + "pleaseInputText": "Ange text", "inputTextToTranslate": "Ange texten som ska översättas", - "textTooLong": "Text too long, max 5000 characters", + "textTooLong": "Texten är för lång, max 5000 tecken", // 翻译模块 - 历史记录 "noTranslationHistory": "Ingen historik ännu", - "historyRecords": "History Records", - "clearResults": "Clear Results", + "historyRecords": "Historikposter", + "clearResults": "Rensa resultat", "clearHistory": "Rensa historik", - "clearHistoryConfirm": "Är du säker på att du vill rensa all översättningshistorik? Denna åtgärd kan inte ångras.", + "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.", + "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}", + "selectImageSource": "Välj bildkälla", + "imagePreview": "Bildförhandsvisning", + "translationResult": "Översättningsresultat", + "recognitionResult": "Igenkänningsresultat", + "translatedImagePreview": "Förhandsvisning av översatt bild", + "translatedImageLoadFailed": "Kunde inte ladda översatt bild", + "pleaseSelectImage": "Välj en bild", + "imageLoadFailed": "Kunde inte ladda bild", + "imageQuality": "Bildkvalitet", + "maxSize": "Maxstorlek", + "close": "Stäng", + "setImageQuality": "Ställ in bildkvalitet", + "currentQuality": "Aktuell kvalitet: @value%", + "setMaxSize": "Ställ in maxstorlek", + "currentMaxSize": "Aktuellt: @pxpx", + "waitingForAction": "Väntar på åtgärd", + "pleaseSelectImageToStart": "Välj en bild för att börja", + "chooseImage": "Välj bild", + "openingCamera": "Öppnar kamera...", + "openingPhotoAlbum": "Öppnar fotoalbum...", + "cancelled": "Avbruten", + "userCancelledSelection": "Användaren avbröt valet", + "translatingImage": "Översätter bild", + "callingImageTranslateService": "Anropar bildöversättningstjänsten...", + "savingRecord": "Sparar post", + "savingTranslationResult": "Sparar översättningsresultat...", + "translationCompleted": "Översättning slutförd", + "allStepsCompleted": "Alla steg slutförda", + "processingFailed": "Bearbetning misslyckades", + "imageProcessingOrTranslationFailed": + "Bildbearbetning eller översättning misslyckades. Försök igen.\nFel: {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", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": + "Bildöversättnings-API returnerade ett tomt resultat", + "imageTranslationFailedTryLater": + "Bildöversättning misslyckades. Nätverksproblem eller hastighetsbegränsning. Försök senare", + "imageTranslationApiException": + "Undantag i bildöversättnings-API. Kontrollera nätverket och försök igen", + "permissionRequired": "Behörighet krävs", + "cameraPermissionRequired": "Kamerabehörighet krävs för att ta bilder", + "photoAlbumPermissionRequired": + "Fotoalbumbehörighet krävs för att välja bilder", + "translationDetails": "Översättningsdetaljer", + "originalImage": "Originalbild", + "sourceLanguage": "Källspråk", + "targetLanguage": "Målspråk", + "translationTime": "Översättningstid", "shareInDevelopment": "Sharing feature under development", // 翻译模块 - 录音文件 @@ -1039,7 +1132,8 @@ const Map svSE = { // 翻译模块 - 翻译详情 "originalRecord": "Originalinspelning", "recordSummary": "Inspelningssammanfattning", - "clickToGenerateSummary": "Klicka på knappen nedan för att generera en sessionssammanfattning", + "clickToGenerateSummary": + "Klicka på knappen nedan för att generera en sessionssammanfattning", "summaryContent": "Sammanfattningsinnehåll", "copied": "Kopierad", "summaryCopiledToClipboard": "Sammanfattning kopierad till urklipp", @@ -1047,9 +1141,11 @@ const Map svSE = { "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.", + "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.", + "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", @@ -1067,21 +1163,29 @@ const Map svSE = { "notSet": "Inte inställt", "accountSetting": "Kontoinställningar", "logout": "Logga ut", - "logoutTips": "Är du säker på att du vill logga ut från det nuvarande kontot?", + "logoutTips": + "Är du säker på att du vill logga ut från det nuvarande kontot?", 'deleteAccount': 'Ta bort konto', - 'deleteAccountTips': 'Är du säker på att du vill ta bort ditt konto permanent? Denna åtgärd kan inte ångras', + '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?', - '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', - 'noPermissionForThisOperation': 'Du har inte behörighet att utföra denna åtgärd', + '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', + 'noPermissionForThisOperation': + 'Du har inte behörighet att utföra denna åtgärd', 'requestedResourceNotFound': 'Den begärda resursen hittades inte', - 'imageProcessingFailedPleaseReselect': 'Bildbehandling misslyckades, välj en annan bild', + 'imageProcessingFailedPleaseReselect': + 'Bildbehandling misslyckades, välj en annan bild', 'operationFailedPleaseRetry': 'Åtgärden misslyckades, försök igen', 'serverReturnedError': 'Servern returnerade ett fel', 'serverError': 'Serverfel', - 'networkConnectionFailedCheckSettings': 'Nätverksanslutning misslyckades, kontrollera dina nätverksinställningar', + 'networkConnectionFailedCheckSettings': + 'Nätverksanslutning misslyckades, kontrollera dina nätverksinställningar', 'serverInternalErrorRetryLater': 'Internt serverfel, försök igen senare', 'imageCompressionFailed': 'Bildkomprimering misslyckades', 'avatarUpdateFailed': 'Avataruppdatering misslyckades', @@ -1094,42 +1198,52 @@ const Map svSE = { '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', // 第三方登录退出成功 - 'thirdPartyLogoutFailed': 'Utloggning från tredje part misslyckades', // 第三方登录退出失败 - 'signOutProcessError': 'Ett fel uppstod under utloggningsprocessen', // 登出过程发生错误 - 'deleteAccountProcessError': 'Ett fel uppstod under borttagningsprocessen av kontot', // 删除账号过程发生错误 + 'deleteUserDataFailed': + 'Borttagning av användardata misslyckades', // 删除用户数据失败 + 'thirdPartyLogoutSuccess': + 'Utloggning från tredje part lyckades', // 第三方登录退出成功 + 'thirdPartyLogoutFailed': + 'Utloggning från tredje part misslyckades', // 第三方登录退出失败 + 'signOutProcessError': + 'Ett fel uppstod under utloggningsprocessen', // 登出过程发生错误 + 'deleteAccountProcessError': + 'Ett fel uppstod under borttagningsprocessen av kontot', // 删除账号过程发生错误 'userDataClearSuccess': 'Rensning av användardata lyckades', // 用户数据清理成功 'allUserDataClearSuccess': 'All användardata har rensats', // 所有用户数据清理成功 - 'accountServiceInitialized': 'Kontotjänsten har initierats', // AccountService 已初始化 + 'accountServiceInitialized': + 'Kontotjänsten har initierats', // AccountService 已初始化 // 权限模块 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermission': 'Lagring', + 'meetingStoragePermissionExplanation': + 'Vi behöver lagringsbehörighet så att du kan välja och ladda upp ljudfiler.', 'meetingStoragePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', + 'Vi har upptäckt att du permanent har nekat lagringsbehörighet. För att fortsätta använda den här funktionen, gå till appens inställningar och aktivera lagringsbehörigheten manuellt.', 'getPermissionStatusFailed': 'Hämtning av behörighetsstatus misslyckades', 'communicationPermissions': 'Kommunikationsbehörigheter', - 'bluetoothPermissions': 'Bluetooth Permissions', - 'notificationPermissions': 'Notification Permissions', - 'storagePermissions': 'Storage Permissions', - 'microphonePermissions': 'Microphone Permissions', - 'alarmPermissions': 'Alarm Permissions', + 'bluetoothPermissions': 'Bluetooth-behörigheter', + 'notificationPermissions': 'Aviseringsbehörigheter', + 'storagePermissions': 'Lagringsbehörigheter', + 'microphonePermissions': 'Mikrofonbehörigheter', + 'alarmPermissions': 'Alarmbehörigheter', 'calendarPermissions': 'Kalenderbehörigheter', 'locationPermissions': 'Platsbehörigheter', 'phone': 'Telefon', 'sms': 'SMS', - 'contacts': 'Contacts', - 'notification': 'Notification', + 'contacts': 'Kontakter', + 'notification': 'Aviseringar', 'alarm': 'Alarm', 'calendarWrite': 'Skriv till kalender', 'calendarFullAccess': 'Fullständig kalenderåtkomst', 'locationInfo': 'Platsinformation', 'phonePermissionDesc': 'Används för att ringa samtal', 'smsPermissionDesc': 'Används för att skicka SMS', - 'alarmPermissionDesc': 'Used to set exact alarms to ensure reminders trigger on time', - 'calendarWritePermissionDesc': 'Används för att skapa kalenderhändelser och påminnelser', - 'calendarFullAccessPermissionDesc': 'Används för att läsa och hantera kalenderhändelser och påminnelser', + 'alarmPermissionDesc': + 'Används för att ställa in exakta alarm så att påminnelser utlöses i tid', + 'calendarWritePermissionDesc': + 'Används för att skapa kalenderhändelser och påminnelser', + 'calendarFullAccessPermissionDesc': + 'Används för att läsa och hantera kalenderhändelser och påminnelser', 'locationPermissionDesc': 'Används för att hämta aktuell platsinformation', 'appFunctionNeeds': 'Appfunktionen behöver', 'authorized': 'Beviljad', @@ -1141,62 +1255,90 @@ const Map svSE = { 'permissionRequestError': 'Fel vid begäran om behörighet', 'phonePermissionDetailDesc': 'Samtalsfunktionen kräver telefonbehörighet', 'smsPermissionDetailDesc': 'SMS-funktionen kräver SMS-behörighet', - 'alarmPermissionDetailDesc': 'This permission is required to set exact alarms and ensure reminders trigger on time', - 'calendarWritePermissionDetailDesc': 'Att skapa kalenderhändelser kräver skrivbehörighet till kalendern', - 'calendarFullAccessPermissionDetailDesc': 'Att hantera kalenderhändelser kräver fullständig kalenderåtkomst', - 'locationPermissionDetailDesc': 'Att hämta platsinformation kräver platsbehörighet', - 'contactsPermissionDesc': 'Used for accessing contact information', - 'contactsPermissionDetailDesc': 'Phone call and SMS functionality requires contacts permission to select contacts', - 'bluetoothPermissionDesc': 'Used for connecting and managing Bluetooth devices', - 'bluetoothPermissionDetailDesc': 'Connecting to Bluetooth headphones and other devices requires Bluetooth permission', - 'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices', - 'bluetoothScanPermissionDetailDesc': 'Scanning for nearby Bluetooth devices requires Bluetooth scan permission', - 'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices', - 'bluetoothConnectPermissionDetailDesc': 'Connecting to Bluetooth devices requires Bluetooth connect permission', - 'notificationPermissionDesc': 'Used for sending notification messages', - 'notificationPermissionDetailDesc': 'App needs notification permission to send you important alerts and messages', - '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', + 'alarmPermissionDetailDesc': + 'Den här behörigheten krävs för att ställa in exakta alarm och säkerställa att påminnelser utlöses i tid', + 'calendarWritePermissionDetailDesc': + 'Att skapa kalenderhändelser kräver skrivbehörighet till kalendern', + 'calendarFullAccessPermissionDetailDesc': + 'Att hantera kalenderhändelser kräver fullständig kalenderåtkomst', + 'locationPermissionDetailDesc': + 'Att hämta platsinformation kräver platsbehörighet', + 'contactsPermissionDesc': 'Används för att komma åt kontaktinformation', + 'contactsPermissionDetailDesc': + 'Samtals- och SMS-funktioner kräver kontaktbehörighet för att välja kontakter', + 'bluetoothPermissionDesc': + 'Används för att ansluta till och hantera Bluetooth-enheter', + 'bluetoothPermissionDetailDesc': + 'Att ansluta till Bluetooth-headset och andra enheter kräver Bluetooth-behörighet', + 'bluetoothScanPermissionDesc': + 'Används för att skanna efter Bluetooth-enheter i närheten', + 'bluetoothScanPermissionDetailDesc': + 'Skanning efter Bluetooth-enheter i närheten kräver Bluetooth-skanningsbehörighet', + 'bluetoothConnectPermissionDesc': + 'Används för att ansluta till Bluetooth-enheter', + 'bluetoothConnectPermissionDetailDesc': + 'Att ansluta till Bluetooth-enheter kräver Bluetooth-anslutningsbehörighet', + 'notificationPermissionDesc': 'Används för att skicka aviseringar', + 'notificationPermissionDetailDesc': + 'Appen behöver aviseringsbehörighet för att skicka viktiga aviseringar och meddelanden', + '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.', - 'bluetoothConnectExplanation': 'The app needs Bluetooth connect permission to connect to Bluetooth devices.', - 'locationForBluetoothExplanation': 'The app needs location permission to scan Bluetooth devices.', - 'bluetoothScanPermanentDenial': 'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.', - 'bluetoothConnectPermanentDenial': 'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.', - 'locationPermanentDenial': 'Location permission has been permanently denied, please go to settings to enable it manually.', - 'notificationPermission': 'Notification', - 'locationPermission': 'Location', - 'notificationPermissionExplanation': 'Notification permission is required to display music playback status.', - '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.', - 'storagePermission': 'Storage', - 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', - 'storagePermissionExplanation': 'We need storage permission so you can select and upload audio files.', + 'bluetoothScan': 'Bluetooth-skanning', + 'bluetoothConnect': 'Bluetooth-anslutning', + 'bluetoothScanExplanation': + 'Appen behöver Bluetooth-skanningsbehörighet för att skanna efter Bluetooth-enheter i närheten.', + 'bluetoothConnectExplanation': + 'Appen behöver Bluetooth-anslutningsbehörighet för att ansluta till Bluetooth-enheter.', + 'locationForBluetoothExplanation': + 'Appen behöver platsbehörighet för att skanna Bluetooth-enheter.', + 'bluetoothScanPermanentDenial': + 'Bluetooth-skanningsbehörighet har nekats permanent. Gå till inställningar för att aktivera den manuellt.', + 'bluetoothConnectPermanentDenial': + 'Bluetooth-anslutningsbehörighet har nekats permanent. Gå till inställningar för att aktivera den manuellt.', + 'locationPermanentDenial': + 'Platsbehörighet har nekats permanent. Gå till inställningar för att aktivera den manuellt.', + 'notificationPermission': 'Aviseringar', + 'locationPermission': 'Plats', + 'notificationPermissionExplanation': + 'Aviseringsbehörighet krävs för att visa status för musikuppspelning.', + 'locationPermissionExplanation': + 'Platsbehörighet krävs för att hämta aktuell plats.', + 'notificationPermissionPermanentDenial': + 'Du har nekat aviseringsbehörighet permanent. Gå till inställningar för att aktivera den.', + 'locationPermissionPermanentDenial': + 'Du har nekat platsbehörighet permanent. Gå till inställningar för att aktivera den.', + 'storagePermission': 'Lagring', + 'microphonePermissionExplanation': + 'Vi behöver mikrofonbehörighet för att spela in ljudinnehåll.', + 'storagePermissionExplanation': + 'Vi behöver lagringsbehörighet så att du kan välja och ladda upp ljudfiler.', 'microphonePermissionPermanentDenial': - '检测到您已永久拒绝录音权限。如需继续使用此功能,请前往应用设置中手动开启麦克风权限。', + 'Vi har upptäckt att du permanent har nekat mikrofonbehörighet. För att fortsätta använda den här funktionen, gå till appens inställningar och aktivera mikrofonbehörigheten manuellt.', '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', + 'Vi har upptäckt att du permanent har nekat lagringsbehörighet. För att fortsätta använda den här funktionen, gå till appens inställningar och aktivera lagringsbehörigheten manuellt.', + 'permissionUtilNeed': 'Behöver ', + 'permissionUtilPermission': ' behörighet', + 'permissionUtilRestricted': ' Behörighet begränsad', + 'permissionUtilRestrictedMessage': + 'Den här funktionen är inte tillgänglig eller är begränsad på den här enheten. Kontrollera enhetsinställningar eller systembegränsningar', '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', + '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', // 版本更新对话框标题 @@ -1204,8 +1346,10 @@ const Map svSE = { 'updateNow': 'Uppdatera nu', // 立即更新按钮 'checkUpdate': 'Sök efter uppdatering', // 检查更新按钮 'updateFailed': 'Uppdatering misslyckades', // 更新失败提示 - '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', // 更新错误重试提示 + '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', // 更新错误重试提示 // 配对模块 "devicePairing": "Enhetsparkoppling", @@ -1223,23 +1367,30 @@ const Map svSE = { 'bluetooth': 'Bluetooth', "readyToPair": "Redo att parkoppla", "preparingPairingEnvironment": "Förbereder parkopplingsmiljö...", - "connectDeepSoundViaSystemBluetooth": "Anslut först till Voitrans-enheten via systemets Bluetooth", + "connectDeepSoundViaSystemBluetooth": + "Anslut först till Voitrans-enheten via systemets Bluetooth", "deviceBindingConfirm": "Bekräftelse av enhetsbindning...", "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", + "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", - "scanTimeoutEnsureDeviceNearby": "Skanningen nådde tidsgräns, se till att enheten är i närheten", + "scanTimeoutEnsureDeviceNearby": + "Skanningen nådde tidsgräns, se till att enheten är i närheten", "networkError": "Nätverksfel", - "authorizationFailedCheckCode": "Auktorisering misslyckades, kontrollera att auktoriseringskoden är korrekt", + "authorizationFailedCheckCode": + "Auktorisering misslyckades, kontrollera att auktoriseringskoden är korrekt", "pairingFailedRetry": "Parkoppling misslyckades, försök igen", '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', + 'ensureHeadsetOnAndPairingMode': + 'Se till att hörlurarna är på och i parkopplingsläge', 'establishingSecureConnection': 'Upprättar säker anslutning...', 'needManualBindingAuthCode': 'Manuell bindningsauktoriseringskod krävs...', 'pairingSuccessful': 'Parkoppling lyckades!', @@ -1257,24 +1408,29 @@ const Map svSE = { 'bleConnectionTimeoutRetry': 'BLE-anslutningen nådde tidsgräns, försök igen', 'blePairingStartupFailed': 'Start av BLE-parkoppling misslyckades', 'bleConnectionFailed': 'BLE-anslutning misslyckades', - 'deviceAuthorizationFailedCheckCode': 'Enhetsauktorisering misslyckades, kontrollera auktoriseringskoden', - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: - 'bluetoothGuideStep1': 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 - 'bluetoothGuideStep2': 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 - 'bluetoothGuideStep3': 'Return to app to continue pairing process', // 返回应用继续配对流程 - 'bluetoothGuideTip': 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': 'I Know', // 我知道了 + 'deviceAuthorizationFailedCheckCode': + 'Enhetsauktorisering misslyckades, kontrollera auktoriseringskoden', + 'bluetoothGuideTitle': 'Manuell Bluetooth-aktivering krävs', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'Följ dessa steg:', // 请按照以下步骤操作: + 'bluetoothGuideStep1': + 'Aktivera Bluetooth: Inställningar → Bluetooth → Slå på', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'bluetoothGuideStep2': + 'Anslut enhet: hitta din enhet i ”Mina enheter” och tryck för att ansluta', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'bluetoothGuideStep3': + 'Gå tillbaka till appen för att fortsätta parkopplingen', // 返回应用继续配对流程 + 'bluetoothGuideTip': + 'Tips: Du kan även trycka och hålla ned Bluetooth-ikonen i Kontrollcenter för att snabbt öppna Bluetooth-inställningarna', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + 'iKnow': 'Jag förstår', // 我知道了 // 配对模块 - 绑定奖励 - "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:", + "firstBindRewardTitle": "Välkomstbelöning", + "firstBindRewardDesc": "Du har fått belöningar för bindning.", + "vipLevelLabel": "VIP-nivå:", + "expiryLabel": "Utgångsdatum:", + "notActivated": "Inte aktiverad", + "aiChatCreditsLabel": "AI-chattkrediter:", + "translationCreditsLabel": "Översättningskrediter:", + "meetingCreditsLabel": "Möteskrediter:", "ok": "OK", // 用户反馈模块 @@ -1287,10 +1443,12 @@ const Map svSE = { 'contactHint': 'E-post/Telefon, så att vi kan kontakta dig', 'submit': 'Skicka', 'feedbackSubmitSuccess': 'Feedback inskickad, tack för din feedback!', - 'feedbackSubmitFailed': 'Inskickning av feedback misslyckades, försök igen senare', + 'feedbackSubmitFailed': + 'Inskickning av feedback misslyckades, försök igen senare', // OTA升级模块 - "upgradeExitConfirm": "Uppgradering pågår, att avsluta kommer att avbryta uppgraderingsprocessen, är du säker på att du vill avsluta?", + "upgradeExitConfirm": + "Uppgradering pågår, att avsluta kommer att avbryta uppgraderingsprocessen, är du säker på att du vill avsluta?", "deviceModel": "Enhetsmodell", "unknownDevice": "Okänd enhet", "currentFirmwareVersion": "Nuvarande firmware-version", @@ -1302,45 +1460,59 @@ const Map svSE = { "connectionFailed": "Anslutning misslyckades", "retryConnection": "Försök ansluta igen", "ota_updateNow": "Uppdatera nu", - "otaVersionInfoFailed": "Failed to get version info. Please try again later.", - "otaDeviceInfoUnavailable": "Unable to get device info. Please check the connection and retry.", - "otaProductInfoUnavailable": "Unable to identify the device. Please reconnect and retry.", - "otaFirmwareVersionInvalid": "Firmware version is abnormal. Please reconnect and retry.", + "otaVersionInfoFailed": + "Det gick inte att hämta versionsinformation. Försök igen senare.", + "otaDeviceInfoUnavailable": + "Det gick inte att hämta enhetsinformation. Kontrollera anslutningen och försök igen.", + "otaProductInfoUnavailable": + "Det gick inte att identifiera enheten. Anslut igen och försök igen.", + "otaFirmwareVersionInvalid": + "Firmware-versionen är onormal. Anslut igen och försök igen.", "keepConnectedDontClose": "Håll enheten ansluten, stäng inte appen", "doNotDisconnect": "Koppla inte från", "charging": "Laddar", "updateContent": "Uppdateringsinnehåll", - "removeEarbudsEnsureBattery": "Ta ut båda hörlurarna och se till att batterinivån är över 20 % på båda", + "removeEarbudsEnsureBattery": + "Ta ut båda hörlurarna och se till att batterinivån är över 20 % på båda", // OTA升级模块 - 弹窗与对话框 'otaNewVersionFoundWithVersion': 'Ny version @version hittad', 'otaConfirmUpdateNow': 'Uppdatera nu?', 'otaUpdate': 'Uppdatera', 'otaUpgradeSuccess': 'Uppgradering lyckades', - 'otaUpgradeCompleteRepair': 'Firmware-uppgradering klar!\n\nEnheten måste parkopplas igen. Gå till parkopplingssidan?', + 'otaUpgradeCompleteRepair': + 'Firmware-uppgradering klar!\n\nEnheten måste parkopplas igen. Gå till parkopplingssidan?', 'otaPairLater': 'Parkoppla senare', 'otaPairNow': 'Parkoppla nu', 'okConfirm': 'OK', // OTA升级模块 - 设备检查 'otaBleCheckErrorWithError': 'Fel vid BLE-kontroll: @error', 'otaBleNotConnected': 'BLE-enhet inte ansluten', - 'otaBleNeedConnection': 'Firmware-uppgradering kräver BLE-anslutning\nSäkerställ att enheten är ansluten och försök igen', + 'otaBleNeedConnection': + 'Firmware-uppgradering kräver BLE-anslutning\nSäkerställ att enheten är ansluten och försök igen', 'otaDeviceInfoUnavailableTitle': 'Enhetsinformation otillgänglig', - 'otaCannotGetDeviceInfo': 'Kan inte hämta enhetsinformation\nÅteranslut enheten eller försök igen senare', + 'otaCannotGetDeviceInfo': + 'Kan inte hämta enhetsinformation\nÅteranslut enheten eller försök igen senare', 'otaBleCheckFailed': 'BLE-kontroll misslyckades', - 'otaCannotGetDeviceInfoCheckConnection': 'Kan inte hämta enhetsinformation, kontrollera anslutningen', - 'otaCannotGetProductInfoWithName': 'Kan inte hämta produktinfo, enhetsnamn: @deviceName', + 'otaCannotGetDeviceInfoCheckConnection': + 'Kan inte hämta enhetsinformation, kontrollera anslutningen', + 'otaCannotGetProductInfoWithName': + 'Kan inte hämta produktinfo, enhetsnamn: @deviceName', 'otaCannotGetBatteryInfo': 'Kan inte hämta batteriinformation', 'otaLowBattery': 'Låg batterinivå', - 'otaSingleBatteryLow': 'Batterinivå för låg för uppgradering\nKrav: batteri över 20%\nNuvarande: @ear @battery%\nLadda och försök igen', - 'otaDoubleBatteryLow': 'Batterinivå för låg för uppgradering\nKrav: båda öronsnäckorna över 20%\nNuvarande: Vänster @left%, Höger @right%\nLadda och försök igen', + 'otaSingleBatteryLow': + 'Batterinivå för låg för uppgradering\nKrav: batteri över 20%\nNuvarande: @ear @battery%\nLadda och försök igen', + 'otaDoubleBatteryLow': + 'Batterinivå för låg för uppgradering\nKrav: båda öronsnäckorna över 20%\nNuvarande: Vänster @left%, Höger @right%\nLadda och försök igen', 'otaBatteryCheckFailed': 'Batterikontroll misslyckades', // OTA升级模块 - 升级状态 - 'otaDefaultUpdateDesc': 'Uppdateringen innehåller prestandaförbättringar och felkorrigeringar.', + 'otaDefaultUpdateDesc': + 'Uppdateringen innehåller prestandaförbättringar och felkorrigeringar.', 'otaGetLatestVersionFailed': 'Kunde inte hämta senaste versionen', 'otaGetVersionInfoFailed': 'Kunde inte hämta versionsinformation', 'otaCheckingDeviceStatus': 'Kontrollerar enhetsstatus...', - 'otaDownloadFailedCheckNetwork': 'Nedladdning misslyckades, kontrollera nätverksanslutningen', + 'otaDownloadFailedCheckNetwork': + 'Nedladdning misslyckades, kontrollera nätverksanslutningen', 'otaDownloadFailed': 'Nedladdning misslyckades', 'otaPreparingConnection': 'Förbereder enhetsanslutning...', 'otaConnectingDevice': 'Ansluter till enhet...', @@ -1349,7 +1521,8 @@ const Map svSE = { 'otaUpgradeSuccessComplete': 'Uppgradering slutförd', 'otaUpgradeFailedWithCode': 'Uppgradering misslyckades, felkod: @code', 'otaUpgradeFailedTitle': 'Uppgradering misslyckades', - 'otaUpgradeFailedDesc': 'Kontrollera anslutning eller uppdateringspaket, felkod: @code', + 'otaUpgradeFailedDesc': + 'Kontrollera anslutning eller uppdateringspaket, felkod: @code', 'otaDeviceDisconnected': 'Enheten frånkopplad', 'otaDeviceConnected': 'Enheten ansluten', diff --git a/lib/core/translations/language/th_th.dart b/lib/core/translations/language/th_th.dart index e54dfd6e6..67d81a98f 100644 --- a/lib/core/translations/language/th_th.dart +++ b/lib/core/translations/language/th_th.dart @@ -1,3 +1,4 @@ +//泰国-泰语 const Map thTH = { // 通用 'continue': 'ดำเนินการต่อ', @@ -18,11 +19,11 @@ const Map thTH = { "unknownError": "ข้อผิดพลาดที่ไม่รู้จัก", "asrConnectionFailed": "เชื่อมต่อกับบริการรู้จำเสียงไม่สำเร็จ กรุณาตรวจสอบเครือข่ายแล้วลองใหม่อีกครั้งภายหลัง", - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", + "justNow": "เมื่อสักครู่", + "minutesAgo": "@minutes นาทีที่แล้ว", + "yesterday": "เมื่อวาน", + "daysAgo": "@days วันที่แล้ว", + "hoursAgo": "@hours ชั่วโมงที่แล้ว", // 启动页 "slogan": "เชื่อมต่อโลก ก้าวล้ำเหนือเสียง", @@ -74,8 +75,8 @@ const Map thTH = { "estonian": "ภาษาเอสโตเนีย", "serbian": "ภาษาเซอร์เบีย", "icelandic": "ภาษาไอซ์แลนด์", - "arabic": "ภาษาアラビア", - "persian": "ภาษาญี่ปุ่น", + "arabic": "ภาษาอาหรับ", + "persian": "ภาษาเปอร์เซีย", // 登录模块 "welcome": "ยินดีต้อนรับ", @@ -109,7 +110,7 @@ const Map thTH = { "welcomeToThisApp": "ยินดีต้อนรับสู่ Voitrans กรุณาอ่านอย่างละเอียด", // 欢迎使用Voitrans,请充分阅读 "privacyPolicyText": - ",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 + "โดยการคลิกปุ่ม 'ยอมรับและเข้าสู่' คุณแสดงว่าคุณได้อ่านและยอมรับนโยบายความเป็นส่วนตัวและข้อตกลงผู้ใช้", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "ไม่ยอมรับ", // 不同意 "agreeAndEnter": "ยอมรับและเข้าสู่", // 同意并进入 @@ -164,27 +165,27 @@ const Map thTH = { 'checkConnectionStatusFailed': 'ตรวจสอบสถานะการเชื่อมต่อล้มเหลว', // 蓝牙扫描模块 - 'bleInitFailedWithError': 'Bluetooth initialization failed: @error', + 'bleInitFailedWithError': 'เริ่มต้น Bluetooth ไม่สำเร็จ: @error', 'needBluetoothAndLocationPermission': - 'Bluetooth and location permissions are required to scan devices', - 'permissionRequestFailedWithError': 'Permission request failed: @error', - 'needPermission': 'Permission Required', + 'จำเป็นต้องมีสิทธิ์ Bluetooth และตำแหน่งเพื่อสแกนอุปกรณ์', + 'permissionRequestFailedWithError': 'ขอสิทธิ์ไม่สำเร็จ: @error', + 'needPermission': 'ต้องขออนุญาต', 'blePermissionDialogContent': - 'This app requires Bluetooth and location permissions to scan devices. Please enable them in Settings.', - 'needEnableBluetooth': 'Enable Bluetooth', + 'แอปนี้ต้องใช้สิทธิ์ Bluetooth และตำแหน่งเพื่อสแกนอุปกรณ์ โปรดเปิดใช้งานในการตั้งค่า', + 'needEnableBluetooth': 'เปิด Bluetooth', 'enableBluetoothDialogContent': - 'Please enable Bluetooth to scan and connect devices.', - 'bleScanFailedWithError': 'Scan failed: @error', - 'bleConnectionSuccess': 'Connection Successful', - 'bleConnectedToDevice': 'Connected to @device', - 'bleConnectionFailedWithError': 'Connection failed: @error', - 'bleDisconnected': 'Disconnected', - 'bleDeviceDisconnected': 'Device disconnected', - 'bleDisconnectFailedWithError': 'Disconnect failed: @error', - 'signalStrong': 'Strong', - 'signalMedium': 'Medium', - 'signalWeak': 'Weak', - 'signalVeryWeak': 'Very Weak', + 'โปรดเปิด Bluetooth เพื่อสแกนและเชื่อมต่ออุปกรณ์', + 'bleScanFailedWithError': 'สแกนไม่สำเร็จ: @error', + 'bleConnectionSuccess': 'เชื่อมต่อสำเร็จ', + 'bleConnectedToDevice': 'เชื่อมต่อกับ @device แล้ว', + 'bleConnectionFailedWithError': 'เชื่อมต่อไม่สำเร็จ: @error', + 'bleDisconnected': 'ตัดการเชื่อมต่อแล้ว', + 'bleDeviceDisconnected': 'อุปกรณ์ถูกตัดการเชื่อมต่อ', + 'bleDisconnectFailedWithError': 'ตัดการเชื่อมต่อไม่สำเร็จ: @error', + 'signalStrong': 'แรง', + 'signalMedium': 'ปานกลาง', + 'signalWeak': 'อ่อน', + 'signalVeryWeak': 'อ่อนมาก', // 发现页 "searchAi": "ค้นหาฟังก์ชัน AI...", @@ -211,55 +212,54 @@ const Map thTH = { "scene": "สถานการณ์", // 用量统计模块 - "aiChat": "AI Chat", - "translationStats": "Translation Statistics", - "meetingStats": "Meeting Statistics", - "today": "Today", - "thisWeek": "This Week", - "thisMonth": "This Month", - "history": "History", - "currentSessionStats": "Current Session Stats", - "translationCount": "Translation Count", - "sessionDuration": "Session Duration", - "characters": "Characters", - "recordingDuration": "Recording Duration", - "totalApiCalls": "Total API Calls", - "sessionCount": "Session Count", - "totalCharacters": "Total Characters", - "apiCallStats": "API Call Stats", - "translationApi": "Translation API", + "aiChat": "แชท AI", + "translationStats": "สถิติการแปล", + "meetingStats": "สถิติการประชุม", + "today": "วันนี้", + "thisWeek": "สัปดาห์นี้", + "thisMonth": "เดือนนี้", + "history": "ประวัติ", + "currentSessionStats": "สถิติเซสชันปัจจุบัน", + "translationCount": "จำนวนการแปล", + "sessionDuration": "ระยะเวลาเซสชัน", + "characters": "อักขระ", + "recordingDuration": "ระยะเวลาการบันทึก", + "totalApiCalls": "จำนวนการเรียก API ทั้งหมด", + "sessionCount": "จำนวนเซสชัน", + "totalCharacters": "จำนวนอักขระทั้งหมด", + "apiCallStats": "สถิติการเรียก API", + "translationApi": "API การแปล", "asr": "ASR", "tts": "TTS", - "dataVolumeStats": "Data Volume Stats", - "sourceTextCharacters": "Source Text Characters", - "ttsTextCharacters": "TTS Text Characters", - "effectiveAudioDuration": "Effective Audio Duration", - "totalSessionDuration": "Total Session Duration", - "costStats": "Cost Stats", - "estimatedCost": "Estimated Cost", - "dailyCostThreshold": "Daily Cost Threshold", - "monthlyCostThreshold": "Monthly Cost Threshold", - "usageBehaviorStats": "Usage Behavior Stats", - "mostUsedLanguagePair": "Most-used language pair", - "mostUsedMode": "Most-used mode", - "asrApiCalls": "ASR Calls", - "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", - "cleanedOldData": "Cleaned data older than 90 days", - "exportFeature": "Export Feature", - "exportInDevelopment": "Data export is under development", + "dataVolumeStats": "สถิติปริมาณข้อมูล", + "sourceTextCharacters": "อักขระข้อความต้นฉบับ", + "ttsTextCharacters": "อักขระข้อความ TTS", + "effectiveAudioDuration": "ระยะเวลาเสียงที่ใช้งานจริง", + "totalSessionDuration": "ระยะเวลาเซสชันรวม", + "costStats": "สถิติค่าใช้จ่าย", + "estimatedCost": "ค่าใช้จ่ายโดยประมาณ", + "dailyCostThreshold": "เกณฑ์ค่าใช้จ่ายรายวัน", + "monthlyCostThreshold": "เกณฑ์ค่าใช้จ่ายรายเดือน", + "usageBehaviorStats": "สถิติพฤติกรรมการใช้งาน", + "mostUsedLanguagePair": "คู่ภาษาที่ใช้บ่อยที่สุด", + "mostUsedMode": "โหมดที่ใช้บ่อยที่สุด", + "asrApiCalls": "การเรียก ASR", + "totalAudioDuration": "ระยะเวลาเสียงรวม", + "audioFileSize": "ขนาดไฟล์เสียง", + "transcriptBytes": "ไบต์ของทรานสคริปต์", + "loadFailed": "โหลดไม่สำเร็จ", + "statsLoadFailedTryLater": "โหลดสถิติไม่สำเร็จ กรุณาลองใหม่ภายหลัง", + "cleanupComplete": "ล้างข้อมูลเสร็จสิ้น", + "cleanedOldData": "ล้างข้อมูลที่เก่ากว่า 90 วันแล้ว", + "exportFeature": "ฟีเจอร์ส่งออก", + "exportInDevelopment": "กำลังพัฒนาการส่งออกข้อมูล", // 商品模块 - 通用 - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', + 'availablePackages': 'แพ็กเกจที่มี', + 'remainingQuota': 'โควต้าคงเหลือ', + 'totalQuota': 'โควต้าทั้งหมด', + 'remaining': 'คงเหลือ', + 'featureDescription': 'คำอธิบายฟีเจอร์', 'paymentSuccess': 'ชำระเงินสำเร็จ', 'paymentFailed': 'การชำระเงินล้มเหลว', 'gotIt': 'เข้าใจแล้ว', @@ -317,115 +317,112 @@ const Map thTH = { 'alipayPaymentLaunchFailed': 'ไม่สามารถเปิด Alipay ได้', 'cannotLaunchAlipayPayment': 'ไม่สามารถเปิด Alipay ได้', 'alipayPaymentException': 'Alipay ผิดปกติ', - "insufficientIntegral": "Insufficient integral", + "insufficientIntegral": "คะแนนไม่เพียงพอ", "insufficientBalanceDesc": - "Insufficient balance, please go to the corresponding recharge page to recharge.", - "recharge": "Go to Recharge", + "ยอดคงเหลือไม่เพียงพอ โปรดไปที่หน้าการเติมเงินที่เกี่ยวข้องเพื่อเติมเงิน", + "recharge": "ไปเติมเงิน", "aiMemberExpiredDesc": - "AI membership expired, please go to the membership recharge page to renew.", + "สมาชิก AI หมดอายุ โปรดไปที่หน้าต่ออายุสมาชิกเพื่อดำเนินการต่ออายุ", // 商品模块 - AI商品页 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', + 'musicAndRecommendation': 'เพลงและคำแนะนำ', + 'navigationAndRoutes': 'การนำทางและเส้นทาง', + 'nearbySearch': 'ค้นหาใกล้เคียง', + 'newsInformation': 'ข่าวสาร', + 'communicationAssistant': 'ผู้ช่วยการสื่อสาร', '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', + 'เหมาะสำหรับถามตอบกับเอเจนต์ การสรุป การวิเคราะห์ และการทำงานตามคำสั่ง', + 'musicSearchPlaybackControl': 'ค้นหาเพลงในคลังและควบคุมการเล่น', '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', + 'วางแผนเส้นทางและหลีกเลี่ยงการจราจรติดขัด', + 'voiceBroadcastAndWaypoints': 'ประกาศเสียงและตั้งค่าจุดแวะ', + 'realTimeWeatherForecast': 'สภาพอากาศและพยากรณ์แบบเรียลไทม์', + 'clothingAdviceAndTravelReminders': 'คำแนะนำการแต่งกายและการเตือนการเดินทาง', + 'poiSearchFoodGasParking': 'ค้นหา POI: ร้านอาหาร / ปั๊มน้ำมัน / ที่จอดรถ', + 'ratingsHoursAndDirectRoutes': 'เรตติ้ง เวลาทำการ และนำทางตรง', + 'hotNewsAndTopicOverview': 'ข่าวฮอตและภาพรวมประเด็น', + 'longArticleSummariesAndKeyPoints': 'สรุปบทความยาวและประเด็นสำคัญ', + 'helpCallAndSMS': 'ช่วยจัดการการโทรและ SMS', + 'templatedMessagesAndScheduleReminders': 'ข้อความแม่แบบและตั้งกำหนดการเตือน', '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', + 'realtimeTranscription': 'ถอดเสียงแบบเรียลไทม์', + 'sceneLexicon': 'อภิธานศัพท์ตามสถานการณ์', + 'subtitleDisplay': 'คำบรรยาย', + 'transHeaderDesc1': 'ล่ามพร้อมกันแบบเรียลไทม์และแปลข้อความ ด้วยเสียงหน่วงต่ำ', + 'transHeaderDesc2': 'เหมาะสำหรับการเดินทาง ธุรกิจ การพูด และการสอน', + 'translateZhEn': 'แปลจีน-อังกฤษ', + 'lowLatencyVoiceBroadcast': 'ออกเสียงหน่วงต่ำ', + 'multiLangTextTranslation': 'แปลข้อความหลายภาษา', + 'termOptimizationContextPreserve': 'ปรับปรุงศัพท์เฉพาะและรักษาบริบท', + 'lexiconTourBusinessLife': 'ศัพท์เฉพาะด้านท่องเที่ยว/ธุรกิจ/ชีวิตประจำวัน', + 'personalVocabularyMemory': 'จดจำคำศัพท์ส่วนตัว', + 'conversationSubtitleLargeText': 'คำบรรยายการสนทนา / โหมดตัวอักษรใหญ่', + 'colorHighContrast': 'คอนทราสต์สีสูง', 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', + 'ประสิทธิภาพการแปลขึ้นอยู่กับไมโครโฟน ความหน่วงเครือข่าย และเสียงรบกวนรอบข้าง', // 商品模块 - 会议商品页 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', + 'meetingRecording': 'บันทึกการประชุม', + 'transcriptionAndSummary': 'ถอดเสียงและสรุป', + 'keywordSearch': 'ค้นหาคำสำคัญ', + 'collaborationSharing': 'ทำงานร่วมกันและแชร์', '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', + 'เหมาะสำหรับการประชุมธุรกิจ โน้ตในชั้นเรียน และสรุปการสัมภาษณ์', + 'meetingAutoRecording': 'บันทึกอัตโนมัติและแบ่งช่วง', + 'meetingSpeakerTagging': 'ระบุผู้พูด', + 'meetingLongAudioTranscription': 'ถอดเสียงไฟล์ยาว', + 'meetingKeyPointSummary': 'สกัดประเด็นสำคัญ', + 'meetingTopicNameSearch': 'ค้นหาตามหัวข้อ/ชื่อ', + 'meetingTimelineJump': 'ข้ามไปตามไทม์ไลน์', + 'meetingExportSummary': 'ส่งออกบันทึกการประชุม', + 'meetingMultiPlatformShare': 'แชร์ข้ามแพลตฟอร์ม', 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', + 'ควรใช้ในที่เงียบ ประสิทธิภาพขึ้นอยู่กับไมโครโฟนและเครือข่าย', // 商品模块 - VIP会员页 - 'benefitsOverview': 'Benefits overview', - 'higherQuota': 'Higher usage quota', - 'lowerUnitPrice': 'Lower unit price', - 'priorityService': 'Priority service', - 'exclusiveSupportChannel': 'Dedicated support channel', - 'fastResponse': 'Fast issue response', - 'eventsAndDiscounts': 'Events and discounts', - 'memberExclusiveEvents': 'Member-exclusive events', - 'longTermDiscountPlan': 'Long-term discount plan', - 'generalPrivileges': 'General privileges', - 'earlyAccessNewFeatures': 'Early access to new features', - 'crossDeviceSync': 'Cross-device sync', + 'benefitsOverview': 'ภาพรวมสิทธิประโยชน์', + 'higherQuota': 'โควต้าการใช้งานสูงขึ้น', + 'lowerUnitPrice': 'ราคาต่อหน่วยถูกลง', + 'priorityService': 'บริการแบบมีลำดับความสำคัญ', + 'exclusiveSupportChannel': 'ช่องทางซัพพอร์ตเฉพาะ', + 'fastResponse': 'ตอบสนองปัญหาได้รวดเร็ว', + 'eventsAndDiscounts': 'กิจกรรมและส่วนลด', + 'memberExclusiveEvents': 'กิจกรรมเฉพาะสมาชิก', + 'longTermDiscountPlan': 'แผนส่วนลดระยะยาว', + 'generalPrivileges': 'สิทธิพิเศษทั่วไป', + 'earlyAccessNewFeatures': 'เข้าถึงฟีเจอร์ใหม่ก่อนใคร', + 'crossDeviceSync': 'ซิงค์ข้ามอุปกรณ์', 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', // 商品模块 - 商品名称与描述 - '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).', + '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': 'App: VoiTrans · Provided by: VoiTrans', @@ -434,40 +431,40 @@ const Map thTH = { // 新手引导 'skip': 'ข้าม', - 'next': 'Next', - 'sayLilyHint': 'Say "Lily Lily" to the mic', - 'imHere': 'I’m here~', - 'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.', - 'aiReplyCompleted': 'Lily has finished the reply!', - 'aiThinking': 'Lily is thinking…', - 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', - 'confirmInput': 'Confirm Input', - 'guideClickSendPrefix': 'Tap send, ', - 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', - 'guideWeatherInput': 'What’s the weather today?', - 'guideWeatherSend': 'Lily will report the weather in real time', - 'guideWeatherEnd': 'Lily can report weather live—try other commands', - 'guideMusicStart': 'Tell Lily: “Play some rock music”', - 'guideMusicInput': 'Play some rock music', - 'guideMusicSend': 'Lily will find music for you', - 'guideMusicEnd': 'Lily found music—try other commands', - 'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”', - 'guideNavInput': 'Navigate to Shenzhen Airport', - 'guideNavSend': 'Lily will plan the route', - 'guideNavEnd': 'Navigation set—try other commands', - 'guideMeetingStart': - 'Tell Lily: “Create a meeting reminder for 3pm tomorrow”', - 'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow', - 'guideMeetingSend': 'Lily will create a meeting reminder', - 'guideMeetingEnd': 'Reminder created—try other commands', - 'guidePhoneStart': 'Tell Lily: “Call Mom”', - 'guidePhoneInput': 'Call Mom', - 'guidePhoneSend': 'Lily will make the call', - 'guidePhoneEnd': 'Call placed—try other commands', - 'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”', - 'guideSmsInput': 'Text Dad: I’ll be home for dinner', - 'guideSmsSend': 'Lily will send the message', - 'guideSmsEnd': 'Message sent—voice control is convenient', + 'next': 'ถัดไป', + 'sayLilyHint': 'พูดว่า "Lily Lily" เข้าที่ไมโครโฟน', + 'imHere': 'ฉันอยู่นี่~', + 'guideWelcomeWakeAI': + 'ยินดีต้อนรับสู่ Voitrans! ก่อนอื่นปลุก AI “Lily” ของคุณ', + 'aiReplyCompleted': 'Lily ตอบเสร็จแล้ว!', + 'aiThinking': 'Lily กำลังคิด…', + 'guideAwakenSuccess': 'ยอดเยี่ยม! Lily ตื่นแล้ว—ลองถามให้ช่วยได้เลย', + 'confirmInput': 'ยืนยันการป้อน', + 'guideClickSendPrefix': 'แตะส่ง, ', + 'guideWeatherStart': 'บอก Lily: “วันนี้อากาศเป็นอย่างไร?”', + 'guideWeatherInput': 'วันนี้อากาศเป็นอย่างไร?', + 'guideWeatherSend': 'Lily จะรายงานสภาพอากาศแบบเรียลไทม์', + 'guideWeatherEnd': 'Lily รายงานอากาศแบบเรียลไทม์ได้—ลองคำสั่งอื่นดู', + 'guideMusicStart': 'บอก Lily: “เปิดเพลงร็อกหน่อย”', + 'guideMusicInput': 'เปิดเพลงร็อกหน่อย', + 'guideMusicSend': 'Lily จะหาเพลงให้คุณ', + 'guideMusicEnd': 'Lily หาเพลงให้แล้ว—ลองคำสั่งอื่นดู', + 'guideNavStart': 'บอก Lily: “นำทางไปสนามบินเซินเจิ้น”', + 'guideNavInput': 'นำทางไปสนามบินเซินเจิ้น', + 'guideNavSend': 'Lily จะวางแผนเส้นทาง', + 'guideNavEnd': 'ตั้งค่านำทางแล้ว—ลองคำสั่งอื่นดู', + 'guideMeetingStart': 'บอก Lily: “สร้างการเตือนประชุมพรุ่งนี้บ่าย 3 โมง”', + 'guideMeetingInput': 'สร้างการเตือนประชุมพรุ่งนี้บ่าย 3 โมง', + 'guideMeetingSend': 'Lily จะสร้างการเตือนประชุมให้', + 'guideMeetingEnd': 'สร้างการเตือนแล้ว—ลองคำสั่งอื่นดู', + 'guidePhoneStart': 'บอก Lily: “โทรหาแม่”', + 'guidePhoneInput': 'โทรหาแม่', + 'guidePhoneSend': 'Lily จะโทรให้', + 'guidePhoneEnd': 'โทรแล้ว—ลองคำสั่งอื่นดู', + 'guideSmsStart': 'บอก Lily: “ส่งข้อความหาพ่อ: ฉันจะกลับบ้านกินข้าวเย็น”', + 'guideSmsInput': 'ส่งข้อความหาพ่อ: ฉันจะกลับบ้านกินข้าวเย็น', + 'guideSmsSend': 'Lily จะส่งข้อความ', + 'guideSmsEnd': 'ส่งข้อความแล้ว—ควบคุมด้วยเสียงสะดวกมาก', // Meeting模块 - 首页与导航 "startMeeting": "เริ่มการประชุม", @@ -481,38 +478,39 @@ const Map thTH = { 'recordingDetails': 'รายละเอียดการบันทึก', 'aiSummary': 'สรุปโดย AI', 'meetingTranscript': 'ข้อความถอดเสียงการประชุม', - 'files': 'Files', - 'mine': 'Mine', - 'connect': 'Connect', - 'allFiles': 'All Files', - 'searchInAllFiles': 'Search in all files', - 'from': 'From', - 'sortBy': 'Sort by', - 'creationTime': 'Creation Time', - 'bluetoothConnection': 'Bluetooth Connection', - 'meetingReconnect': 'Reconnect', - 'searching': 'Searching...', - 'searchFailed': 'Search failed, please check if Bluetooth is enabled', - 'aiPenNotFound': 'AI PEN device not found', - 'connectedToAiPen': 'Connected to AI PEN device', - 'checkingNewFiles': 'Checking for new files to import', - 'startingWifi': 'Starting Wi-Fi...', - 'newFilesDetected': 'New files detected, preparing to import', - 'noNewFiles': 'No new files to import', - 'connectingWifi': 'Connecting to Wi-Fi...', - 'wifiConnected': 'Wi-Fi connected successfully', - 'downloadingFiles': 'Downloading files...', - 'downloadingFileProgress': 'Total {total} files, downloading file {current}', - 'downloadComplete': 'Download complete', + 'files': 'ไฟล์', + 'mine': 'ของฉัน', + 'connect': 'เชื่อมต่อ', + 'allFiles': 'ไฟล์ทั้งหมด', + 'searchInAllFiles': 'ค้นหาในไฟล์ทั้งหมด', + 'from': 'จาก', + 'sortBy': 'เรียงตาม', + 'creationTime': 'เวลาสร้าง', + 'bluetoothConnection': 'การเชื่อมต่อ Bluetooth', + 'meetingReconnect': 'เชื่อมต่อใหม่', + 'searching': 'กำลังค้นหา...', + 'searchFailed': 'ค้นหาไม่สำเร็จ โปรดตรวจสอบว่าเปิด Bluetooth แล้ว', + 'aiPenNotFound': 'ไม่พบอุปกรณ์ AI PEN', + 'connectedToAiPen': 'เชื่อมต่อกับอุปกรณ์ AI PEN แล้ว', + 'checkingNewFiles': 'กำลังตรวจสอบไฟล์ใหม่เพื่อทำการนำเข้า', + 'startingWifi': 'กำลังเริ่ม Wi‑Fi...', + 'newFilesDetected': 'ตรวจพบไฟล์ใหม่ กำลังเตรียมนำเข้า', + 'noNewFiles': 'ไม่มีไฟล์ใหม่ให้นำเข้า', + 'connectingWifi': 'กำลังเชื่อมต่อ Wi‑Fi...', + 'wifiConnected': 'เชื่อมต่อ Wi‑Fi สำเร็จ', + 'downloadingFiles': 'กำลังดาวน์โหลดไฟล์...', + 'downloadingFileProgress': + 'ทั้งหมด {total} ไฟล์ กำลังดาวน์โหลดไฟล์ {current}', + 'downloadComplete': 'ดาวน์โหลดเสร็จสิ้น', 'downloadCompleteInfo': - 'Download complete, {count} files in total, returning automatically in 2 seconds', + 'ดาวน์โหลดเสร็จสิ้น รวม {count} ไฟล์ จะกลับอัตโนมัติใน 2 วินาที', // Meeting模块 - 录音功能 - 'startRecording': 'Start Recording', - 'liveRecording': 'Live Recording', - 'audioVideoRecording': 'Audio/Video Recording', - 'callRecording': 'Call Recording', - 'importAudio': 'Import Audio', + 'startRecording': 'เริ่มบันทึก', + 'liveRecording': 'บันทึกสด', + 'audioVideoRecording': 'บันทึกเสียง/วิดีโอ', + 'callRecording': 'บันทึกการโทร', + 'importAudio': 'นำเข้าเสียง', 'meetingRecordExitTitle': 'ออกจากการบันทึก', // 退出录音 'meetingRecordExitMessage': 'โปรดเลือกการดำเนินการหลังจากออก', // 请选择离开后的操作 'meetingRecordEndAndSave': 'จบและบันทึก', // 结束录音并保存 @@ -534,30 +532,30 @@ const Map thTH = { 'เพื่อแสดงแถบลอยการบันทึก (ตัวจับเวลา/หยุดชั่วคราว/ทำต่อ) ระหว่างการบันทึก เราต้องใช้สิทธิ์แสดงทับแอปอื่น', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'overlayPermissionOpenSettingsFailed': 'ไม่สามารถเปิดการตั้งค่าระบบอัตโนมัติได้ โปรดเปิดการตั้งค่าและเปิดสิทธิ์แสดงทับแอปอื่นด้วยตนเอง', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'transcribing': 'กำลังถอดเสียง...', + 'summarizing': 'กำลังสรุป...', + 'analyzing': 'กำลังวิเคราะห์...', + 'summaryComplete': 'สรุปเสร็จสิ้น', + 'generate': 'สร้าง', + 'overview': 'ภาพรวม', + 'transcription': 'ถอดเสียง', + 'summary': 'สรุป', + 'mindMap': 'แผนผังความคิด', + 'editSpeaker': 'แก้ไข', + 'nameSpeaker': 'ตั้งชื่อผู้พูด', // Meeting模块 - 转写与总结 - 'reSummarize': 'Re-summarize', - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'reSummarize': 'สรุปใหม่', + 'dateAndTime': 'วันที่และเวลา', + 'location': 'สถานที่', + 'attendees': 'ผู้เข้าร่วม', + 'inputLocation': 'ป้อนสถานที่', + 'inputAttendees': 'ป้อนผู้เข้าร่วม', // Meeting模块 - 模版与生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', + 'selectSummaryTemplate': 'เลือกเทมเพลตสรุป', + 'useThisTemplate': 'ใช้เทมเพลตนี้', + 'lastUsed': 'ใช้ล่าสุด', 'create': 'สร้าง', 'templateDetails': 'รายละเอียดเทมเพลต', 'tag': 'แท็ก', @@ -574,159 +572,157 @@ const Map thTH = { 'inputDescHint': 'กรุณาป้อนคำอธิบาย', 'custom': 'กำหนดเอง', 'pleaseEnter': 'กรุณากรอก', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'viewAll': 'ดูทั้งหมด', + 'recordingLanguage': 'ภาษาที่บันทึก', + 'chineseSimplified': 'ภาษาจีนกลาง (ตัวย่อ)', + 'meetingGenerateNow': 'สร้างตอนนี้', + 'keyEventsAnalyzed': 'วิเคราะห์เหตุการณ์สำคัญแล้ว {count} รายการ', 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + 'การวิเคราะห์ด้วย 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}', + 'importing': 'กำลังนำเข้า...', + 'batchImporting': 'กำลังนำเข้าทีละชุด...', + 'importingLocalRecordings': 'กำลังนำเข้าการบันทึกในเครื่อง...', + 'importFailed': 'นำเข้าไฟล์ไม่สำเร็จ: {filePath}, ข้อผิดพลาด: {error}', + 'importSuccess': 'นำเข้าการบันทึกในเครื่องสำเร็จ {count} รายการ', + 'importError': 'นำเข้าไม่สำเร็จ: {error}', + 'pleaseSelectAudioFile': 'กรุณาเลือกไฟล์เสียง', + 'shareAudio': 'แชร์เสียงการประชุม', + 'shareComplete': 'แชร์เสร็จสิ้น!', + 'shareFailed': 'แชร์ไม่สำเร็จ: {error}', + 'fileProcessingFailed': + 'ประมวลผลไฟล์ไม่สำเร็จ: {filePath}, ข้อผิดพลาด: {error}', // Meeting模块 - 思维导图 'saveMindMap': 'บันทึกแผนผังความคิด', - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', + 'shareMindMap': 'แชร์แผนผังความคิด', + 'shareSuccess': 'แชร์สำเร็จ', // 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', + 'askAI': 'ถาม AI ...', + 'askAIPrompt': 'วันนี้ให้ช่วยอะไรได้บ้าง?', + 'continueAsk': 'ถามต่อ', + 'todoList': 'รายการสิ่งที่ต้องทำ', + 'extractConclusion': 'สกัดข้อสรุป', + 'generateKeyIndicators': 'สร้างตัวชี้วัดสำคัญ', // 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...', + 'shareLink': 'แชร์ลิงก์', + 'copyTranscript': 'คัดลอกถอดเสียง', + 'copySummary': 'คัดลอกสรุป', + 'exportAudio': 'ส่งออกเสียง', + 'exportTranscript': 'ส่งออกถอดเสียง', + 'shareMeetingAudio': 'แชร์เสียงการประชุม', + 'exportSummary': 'ส่งออกสรุป', + 'exportAs': 'ส่งออกเป็น', + 'exportingPDF': 'กำลังส่งออก 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', + 'nameCurrentSpeaker': 'ตั้งชื่อผู้พูดปัจจุบัน', + 'recentlyUsedNames': 'ชื่อที่ใช้ล่าสุด', + 'applyToCurrentParagraph': 'ใช้กับย่อหน้าปัจจุบัน', + 'totalTime': 'เวลารวม', + 'summarySpeakerWillBeUpdatedAutomatically': 'ผู้พูดในสรุปจะอัปเดตอัตโนมัติ', // Meeting模块 - 云端同步 - 'syncToCloud': 'Sync to Cloud', + 'syncToCloud': 'ซิงค์ไปยังคลาวด์', 'syncToCloudTip': - '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', + 'ซิงค์การบันทึกของคุณไปยังคลาวด์โดยอัตโนมัติ คุณสามารถเล่น จัดการ และแชร์การบันทึกผ่าน VOITRANS APP หรือ VOITRANS Web (web.voitrans.com) ได้', + 'syncToVoitransApp': 'ซิงค์ VOITRANS APP', + 'transcriptionRecord': 'บันทึกถอดเสียง', // Meeting模块 - 我的页面 - 'transcriptionRecords': 'Transcription Records', - 'templateCommunity': 'Template Community', - 'comingSoon': 'Coming Soon', - 'integration': 'Integration', + 'transcriptionRecords': 'บันทึกถอดเสียง', + 'templateCommunity': 'ชุมชนเทมเพลต', + 'comingSoon': 'เร็วๆ นี้', + 'integration': 'การผสานรวม', 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', - 'enabled': 'Enabled', - 'disabled': 'Disabled', - 'myVoitransDevice': 'My VOITRANS Device', - 'helpAndFeedback': 'Help & Feedback', - 'aboutVoitrans': 'About VOITRANS', - 'meetingDays': 'Days', - 'meetingHours': 'Hours', - 'voitransAiMember': 'Voitrans AI Member', - 'unlockStarterMember': 'Unlock Starter Member', - 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', - 'unlockNow': 'Unlock Now', + 'enabled': 'เปิดใช้งาน', + 'disabled': 'ปิดใช้งาน', + 'myVoitransDevice': 'อุปกรณ์ VOITRANS ของฉัน', + 'helpAndFeedback': 'ความช่วยเหลือและข้อเสนอแนะ', + 'aboutVoitrans': 'เกี่ยวกับ VOITRANS', + 'meetingDays': 'วัน', + 'meetingHours': 'ชั่วโมง', + 'voitransAiMember': 'สมาชิก Voitrans AI', + 'unlockStarterMember': 'ปลดล็อกสมาชิก Starter', + 'bindDeviceToActivate': 'ผูกอุปกรณ์ Voitrans เพื่อเปิดใช้งานสมาชิก Starter', + 'unlockNow': 'ปลดล็อกตอนนี้', // Meeting模块 - 会员与升级 - 'comparison': 'Comparison', - 'detailedInfo': 'Detailed Information', - 'monthlyTranscriptionTime': 'Monthly Transcription Time', - 'unlimited': 'Unlimited', - 'professionalTemplates': 'Professional Templates', - 'limited': 'Limited', - 'fullTemplates': 'Full Templates', - 'professionalTerms': 'Professional Terms', - 'customTemplates': 'Custom Templates', - 'visualMindMap': 'Visual Mind Map', - 'speakerIdentification': 'Speaker Identification', - 'aiVoiceEnhancement': 'AI Voice Enhancement', - 'audioImport': 'Audio Import', - 'multipleExportFormats': 'Multiple Export Formats', - 'professionalSummaryTemplates': 'Professional Summary Templates', + 'comparison': 'เปรียบเทียบ', + 'detailedInfo': 'ข้อมูลรายละเอียด', + 'monthlyTranscriptionTime': 'เวลาถอดเสียงต่อเดือน', + 'unlimited': 'ไม่จำกัด', + 'professionalTemplates': 'เทมเพลตมืออาชีพ', + 'limited': 'จำกัด', + 'fullTemplates': 'เทมเพลตครบชุด', + 'professionalTerms': 'คำศัพท์เฉพาะทาง', + 'customTemplates': 'เทมเพลตกำหนดเอง', + 'visualMindMap': 'แผนผังความคิดแบบภาพ', + 'speakerIdentification': 'ระบุผู้พูด', + 'aiVoiceEnhancement': 'เพิ่มคุณภาพเสียงด้วย AI', + 'audioImport': 'นำเข้าเสียง', + 'multipleExportFormats': 'หลายรูปแบบการส่งออก', + 'professionalSummaryTemplates': 'เทมเพลตสรุปมืออาชีพ', 'professionalTemplateDesc': - 'Professional template design to improve your work efficiency. Customized according to industry needs.', + 'ออกแบบเทมเพลตแบบมืออาชีพเพื่อเพิ่มประสิทธิภาพงาน ปรับให้เหมาะกับความต้องการของอุตสาหกรรม', 'customTemplateDesc': - 'You can customize summary prompts according to your needs and use them to generate the required summaries.', + 'คุณสามารถปรับแต่งพรอมต์สรุปตามต้องการ และใช้สร้างสรุปที่ต้องการ', 'askAiDesc': - 'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.', + 'สกัดข้อมูลเชิงลึกจากบันทึกอย่างชาญฉลาด สร้างตารางข้อมูล ข้อสรุปสำคัญ รายการสิ่งที่ต้องทำ อีเมลรายงาน และเนื้อหาแบบจัดรูปแบบอื่นๆ ได้ในคลิกเดียว', 'visualMindMapDesc': - 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', + 'นอกเหนือจากสรุป—จัดระเบียบและแสดงจุดสำคัญเป็นแผนผังความคิด เพื่อเข้าใจข้อความเต็มได้มีประสิทธิภาพยิ่งขึ้น', 'templateCommunityDesc': - 'Discover, share, and get inspiration from the template library created by users.', + 'ค้นพบ แบ่งปัน และรับแรงบันดาลใจจากคลังเทมเพลตที่ผู้ใช้สร้าง', 'speakerIdentificationDesc': - 'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.', + 'การถอดเสียงจะรองรับการระบุผู้พูด ช่วยถ่ายทอดเนื้อหาการประชุมหรือการโทรได้ชัดเจนขึ้น และทำให้สรุปแม่นยำขึ้น', 'privateCloudSyncDesc': - 'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.', + 'การบันทึกและถอดเสียงของคุณจะถูกเก็บอย่างปลอดภัยบนเซิร์ฟเวอร์คลาวด์เฉพาะ พร้อมการเข้ารหัสเต็มรูปแบบขณะอัปโหลดและดาวน์โหลด เพื่อความเป็นส่วนตัวและความปลอดภัย', 'aiVoiceEnhancementDesc': - 'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.', + 'การเพิ่มคุณภาพเสียงด้วย AI รองรับการลดเสียงรบกวนหลายระดับ ช่วยกำจัดเสียงพื้นหลัง เพิ่มความชัดของเสียง และปรับปรุงคุณภาพการเล่น', 'audioImportDesc': - 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', + 'นำเข้าไฟล์เสียงจากเครื่องหรือแอปภายนอกได้ง่าย เช่น Voice Memos, Google Drive เป็นต้น', 'multipleExportFormatsDesc': - 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - 'upgradeMembership': 'Upgrade Your Membership', - 'yearlySubscription': 'Yearly Subscription', - 'monthlySubscription': 'Monthly Subscription', + 'ส่งออกการบันทึกเสียง ข้อความถอดเสียง และสรุปได้หลายรูปแบบ (TXT, PDF, JPEG) ตามต้องการ', + 'upgradeMembership': 'อัปเกรดสมาชิก', + 'yearlySubscription': 'สมัครรายปี', + 'monthlySubscription': 'สมัครรายเดือน', 'proMonthly': 'Pro ¥60/month', - 'proMonthlyDesc': - '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', - 'sevenDayTrial': '7-day Free Trial', + 'proMonthlyDesc': 'ทดลองฟรี 7 วัน จากนั้น ¥800/ปี ยกเลิกได้ก่อนหมดช่วงทดลอง', + 'sevenDayTrial': 'ทดลองฟรี 7 วัน', 'unlimitedMonthly': 'Unlimited ¥120/month', 'unlimitedMonthlyDesc': - '7-day free trial, then ¥1600/year. Cancel anytime before trial ends.', - 'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.', + 'ทดลองฟรี 7 วัน จากนั้น ¥1600/ปี ยกเลิกได้ก่อนหมดช่วงทดลอง', + 'trialNote': '*ทดลองฟรี 7 วัน จากนั้นคิดค่าบริการรายปี ยกเลิกได้ทุกเมื่อ', 'proPrice': 'Pro ¥120', 'proMonthlyPrice': '¥120/month', - 'subscribe': 'Subscribe', + 'subscribe': 'สมัครสมาชิก', 'unlimitedPrice': 'Unlimited ¥198', 'unlimitedMonthlyPrice': '¥198/month', 'upgradeNote': - '*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account', - 'buyMoreTranscriptionTime': 'Buy More Transcription Time', + '*หลังอัปเกรดการสมัครสมาชิก วันที่คงเหลือของการสมัครเดิมจะถูกคำนวณและคืนเงินไปยังบัญชีชำระเงินของคุณโดยอัตโนมัติ', + 'buyMoreTranscriptionTime': 'ซื้อเวลาถอดเสียงเพิ่ม', 'sixThousandMinutes': '6,000 minutes', 'threeThousandMinutes': '3,000 minutes', 'sixHundredMinutes': '600 minutes', 'oneHundredTwentyMinutes': '120 minutes', - 'validityPeriod': '*Validity Period: ', - 'validityNote': - 'Activated immediately after purchase, valid for 2 years after activation.', - 'purchase': 'Purchase', + 'validityPeriod': '*ระยะเวลามีผลใช้: ', + 'validityNote': 'เริ่มใช้งานทันทีหลังซื้อ มีอายุ 2 ปีหลังจากเปิดใช้งาน', + 'purchase': 'ซื้อ', // Meeting模块 - 录音语言 - 'recordLanguage': 'Recording Language', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', + 'recordLanguage': 'ภาษาที่บันทึก', + 'cantonese': 'กวางตุ้ง', + 'sichuan': 'สำเนียงเสฉวน', + 'shanghai': 'สำเนียงเซี่ยงไฮ้', // Meeting模块 - 错误提示 - 'meetingUnknownLanguage': 'Unknown Language', + 'meetingUnknownLanguage': 'ภาษาที่ไม่รู้จัก', 'analysisFailed': 'การวิเคราะห์ล้มเหลว กรุณาลองใหม่ภายหลัง', 'transcriptionFailed': 'การถอดเสียงล้มเหลว กรุณาลองใหม่ภายหลัง', 'summaryFailed': 'สรุปล้มเหลว กรุณาลองใหม่ภายหลัง', @@ -747,10 +743,9 @@ const Map thTH = { "translationRecharge": "การเติมเงินการแปล", "meetingAssistantRecharge": "การเติมเงินผู้ช่วยการประชุม", "cloudSync": "การเติมเงินการ đồng bộ hóaคลาวด์", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", - "bindRewardSimpleDesc": - "First bind device reward has been issued. Tap OK to close.", + "memberService": "บริการสมาชิก", + "bindRewardTitle": "รางวัล", + "bindRewardSimpleDesc": "มอบรางวัลการผูกอุปกรณ์ครั้งแรกแล้ว แตะ OK เพื่อปิด", "joinDevice": "อุปกรณ์ที่เชื่อมต่อ:", "accountId": "ID บัญชี:", "systemSetting": "การตั้งค่าระบบ", @@ -800,19 +795,20 @@ const Map thTH = { "loading": "กำลังโหลด...", // 设备管理模块 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", - "deviceTypeSmartEye": "Smart Glasses", + "deviceTypeUnknown": "อุปกรณ์ที่ไม่รู้จัก", + "deviceTypeClassicBluetoothHeadset": "หูฟัง Bluetooth แบบคลาสสิก", + "deviceTypeBleBluetoothHeadset": "หูฟัง Bluetooth แบบ BLE", + "deviceTypeSmartVoiceRecorder": "เครื่องบันทึกเสียงอัจฉริยะ", + "deviceTypeSmartEye": "แว่นอัจฉริยะ", "unbind": "ยกเลิกการผูก", - "noDevicesBound": "No devices bound yet", - "pleaseBindDeviceFirst": "Please bind a device first to manage", - "noMacAddress": "No MAC Address", - "licenseCode": "License Code", - "confirmUnbind": "Confirm Unbind", - "confirmUnbindMessage": "Are you sure you want to unbind device \\", - "confirmUnbindAction": "Confirm Unbind", + "noDevicesBound": "ยังไม่มีอุปกรณ์ที่ผูก", + "pleaseBindDeviceFirst": "โปรดผูกอุปกรณ์ก่อนเพื่อจัดการ", + "noMacAddress": "ไม่มีที่อยู่ MAC", + "licenseCode": "รหัสไลเซนส์", + "confirmUnbind": "ยืนยันการยกเลิกการผูก", + "confirmUnbindMessage": + "คุณแน่ใจหรือไม่ว่าต้องการยกเลิกการผูกอุปกรณ์ \"{deviceName}\"?", + "confirmUnbindAction": "ยืนยันการยกเลิกการผูก", // Agent模块 - 主界面 "Lily": "Lily", @@ -842,31 +838,31 @@ const Map thTH = { "loadMoreMessages": "โหลดข้อความเพิ่มเติม...", "loadFailedClickRetry": "โหลดล้มเหลว คลิกเพื่อลองใหม่", "swipeUpForMore": "ปัดขึ้นเพื่อดูเพิ่มเติม", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 + "callingTool": "ฉันกำลังช่วยคุณอยู่ กรุณารอสักครู่!", // 正在帮您,请稍等! + "voice_interrupt": "ขัดจังหวะ", // 语音打断 'voice_interrupt_tip': 'เมื่อเปิดใช้งาน: AI จะไม่ถูกขัดจังหวะโดยเสียงของคุณขณะพูด และสามารถจัดการได้เพียงหนึ่งรอบการสนทนา หากต้องการเริ่มรอบใหม่ เพียงพูดคำปลุก', // Agent模块 - 预设提示词 - "presetMusic": "Play some music", // 来点音乐 - "presetNavigation": "Navigation to", // 导航 - "presetWeather": "Today's weather", // 今日天气 - "presetNews": "Today's news", // 今日新闻 - "presetFood": "Nearby food", // 美食 - "playSomeMusic": "Play some popular music", // 播放一些流行音乐 - "navigationTo": "Please help me navigate to", // 导航到 - "todayWeather": "How's the weather today?", // 今日天气 - "todayNews": "What's the news today?", // 今日新闻 - "nearbyFood": "What delicious food is nearby?", // 美食 + "presetMusic": "เปิดเพลงหน่อย", // 来点音乐 + "presetNavigation": "นำทางไปยัง", // 导航 + "presetWeather": "สภาพอากาศวันนี้", // 今日天气 + "presetNews": "ข่าววันนี้", // 今日新闻 + "presetFood": "อาหารใกล้เคียง", // 美食 + "playSomeMusic": "เปิดเพลงยอดนิยมหน่อย", // 播放一些流行音乐 + "navigationTo": "ช่วยนำทางไปยัง", // 导航到 + "todayWeather": "วันนี้อากาศเป็นอย่างไร?", // 今日天气 + "todayNews": "มีข่าวอะไรวันนี้?", // 今日新闻 + "nearbyFood": "มีของอร่อยอะไรอยู่ใกล้ๆ?", // 美食 // Agent模块 - 欢迎消息与权限 - 'welcomeMessage': '你好!我是**Lily**,我能帮你:\n\n' - '• 回答问题和提供信息\n\n' - '• 实时语音翻译\n\n' - '• 推荐音乐和播客\n\n' - '• 语音备忘录和提醒\n\n' - '• 控制耳机功能\n\n' - '有什么我可以帮你的吗?', + 'welcomeMessage': 'สวัสดี! ฉันคือ **Lily** ฉันช่วยคุณได้:\n\n' + '• ตอบคำถามและให้ข้อมูล\n\n' + '• แปลเสียงแบบเรียลไทม์\n\n' + '• แนะนำเพลงและพอดแคสต์\n\n' + '• บันทึกเสียงและตั้งเตือน\n\n' + '• ควบคุมฟังก์ชันหูฟัง\n\n' + 'มีอะไรให้ช่วยไหม?', 'microphonePermission': 'ไมโครโฟน', 'voiceRecognitionPermissionText': 'ฟังก์ชันรู้จำเสียงต้องการการเข้าถึงไมโครโฟน', @@ -902,11 +898,12 @@ const Map thTH = { 'generatedByAi': 'สร้างโดย AI', // Agent模块 - 工具调用 - 'toolCall': 'Tool Call', - 'noResult': 'No Result', - 'noToolCallContentToCopy': 'No tool call content to copy', - 'toolCallDetails': 'Tool Call Details:', - 'toolCallContentCopied': 'Tool call content copied to clipboard', + 'toolCall': 'การเรียกใช้เครื่องมือ', + 'noResult': 'ไม่มีผลลัพธ์', + 'noToolCallContentToCopy': 'ไม่มีเนื้อหาการเรียกใช้เครื่องมือให้คัดลอก', + 'toolCallDetails': 'รายละเอียดการเรียกใช้เครื่องมือ:', + 'toolCallContentCopied': + 'คัดลอกเนื้อหาการเรียกใช้เครื่องมือไปยังคลิปบอร์ดแล้ว', // Agent模块 - 音乐卡片 'recommendedMusic': 'นี่คือเพลงที่แนะนำบางส่วน:', @@ -929,27 +926,27 @@ const Map thTH = { "tsransit": "ขนส่งสาธารณะ", // Agent模块 - 导航选择 - 'selectNavigationApp': 'Select Navigation App', + 'selectNavigationApp': 'เลือกแอปนำทาง', 'amapMap': 'Amap', - 'useAmapNavigation': 'Navigate with Amap', + 'useAmapNavigation': 'นำทางด้วย Amap', 'baiduMap': 'Baidu Maps', - 'useBaiduNavigation': 'Navigate with Baidu Maps', + 'useBaiduNavigation': 'นำทางด้วย Baidu Maps', 'googleMap': 'Google Maps', - 'useGoogleNavigation': 'Navigate with Google Maps', + 'useGoogleNavigation': 'นำทางด้วย Google Maps', 'appleMap': 'Apple Maps', - 'useAppleNavigation': 'Navigate with Apple Maps', - 'builtInNavigation': 'Built-in Navigation', - 'useBuiltInNavigation': 'Navigate with built-in map', - 'navigationStartFailed': 'Failed to start navigation', + 'useAppleNavigation': 'นำทางด้วย Apple Maps', + 'builtInNavigation': 'นำทางในตัว', + 'useBuiltInNavigation': 'นำทางด้วยแผนที่ในตัว', + 'navigationStartFailed': 'ไม่สามารถเริ่มการนำทางได้', 'cannotPlayMusicListRetryLater': - 'Cannot play music list, please try again later', - 'cannotPlaySong': 'Cannot play song', - 'openMapError': 'Error opening map', - 'pleaseInstallAmapApp': 'Please install the Amap app first', - 'pleaseInstallBaiduMapApp': 'Please install the Baidu Maps app first', - 'appleMapStartFailed': 'Apple Maps failed to start', - 'appleMapUnavailable': 'Apple Maps unavailable', - 'openAppleMapError': 'Error opening Apple Maps', + 'ไม่สามารถเล่นรายการเพลงได้ โปรดลองใหม่ภายหลัง', + 'cannotPlaySong': 'ไม่สามารถเล่นเพลงได้', + 'openMapError': 'เกิดข้อผิดพลาดขณะเปิดแผนที่', + 'pleaseInstallAmapApp': 'โปรดติดตั้งแอป Amap ก่อน', + 'pleaseInstallBaiduMapApp': 'โปรดติดตั้งแอป Baidu Maps ก่อน', + 'appleMapStartFailed': 'ไม่สามารถเปิด Apple Maps ได้', + 'appleMapUnavailable': 'Apple Maps ไม่พร้อมใช้งาน', + 'openAppleMapError': 'เกิดข้อผิดพลาดขณะเปิด Apple Maps', // Agent模块 - 天气卡片 'weatherQuery': 'กำลังสอบถามสภาพอากาศ:', @@ -1002,8 +999,8 @@ const Map thTH = { "strongWind": "ลมแรง", // 翻译模块 - 中间层 - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", + "pictureTranslation": "แปลรูปภาพ", + "textTranslation": "แปลข้อความ", // 翻译模块 - 主页 "translationHistory": "ประวัติการแปล", @@ -1013,33 +1010,33 @@ const Map thTH = { "phoneUser": "ผู้ใช้โทรศัพท์", "selectSourceLanguage": "เลือกภาษาต้นทาง", "selectTargetLanguage": "เลือกภาษาเป้าหมาย", - "me": "Me", - "counterPart": "Counterpart", + "me": "ฉัน", + "counterPart": "คู่สนทนา", "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - "autoDetect": "Auto Detect", // 自动检测 + "โปรดตรวจสอบว่าหูฟัง Bluetooth เชื่อมต่อกับโทรศัพท์แล้วและอยู่ในสถานะกำลังโทร", + "autoDetect": "ตรวจจับอัตโนมัติ", // 自动检测 // 翻译模块 - 悬浮窗与权限 - 'disableFloatingWindow': 'Disable Floating Window', - 'enableFloatingWindow': 'Enable Floating Window', - 'permissionTip': 'Permission Tip', + 'disableFloatingWindow': 'ปิดหน้าต่างลอย', + 'enableFloatingWindow': 'เปิดหน้าต่างลอย', + 'permissionTip': 'คำแนะนำสิทธิ์', 'micPermissionRequiredForRecording': - 'Microphone permission is required for recording', - 'deleteTranslationRecordError': 'Error deleting translation record: @error', + 'จำเป็นต้องมีสิทธิ์ไมโครโฟนเพื่อบันทึกเสียง', + 'deleteTranslationRecordError': 'เกิดข้อผิดพลาดขณะลบบันทึกการแปล: @error', // 翻译模块 - 文本翻译 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "translating": "Translating", - "translate": "Translate", - "pleaseInputText": "Please input text", + "languageDetectionFailed": "ตรวจจับภาษาไม่สำเร็จ", + "translationFailed": "แปลไม่สำเร็จ", + "translating": "กำลังแปล", + "translate": "แปล", + "pleaseInputText": "โปรดป้อนข้อความ", "inputTextToTranslate": "กรุณากรอกข้อความที่ต้องการแปล", - "textTooLong": "Text too long, max 5000 characters", + "textTooLong": "ข้อความยาวเกินไป สูงสุด 5000 อักขระ", // 翻译模块 - 历史记录 "noTranslationHistory": "ยังไม่มีประวัติ", - "historyRecords": "History Records", - "clearResults": "Clear Results", + "historyRecords": "ประวัติการแปล", + "clearResults": "ล้างผลลัพธ์", "clearHistory": "ล้างประวัติ", "clearHistoryConfirm": "คุณแน่ใจหรือไม่ว่าต้องการล้างประวัติการแปลทั้งหมด การกระทำนี้ไม่สามารถย้อนกลับได้", @@ -1049,55 +1046,54 @@ const Map thTH = { "คุณแน่ใจหรือไม่ว่าต้องการลบบันทึกการแปลทั้งหมดของเซสชันนี้ การกระทำนี้ไม่สามารถย้อนกลับได้", // 翻译模块 - 图片翻译 - "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", + "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": - "Image processing or translation failed. Please retry.\nError: {error}", + "การประมวลผลรูปภาพหรือการแปลไม่สำเร็จ โปรดลองอีกครั้ง\nข้อผิดพลาด: {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", + "emptyTranslationResult": "API แปลรูปภาพส่งคืนผลลัพธ์ว่าง", "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", + "เกิดข้อยกเว้นของ API แปลรูปภาพ ตรวจสอบเครือข่ายแล้วลองใหม่", + "permissionRequired": "ต้องขออนุญาต", + "cameraPermissionRequired": "ต้องมีสิทธิ์กล้องเพื่อถ่ายรูป", + "photoAlbumPermissionRequired": "ต้องมีสิทธิ์อัลบั้มรูปเพื่อเลือกรูปภาพ", + "translationDetails": "รายละเอียดการแปล", + "originalImage": "รูปภาพต้นฉบับ", + "sourceLanguage": "ภาษาต้นทาง", + "targetLanguage": "ภาษาเป้าหมาย", + "translationTime": "เวลาการแปล", + "shareInDevelopment": "ฟีเจอร์แชร์กำลังอยู่ระหว่างพัฒนา", // 翻译模块 - 录音文件 "translateAudioFiles": "แปลไฟล์เสียง", @@ -1148,8 +1144,8 @@ const Map thTH = { 'deleteAccount': 'ลบบัญชี', 'deleteAccountTips': 'คุณแน่ใจหรือไม่ว่าต้องการลบบัญชีของคุณอย่างถาวร การกระทำนี้ไม่สามารถย้อนกลับได้', - 'clean': 'Clear Cache', - 'cleanTips': 'Are you sure you want to clear personal cache?', + 'clean': 'ล้างแคช', + 'cleanTips': 'คุณแน่ใจหรือไม่ว่าต้องการล้างแคชส่วนตัว?', 'networkConnectionFailed': 'การเชื่อมต่อเครือข่ายล้มเหลว โปรดตรวจสอบการตั้งค่าเครือข่ายแล้วลองใหม่', 'serverTemporarilyUnavailable': @@ -1190,32 +1186,32 @@ const Map thTH = { 'AccountService ได้รับการเริ่มต้นแล้ว', // AccountService 已初始化 // 权限模块 - 'meetingStoragePermission': 'Storage', + 'meetingStoragePermission': 'ที่เก็บข้อมูล', 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', + 'เราต้องการสิทธิ์เข้าถึงที่เก็บข้อมูลเพื่อให้คุณเลือกและอัปโหลดไฟล์เสียงได้', 'meetingStoragePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', + 'ตรวจพบว่าคุณปฏิเสธสิทธิ์ที่เก็บข้อมูลแบบถาวร หากต้องการใช้ฟีเจอร์นี้ต่อ โปรดไปที่การตั้งค่าแอปและเปิดสิทธิ์ที่เก็บข้อมูลด้วยตนเอง', 'getPermissionStatusFailed': 'รับสถานะสิทธิ์ล้มเหลว', 'communicationPermissions': 'สิทธิ์การสื่อสาร', - 'bluetoothPermissions': 'Bluetooth Permissions', - 'notificationPermissions': 'Notification Permissions', - 'storagePermissions': 'Storage Permissions', - 'microphonePermissions': 'Microphone Permissions', - 'alarmPermissions': 'Alarm Permissions', + 'bluetoothPermissions': 'สิทธิ์ Bluetooth', + 'notificationPermissions': 'สิทธิ์การแจ้งเตือน', + 'storagePermissions': 'สิทธิ์ที่เก็บข้อมูล', + 'microphonePermissions': 'สิทธิ์ไมโครโฟน', + 'alarmPermissions': 'สิทธิ์การตั้งปลุก', 'calendarPermissions': 'สิทธิ์ปฏิทิน', 'locationPermissions': 'สิทธิ์ตำแหน่ง', 'phone': 'โทรศัพท์', 'sms': 'SMS', - 'contacts': 'Contacts', - 'notification': 'Notification', - 'alarm': 'Alarm', + 'contacts': 'รายชื่อผู้ติดต่อ', + 'notification': 'การแจ้งเตือน', + 'alarm': 'การตั้งปลุก', 'calendarWrite': 'เขียนปฏิทิน', 'calendarFullAccess': 'เข้าถึงปฏิทินเต็มรูปแบบ', 'locationInfo': 'ข้อมูลตำแหน่ง', 'phonePermissionDesc': 'ใช้สำหรับฟังก์ชันการโทรออก', 'smsPermissionDesc': 'ใช้สำหรับฟังก์ชันการส่ง SMS', 'alarmPermissionDesc': - 'Used to set exact alarms to ensure reminders trigger on time', + 'ใช้สำหรับตั้งปลุกแบบแม่นยำเพื่อให้การเตือนทำงานตรงเวลา', 'calendarWritePermissionDesc': 'ใช้สำหรับสร้างกิจกรรมและการแจ้งเตือนในปฏิทิน', 'calendarFullAccessPermissionDesc': 'ใช้สำหรับอ่านและจัดการกิจกรรมและการแจ้งเตือนในปฏิทิน', @@ -1231,71 +1227,69 @@ const Map thTH = { 'phonePermissionDetailDesc': 'ฟังก์ชันโทรออกต้องการสิทธิ์โทรศัพท์', 'smsPermissionDetailDesc': 'ฟังก์ชันส่ง SMS ต้องการสิทธิ์ SMS', 'alarmPermissionDetailDesc': - 'This permission is required to set exact alarms and ensure reminders trigger on time', + 'ต้องใช้สิทธิ์นี้เพื่อการตั้งปลุกแบบแม่นยำและให้การเตือนทำงานตรงเวลา', 'calendarWritePermissionDetailDesc': 'การสร้างกิจกรรมในปฏิทินต้องการสิทธิ์เขียนปฏิทิน', 'calendarFullAccessPermissionDetailDesc': 'การจัดการกิจกรรมในปฏิทินต้องการสิทธิ์เข้าถึงปฏิทินเต็มรูปแบบ', 'locationPermissionDetailDesc': 'การรับข้อมูลตำแหน่งต้องการสิทธิ์ตำแหน่ง', - 'contactsPermissionDesc': 'Used for accessing contact information', + 'contactsPermissionDesc': 'ใช้เพื่อเข้าถึงข้อมูลรายชื่อผู้ติดต่อ', 'contactsPermissionDetailDesc': - 'Phone call and SMS functionality requires contacts permission to select contacts', - 'bluetoothPermissionDesc': - 'Used for connecting and managing Bluetooth devices', + 'ฟังก์ชันการโทรและ SMS ต้องใช้สิทธิ์รายชื่อผู้ติดต่อเพื่อเลือกผู้ติดต่อ', + 'bluetoothPermissionDesc': 'ใช้สำหรับเชื่อมต่อและจัดการอุปกรณ์ Bluetooth', 'bluetoothPermissionDetailDesc': - 'Connecting to Bluetooth headphones and other devices requires Bluetooth permission', - 'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices', + 'การเชื่อมต่อหูฟัง Bluetooth และอุปกรณ์อื่นๆ ต้องใช้สิทธิ์ Bluetooth', + 'bluetoothScanPermissionDesc': 'ใช้สำหรับสแกนอุปกรณ์ Bluetooth ใกล้เคียง', 'bluetoothScanPermissionDetailDesc': - 'Scanning for nearby Bluetooth devices requires Bluetooth scan permission', - 'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices', + 'การสแกนอุปกรณ์ Bluetooth ใกล้เคียงต้องใช้สิทธิ์สแกน Bluetooth', + 'bluetoothConnectPermissionDesc': 'ใช้สำหรับเชื่อมต่ออุปกรณ์ Bluetooth', 'bluetoothConnectPermissionDetailDesc': - 'Connecting to Bluetooth devices requires Bluetooth connect permission', - 'notificationPermissionDesc': 'Used for sending notification messages', + 'การเชื่อมต่ออุปกรณ์ Bluetooth ต้องใช้สิทธิ์เชื่อมต่อ Bluetooth', + 'notificationPermissionDesc': 'ใช้สำหรับส่งการแจ้งเตือน', 'notificationPermissionDetailDesc': - 'App needs notification permission to send you important alerts and messages', + 'แอปต้องใช้สิทธิ์การแจ้งเตือนเพื่อส่งการแจ้งเตือนและข้อความสำคัญให้คุณ', 'appNeedsPermissionForFullFunction': 'แอปพลิเคชันต้องการสิทธิ์นี้เพื่อให้บริการเต็มรูปแบบ', 'permanentDenialText': 'คุณได้ปฏิเสธสิทธิ์ {permission} อย่างถาวร โปรดไปที่การตั้งค่าแอปเพื่อเปิดใช้งาน', 'goToSettings': 'ไปที่การตั้งค่า', - 'bluetoothScan': 'Bluetooth Scan', - 'bluetoothConnect': 'Bluetooth Connect', + 'bluetoothScan': 'สแกน Bluetooth', + 'bluetoothConnect': 'เชื่อมต่อ Bluetooth', 'bluetoothScanExplanation': - 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', + 'แอปต้องใช้สิทธิ์สแกน Bluetooth เพื่อสแกนอุปกรณ์ Bluetooth ใกล้เคียง', 'bluetoothConnectExplanation': - 'The app needs Bluetooth connect permission to connect to Bluetooth devices.', + 'แอปต้องใช้สิทธิ์เชื่อมต่อ Bluetooth เพื่อเชื่อมต่อกับอุปกรณ์ Bluetooth', 'locationForBluetoothExplanation': - 'The app needs location permission to scan Bluetooth devices.', + 'แอปต้องใช้สิทธิ์ตำแหน่งเพื่อสแกนอุปกรณ์ Bluetooth', 'bluetoothScanPermanentDenial': - 'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.', + 'คุณปฏิเสธสิทธิ์สแกน Bluetooth แบบถาวร โปรดไปที่การตั้งค่าเพื่อเปิดใช้งานด้วยตนเอง', 'bluetoothConnectPermanentDenial': - 'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.', + 'คุณปฏิเสธสิทธิ์เชื่อมต่อ Bluetooth แบบถาวร โปรดไปที่การตั้งค่าเพื่อเปิดใช้งานด้วยตนเอง', 'locationPermanentDenial': - 'Location permission has been permanently denied, please go to settings to enable it manually.', - 'notificationPermission': 'Notification', - 'locationPermission': 'Location', + 'คุณปฏิเสธสิทธิ์ตำแหน่งแบบถาวร โปรดไปที่การตั้งค่าเพื่อเปิดใช้งานด้วยตนเอง', + 'notificationPermission': 'การแจ้งเตือน', + 'locationPermission': 'ตำแหน่ง', 'notificationPermissionExplanation': - 'Notification permission is required to display music playback status.', + 'ต้องใช้สิทธิ์การแจ้งเตือนเพื่อแสดงสถานะการเล่นเพลง', '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.', - 'storagePermission': 'Storage', - 'microphonePermissionExplanation': - 'We need microphone permission to record audio content.', + 'คุณปฏิเสธสิทธิ์ตำแหน่งแบบถาวร โปรดไปที่การตั้งค่าเพื่อเปิดใช้งาน', + 'storagePermission': 'ที่เก็บข้อมูล', + 'microphonePermissionExplanation': 'เราต้องการสิทธิ์ไมโครโฟนเพื่อบันทึกเสียง', 'storagePermissionExplanation': - 'We need storage permission so you can select and upload audio files.', + 'เราต้องการสิทธิ์ที่เก็บข้อมูลเพื่อให้คุณเลือกและอัปโหลดไฟล์เสียงได้', 'microphonePermissionPermanentDenial': - '检测到您已永久拒绝录音权限。如需继续使用此功能,请前往应用设置中手动开启麦克风权限。', + 'ตรวจพบว่าคุณปฏิเสธสิทธิ์ไมโครโฟนแบบถาวร หากต้องการใช้ฟีเจอร์นี้ต่อ โปรดไปที่การตั้งค่าแอปและเปิดสิทธิ์ไมโครโฟนด้วยตนเอง', 'storagePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', + 'ตรวจพบว่าคุณปฏิเสธสิทธิ์ที่เก็บข้อมูลแบบถาวร หากต้องการใช้ฟีเจอร์นี้ต่อ โปรดไปที่การตั้งค่าแอปและเปิดสิทธิ์ที่เก็บข้อมูลด้วยตนเอง', + 'permissionUtilNeed': 'ต้องการ ', + 'permissionUtilPermission': ' สิทธิ์', + 'permissionUtilRestricted': ' สิทธิ์ถูกจำกัด', 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'ฟีเจอร์นี้ไม่พร้อมใช้งานหรือถูกจำกัดบนอุปกรณ์นี้ โปรดตรวจสอบการตั้งค่าอุปกรณ์หรือข้อจำกัดของระบบ', 'permissionUtilConfirm': 'OK', // 原生前台服务通知(Android) @@ -1381,27 +1375,26 @@ const Map thTH = { 'bleConnectionFailed': 'การเชื่อมต่อ BLE ล้มเหลว', 'deviceAuthorizationFailedCheckCode': 'การอนุญาตอุปกรณ์ล้มเหลว โปรดตรวจสอบรหัสอนุญาต', - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + 'bluetoothGuideTitle': 'ต้องเปิด Bluetooth ด้วยตนเอง', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'โปรดทำตามขั้นตอนต่อไปนี้:', // 请按照以下步骤操作: 'bluetoothGuideStep1': - 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'เปิด Bluetooth: การตั้งค่า → Bluetooth → เปิด', // 开启蓝牙:设置 → 蓝牙 → 开启 'bluetoothGuideStep2': - 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 - 'bluetoothGuideStep3': - 'Return to app to continue pairing process', // 返回应用继续配对流程 + 'เชื่อมต่ออุปกรณ์: ค้นหาอุปกรณ์ของคุณใน "อุปกรณ์ของฉัน" แล้วแตะเพื่อเชื่อมต่อ', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'bluetoothGuideStep3': 'กลับไปที่แอปเพื่อดำเนินการจับคู่ต่อ', // 返回应用继续配对流程 'bluetoothGuideTip': - 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': 'I Know', // 我知道了 + 'เคล็ดลับ: คุณสามารถกดค้างที่ไอคอน Bluetooth ในศูนย์ควบคุมเพื่อเข้าถึงการตั้งค่า Bluetooth ได้อย่างรวดเร็ว', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + '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:", + "firstBindRewardTitle": "รางวัลต้อนรับ", + "firstBindRewardDesc": "คุณได้รับรางวัลการผูกอุปกรณ์แล้ว", + "vipLevelLabel": "ระดับ VIP:", + "expiryLabel": "วันหมดอายุ:", + "notActivated": "ยังไม่เปิดใช้งาน", + "aiChatCreditsLabel": "เครดิตแชท AI:", + "translationCreditsLabel": "เครดิตการแปล:", + "meetingCreditsLabel": "เครดิตการประชุม:", "ok": "OK", // 用户反馈模块 @@ -1431,13 +1424,13 @@ const Map thTH = { "connectionFailed": "การเชื่อมต่อล้มเหลว", "retryConnection": "ลองเชื่อมต่อใหม่", "ota_updateNow": "อัปเดตทันที", - "otaVersionInfoFailed": "Failed to get version info. Please try again later.", + "otaVersionInfoFailed": "ไม่สามารถรับข้อมูลเวอร์ชันได้ กรุณาลองใหม่ภายหลัง", "otaDeviceInfoUnavailable": - "Unable to get device info. Please check the connection and retry.", + "ไม่สามารถรับข้อมูลอุปกรณ์ได้ โปรดตรวจสอบการเชื่อมต่อแล้วลองใหม่", "otaProductInfoUnavailable": - "Unable to identify the device. Please reconnect and retry.", + "ไม่สามารถระบุอุปกรณ์ได้ โปรดเชื่อมต่อใหม่แล้วลองอีกครั้ง", "otaFirmwareVersionInvalid": - "Firmware version is abnormal. Please reconnect and retry.", + "เวอร์ชันเฟิร์มแวร์ผิดปกติ โปรดเชื่อมต่อใหม่แล้วลองอีกครั้ง", "keepConnectedDontClose": "โปรดให้อุปกรณ์เชื่อมต่ออยู่เสมอ อย่าปิดแอปพลิเคชัน", "doNotDisconnect": "โปรดอย่าตัดการเชื่อมต่อ", @@ -1447,55 +1440,56 @@ const Map thTH = { "ถอดหูฟังทั้งสองข้างออก และตรวจสอบให้แน่ใจว่าแบตเตอรี่ทั้งสองข้างมีพลังงานมากกว่า 20%", // OTA升级模块 - 弹窗与对话框 - 'otaNewVersionFoundWithVersion': 'New version @version found', - 'otaConfirmUpdateNow': 'Update now?', - 'otaUpdate': 'Update', - 'otaUpgradeSuccess': 'Upgrade Successful', + 'otaNewVersionFoundWithVersion': 'พบเวอร์ชันใหม่ @version', + 'otaConfirmUpdateNow': 'อัปเดตตอนนี้หรือไม่?', + 'otaUpdate': 'อัปเดต', + 'otaUpgradeSuccess': 'อัปเกรดสำเร็จ', 'otaUpgradeCompleteRepair': - 'Firmware upgrade complete!\n\nDevice needs to be re-paired to work properly. Go to pairing page now?', - 'otaPairLater': 'Pair Later', - 'otaPairNow': 'Pair Now', + 'อัปเกรดเฟิร์มแวร์เสร็จสิ้น!\n\nอุปกรณ์จำเป็นต้องจับคู่ใหม่เพื่อให้ทำงานได้อย่างถูกต้อง ไปที่หน้าจับคู่ตอนนี้หรือไม่?', + 'otaPairLater': 'จับคู่ภายหลัง', + 'otaPairNow': 'จับคู่ตอนนี้', 'okConfirm': 'OK', // OTA升级模块 - 设备检查 - 'otaBleCheckErrorWithError': 'Error checking BLE connection: @error', - 'otaBleNotConnected': 'BLE Device Not Connected', + 'otaBleCheckErrorWithError': + 'เกิดข้อผิดพลาดขณะตรวจสอบการเชื่อมต่อ BLE: @error', + 'otaBleNotConnected': 'อุปกรณ์ BLE ไม่ได้เชื่อมต่อ', 'otaBleNeedConnection': - 'Firmware upgrade requires BLE device connection\nPlease ensure device is properly connected and try again', - 'otaDeviceInfoUnavailableTitle': 'Device Info Unavailable', + 'การอัปเกรดเฟิร์มแวร์ต้องเชื่อมต่ออุปกรณ์ BLE\nโปรดตรวจสอบให้อุปกรณ์เชื่อมต่ออย่างถูกต้องแล้วลองใหม่', + 'otaDeviceInfoUnavailableTitle': 'ข้อมูลอุปกรณ์ไม่พร้อมใช้งาน', 'otaCannotGetDeviceInfo': - 'Cannot get device info\nPlease reconnect device or try again later', - 'otaBleCheckFailed': 'BLE Connection Check Failed', + 'ไม่สามารถรับข้อมูลอุปกรณ์ได้\nโปรดเชื่อมต่ออุปกรณ์ใหม่หรือทดลองอีกครั้งภายหลัง', + 'otaBleCheckFailed': 'ตรวจสอบการเชื่อมต่อ BLE ไม่สำเร็จ', 'otaCannotGetDeviceInfoCheckConnection': - 'Cannot get device info, please check device connection', + 'ไม่สามารถรับข้อมูลอุปกรณ์ได้ โปรดตรวจสอบการเชื่อมต่ออุปกรณ์', 'otaCannotGetProductInfoWithName': - 'Cannot get product info, device name: @deviceName', - 'otaCannotGetBatteryInfo': 'Cannot get valid battery info', - 'otaLowBattery': 'Low Battery', + 'ไม่สามารถรับข้อมูลผลิตภัณฑ์ได้ ชื่ออุปกรณ์: @deviceName', + 'otaCannotGetBatteryInfo': 'ไม่สามารถรับข้อมูลแบตเตอรี่ที่ถูกต้องได้', + 'otaLowBattery': 'แบตเตอรี่ต่ำ', 'otaSingleBatteryLow': - 'Device battery too low for firmware upgrade\nRequirement: battery must be above 20%\nCurrent: @ear @battery%\nPlease charge and try again', + 'แบตเตอรี่ของอุปกรณ์ต่ำเกินไปสำหรับการอัปเกรดเฟิร์มแวร์\nข้อกำหนด: แบตเตอรี่ต้องมากกว่า 20%\nปัจจุบัน: @ear @battery%\nโปรดชาร์จแล้วลองใหม่', 'otaDoubleBatteryLow': - 'Device battery too low for firmware upgrade\nRequirement: both earbuds must be above 20%\nCurrent: Left @left%, Right @right%\nPlease charge and try again', - 'otaBatteryCheckFailed': 'Battery Check Failed', + 'แบตเตอรี่ของอุปกรณ์ต่ำเกินไปสำหรับการอัปเกรดเฟิร์มแวร์\nข้อกำหนด: หูฟังทั้งสองข้างต้องมากกว่า 20%\nปัจจุบัน: ซ้าย @left%, ขวา @right%\nโปรดชาร์จแล้วลองใหม่', + 'otaBatteryCheckFailed': 'ตรวจสอบแบตเตอรี่ไม่สำเร็จ', // OTA升级模块 - 升级状态 'otaDefaultUpdateDesc': - 'This update includes performance optimizations and bug fixes.', - 'otaGetLatestVersionFailed': 'Failed to get latest version info', - 'otaGetVersionInfoFailed': 'Failed to get version info', - 'otaCheckingDeviceStatus': 'Checking device status...', + 'การอัปเดตนี้มีการปรับปรุงประสิทธิภาพและแก้ไขข้อบกพร่อง', + 'otaGetLatestVersionFailed': 'ไม่สามารถรับข้อมูลเวอร์ชันล่าสุดได้', + 'otaGetVersionInfoFailed': 'ไม่สามารถรับข้อมูลเวอร์ชันได้', + 'otaCheckingDeviceStatus': 'กำลังตรวจสอบสถานะอุปกรณ์...', 'otaDownloadFailedCheckNetwork': - 'Download failed, please check network connection', - 'otaDownloadFailed': 'Download Failed', - 'otaPreparingConnection': 'Preparing device connection...', - 'otaConnectingDevice': 'Connecting to device...', - 'otaUpgradeStarted': 'OTA upgrade started...', - 'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%', - 'otaUpgradeSuccessComplete': 'Upgrade completed successfully', - 'otaUpgradeFailedWithCode': 'Upgrade failed, error code: @code', - 'otaUpgradeFailedTitle': 'Upgrade Failed', + 'ดาวน์โหลดไม่สำเร็จ โปรดตรวจสอบการเชื่อมต่อเครือข่าย', + 'otaDownloadFailed': 'ดาวน์โหลดไม่สำเร็จ', + 'otaPreparingConnection': 'กำลังเตรียมการเชื่อมต่ออุปกรณ์...', + 'otaConnectingDevice': 'กำลังเชื่อมต่อกับอุปกรณ์...', + 'otaUpgradeStarted': 'เริ่มอัปเกรด OTA...', + 'otaUpgradeProgressWithPercent': 'ความคืบหน้า: @percent%', + 'otaUpgradeSuccessComplete': 'อัปเกรดเสร็จสมบูรณ์', + 'otaUpgradeFailedWithCode': 'อัปเกรดไม่สำเร็จ รหัสข้อผิดพลาด: @code', + 'otaUpgradeFailedTitle': 'อัปเกรดไม่สำเร็จ', 'otaUpgradeFailedDesc': - 'Please check device connection or update package, error code: @code', - 'otaDeviceDisconnected': 'Device disconnected', - 'otaDeviceConnected': 'Device connected', + 'โปรดตรวจสอบการเชื่อมต่ออุปกรณ์หรือแพ็กเกจอัปเดต รหัสข้อผิดพลาด: @code', + 'otaDeviceDisconnected': 'อุปกรณ์ถูกตัดการเชื่อมต่อ', + 'otaDeviceConnected': 'อุปกรณ์เชื่อมต่อแล้ว', // 音乐模块 "noMusic": "ไม่มีเพลง", // 暂无音乐 diff --git a/lib/core/translations/language/tl_ph.dart b/lib/core/translations/language/tl_ph.dart index f37018bb2..7724334da 100644 --- a/lib/core/translations/language/tl_ph.dart +++ b/lib/core/translations/language/tl_ph.dart @@ -1,3 +1,4 @@ +//菲律宾-塔加路语 const Map tlPH = { // 通用 'continue': 'Magpatuloy', @@ -110,7 +111,7 @@ const Map tlPH = { "welcomeToThisApp": "Maligayang pagdating sa Voitrans, mangyaring basahin nang mabuti", // 欢迎使用Voitrans,请充分阅读 "privacyPolicyText": - ",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 + ", Sa pag-click sa 'Sumang-ayon at Pumasok', ibig sabihin nabasa mo na at sumasang-ayon ka sa mga nakasaad na kasunduan. Sa pag-click sa 'Hindi Sumasang-ayon', isasara ang app.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Hindi Sumasang-ayon", // 不同意 "agreeAndEnter": "Sumang-ayon at Pumasok", // 同意并进入 @@ -654,7 +655,7 @@ const Map tlPH = { // Meeting模块 - 云端同步 'syncToCloud': 'Sync to Cloud', 'syncToCloudTip': - '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', + 'Awtomatikong i-sync ang iyong mga recording sa cloud; maaari mong i-play, i-manage, at i-share ang mga ito sa anumang VOITRANS app o VOITRANS Web (web.voitrans.com).', 'syncToVoitransApp': 'Sync VOITRANS APP', 'transcriptionRecord': 'Record ng transkripsyon', @@ -769,8 +770,8 @@ const Map tlPH = { "translationRecharge": "Pagsasalin ng Recharge", "meetingAssistantRecharge": "Pagsasalin ng Recharge ng Pulong", "cloudSync": "Pagsasalin ng Recharge ng Cloud", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "memberService": "Serbisyo ng Miyembro", + "bindRewardTitle": "Mga gantimpala", "bindRewardSimpleDesc": "Na-issue na ang gantimpala para sa unang pag-bind ng device. I-tap ang OK upang isara.", "joinDevice": "Konektadong device:", @@ -868,30 +869,30 @@ const Map tlPH = { "loadFailedClickRetry": "Nabigo ang pag-load, i-click para subukang muli", "swipeUpForMore": "Mag-swipe pataas para sa higit pa", "callingTool": "Tinutulungan kita, pakihintay!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 + "voice_interrupt": "Ihinto", // 语音打断 '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", // 今日天气 - "presetNews": "Today's news", // 今日新闻 - "presetFood": "Nearby food", // 美食 - "playSomeMusic": "Play some popular music", // 播放一些流行音乐 - "navigationTo": "Pakitulungan akong mag-navigate sa", // 导航到 - "todayWeather": "How's the weather today?", // 今日天气 - "todayNews": "What's the news today?", // 今日新闻 - "nearbyFood": "What delicious food is nearby?", // 美食 + "presetMusic": "Magpatugtog ng musika", // 来点音乐 + "presetNavigation": "Mag-navigate patungo", // 导航 + "presetWeather": "Panahon ngayon", // 今日天气 + "presetNews": "Balita ngayon", // 今日新闻 + "presetFood": "Pagkain malapit dito", // 美食 + "playSomeMusic": "Magpatugtog ng sikat na musika", // 播放一些流行音乐 + "navigationTo": "Mag-navigate patungo", // 导航到 + "todayWeather": "Anong panahon ngayon?", // 今日天气 + "todayNews": "Anong balita ngayon?", // 今日新闻 + "nearbyFood": "Saan may masarap na pagkain malapit dito?", // 附近有什么好吃的 // Agent模块 - 欢迎消息与权限 - 'welcomeMessage': '你好!我是**Lily**,我能帮你:\n\n' - '• 回答问题和提供信息\n\n' - '• 实时语音翻译\n\n' - '• 推荐音乐和播客\n\n' - '• 语音备忘录和提醒\n\n' - '• 控制耳机功能\n\n' - '有什么我可以帮你的吗?', + 'welcomeMessage': 'Kumusta! Ako si **Lily**.\n\n' + '• Sasagot sa mga tanong at magbibigay ng impormasyon\n\n' + '• Real-time na voice translation\n\n' + '• Magrerekomenda ng musika at podcast\n\n' + '• Voice memo at paalala\n\n' + '• Kontrol ang mga function ng headset\n\n' + 'Paano kita matutulungan?', 'microphonePermission': 'Mikropono', 'voiceRecognitionPermissionText': 'Ang pagkilala sa boses ay nangangailangan ng access sa mikropono.', @@ -1232,7 +1233,7 @@ const Map tlPH = { 'meetingStoragePermissionExplanation': 'Kailangan namin ng access sa storage permission para makapili at makapag-upload ka ng mga audio file.', 'meetingStoragePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', + 'Nadetect na permanenteng tinanggihan mo ang permission sa storage. Para magpatuloy, pumunta sa app settings at manu-manong i-enable ang storage permission.', 'getPermissionStatusFailed': 'Nabigong makuha ang katayuan ng pahintulot', 'communicationPermissions': 'Mga Pahintulot sa Komunikasyon', 'bluetoothPermissions': 'Mga pahintulot sa Bluetooth', @@ -1280,7 +1281,8 @@ const Map tlPH = { 'Ang pamamahala ng mga kaganapan sa kalendaryo ay nangangailangan ng buong pahintulot sa kalendaryo', 'locationPermissionDetailDesc': 'Ang pagkuha ng impormasyon sa lokasyon ay nangangailangan ng pahintulot sa lokasyon', - 'contactsPermissionDesc': 'Ginagamit para sa pag-access ng impormasyon sa contacts', + 'contactsPermissionDesc': + 'Ginagamit para sa pag-access ng impormasyon sa contacts', 'contactsPermissionDetailDesc': 'Ang function ng pagtawag at SMS ay nangangailangan ng pahintulot sa contacts para pumili ng contacts', 'bluetoothPermissionDesc': @@ -1333,9 +1335,9 @@ const Map tlPH = { 'storagePermissionExplanation': 'Kailangan namin ang pahintulot sa storage para makapili at makapag-upload ka ng mga audio file.', 'microphonePermissionPermanentDenial': - '检测到您已永久拒绝录音权限。如需继续使用此功能,请前往应用设置中手动开启麦克风权限。', + 'Nadetect na permanenteng tinanggihan mo ang permission sa mikropono. Para magpatuloy, pumunta sa app settings at manu-manong i-enable ang microphone permission.', 'storagePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', + 'Nadetect na permanenteng tinanggihan mo ang permission sa storage. Para magpatuloy, pumunta sa app settings at manu-manong i-enable ang storage permission.', 'permissionUtilNeed': 'Kailangan ', 'permissionUtilPermission': ' pahintulot', 'permissionUtilRestricted': ' ay may restriksyon', @@ -1448,14 +1450,14 @@ const Map tlPH = { 'iKnow': 'Naiintindihan ko', // 我知道了 // 配对模块 - 绑定奖励 - "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:", + "firstBindRewardTitle": "Pembelian Terlebih Dahulu", + "firstBindRewardDesc": "Anda telah menerima premi binding.", + "vipLevelLabel": "Level VIP:", + "expiryLabel": "Petsa ng pag-expire:", + "notActivated": "Belum diaktifkan", + "aiChatCreditsLabel": "Kredit Chat AI:", + "translationCreditsLabel": "Mga Kredito sa Pagsasalin:", + "meetingCreditsLabel": "Kredity meeting:", "ok": "OK", // 用户反馈模块 @@ -1536,13 +1538,13 @@ const Map tlPH = { 'otaBatteryCheckFailed': 'Nabigo ang pag-check ng baterya', // OTA升级模块 - 升级状态 'otaDefaultUpdateDesc': - 'This update includes performance optimizations and bug fixes.', + 'Kasama sa update na ito ang mga pagpapahusay sa performance at pag-aayos ng mga bug.', 'otaGetLatestVersionFailed': 'Nabigong kunin ang pinakabagong impormasyon ng bersyon', 'otaGetVersionInfoFailed': 'Nabigong kunin ang impormasyon ng bersyon', 'otaCheckingDeviceStatus': 'Tinitingnan ang estado ng device...', 'otaDownloadFailedCheckNetwork': - 'Download failed, please check network connection', + 'Nabigo ang pag-download, pakisuri ang koneksyon sa network', 'otaDownloadFailed': 'Nabigo ang pag-download', 'otaPreparingConnection': 'Inihahanda ang koneksyon ng device...', 'otaConnectingDevice': 'Kumokonekta sa device...', @@ -1552,7 +1554,7 @@ const Map tlPH = { 'otaUpgradeFailedWithCode': 'Nabigo ang pag-upgrade, code ng error: @code', 'otaUpgradeFailedTitle': 'Nabigo ang pag-upgrade', 'otaUpgradeFailedDesc': - 'Please check device connection or update package, error code: @code', + 'Pakisuri ang koneksyon ng device o ang update package, code ng error: @code', 'otaDeviceDisconnected': 'Na-disconnect ang device', 'otaDeviceConnected': 'Nakakonekta ang device', diff --git a/lib/core/translations/language/tr_tr.dart b/lib/core/translations/language/tr_tr.dart index 9b8b24cff..8adccf00f 100644 --- a/lib/core/translations/language/tr_tr.dart +++ b/lib/core/translations/language/tr_tr.dart @@ -1,3 +1,4 @@ +//土耳其-土耳其语 const Map trTR = { // 通用 'continue': 'Devam Et', @@ -18,11 +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", + "justNow": "Şimdi", + "minutesAgo": "@minutes dakika önce", + "yesterday": "Dün", + "daysAgo": "@days gün önce", + "hoursAgo": "@hours saat önce", // 启动页 "slogan": "Dünyayla bağlantı kur, sesin ötesinde", @@ -110,7 +111,7 @@ const Map trTR = { "welcomeToThisApp": "Voitrans'a hoş geldiniz, lütfen dikkatlice okuyun", // 欢迎使用Voitrans,请充分阅读 "privacyPolicyText": - ",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 + "“Kabul Et ve Gir”e dokunarak yukarıdaki sözleşmeleri okuduğunuzu ve kabul ettiğinizi onaylamış olursunuz. “Reddet”e dokunursanız uygulamadan çıkılır.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Reddet", // 不同意 "agreeAndEnter": "Kabul Et ve Gir", // 同意并进入 @@ -167,27 +168,27 @@ const Map trTR = { 'checkConnectionStatusFailed': 'Bağlantı durumu kontrol edilemedi', // 蓝牙扫描模块 - 'bleInitFailedWithError': 'Bluetooth initialization failed: @error', + 'bleInitFailedWithError': 'Bluetooth başlatma başarısız: @error', 'needBluetoothAndLocationPermission': - 'Bluetooth and location permissions are required to scan devices', - 'permissionRequestFailedWithError': 'Permission request failed: @error', - 'needPermission': 'Permission Required', + 'Cihazları taramak için Bluetooth ve konum izinleri gereklidir', + 'permissionRequestFailedWithError': 'İzin isteği başarısız: @error', + 'needPermission': 'İzin Gerekli', 'blePermissionDialogContent': - 'This app requires Bluetooth and location permissions to scan devices. Please enable them in Settings.', - 'needEnableBluetooth': 'Enable Bluetooth', + 'Bu uygulama cihazları taramak için Bluetooth ve konum izinlerine ihtiyaç duyar. Lütfen Ayarlar\'dan etkinleştirin.', + 'needEnableBluetooth': 'Bluetooth\'u Etkinleştir', 'enableBluetoothDialogContent': - 'Please enable Bluetooth to scan and connect devices.', - 'bleScanFailedWithError': 'Scan failed: @error', - 'bleConnectionSuccess': 'Connection Successful', - 'bleConnectedToDevice': 'Connected to @device', - 'bleConnectionFailedWithError': 'Connection failed: @error', - 'bleDisconnected': 'Disconnected', - 'bleDeviceDisconnected': 'Device disconnected', - 'bleDisconnectFailedWithError': 'Disconnect failed: @error', - 'signalStrong': 'Strong', - 'signalMedium': 'Medium', - 'signalWeak': 'Weak', - 'signalVeryWeak': 'Very Weak', + 'Cihazları taramak ve bağlanmak için lütfen Bluetooth\'u etkinleştirin.', + 'bleScanFailedWithError': 'Tarama başarısız: @error', + 'bleConnectionSuccess': 'Bağlantı Başarılı', + 'bleConnectedToDevice': '@device cihazına bağlanıldı', + 'bleConnectionFailedWithError': 'Bağlantı başarısız: @error', + 'bleDisconnected': 'Bağlantı kesildi', + 'bleDeviceDisconnected': 'Cihaz bağlantısı kesildi', + 'bleDisconnectFailedWithError': 'Bağlantı kesme başarısız: @error', + 'signalStrong': 'Güçlü', + 'signalMedium': 'Orta', + 'signalWeak': 'Zayıf', + 'signalVeryWeak': 'Çok Zayıf', // 发现页 "searchAi": "Yapay zeka özelliklerini ara...", @@ -215,55 +216,55 @@ const Map trTR = { "scene": "Senaryo", // 用量统计模块 - "aiChat": "AI Chat", - "translationStats": "Translation Statistics", - "meetingStats": "Meeting Statistics", - "today": "Today", - "thisWeek": "This Week", - "thisMonth": "This Month", - "history": "History", - "currentSessionStats": "Current Session Stats", - "translationCount": "Translation Count", - "sessionDuration": "Session Duration", - "characters": "Characters", - "recordingDuration": "Recording Duration", - "totalApiCalls": "Total API Calls", - "sessionCount": "Session Count", - "totalCharacters": "Total Characters", - "apiCallStats": "API Call Stats", - "translationApi": "Translation API", + "aiChat": "AI Sohbet", + "translationStats": "Çeviri İstatistikleri", + "meetingStats": "Toplantı İstatistikleri", + "today": "Bugün", + "thisWeek": "Bu Hafta", + "thisMonth": "Bu Ay", + "history": "Geçmiş", + "currentSessionStats": "Mevcut Oturum İstatistikleri", + "translationCount": "Çeviri Sayısı", + "sessionDuration": "Oturum Süresi", + "characters": "Karakterler", + "recordingDuration": "Kayıt Süresi", + "totalApiCalls": "Toplam API Çağrısı", + "sessionCount": "Oturum Sayısı", + "totalCharacters": "Toplam Karakter", + "apiCallStats": "API Çağrı İstatistikleri", + "translationApi": "Çeviri API", "asr": "ASR", "tts": "TTS", - "dataVolumeStats": "Data Volume Stats", - "sourceTextCharacters": "Source Text Characters", - "ttsTextCharacters": "TTS Text Characters", - "effectiveAudioDuration": "Effective Audio Duration", - "totalSessionDuration": "Total Session Duration", - "costStats": "Cost Stats", - "estimatedCost": "Estimated Cost", - "dailyCostThreshold": "Daily Cost Threshold", - "monthlyCostThreshold": "Monthly Cost Threshold", - "usageBehaviorStats": "Usage Behavior Stats", - "mostUsedLanguagePair": "Most-used language pair", - "mostUsedMode": "Most-used mode", - "asrApiCalls": "ASR Calls", - "totalAudioDuration": "Total Audio Duration", - "audioFileSize": "Audio File Size", - "transcriptBytes": "Transcript Bytes", - "loadFailed": "Load Failed", + "dataVolumeStats": "Veri Hacmi İstatistikleri", + "sourceTextCharacters": "Kaynak Metin Karakterleri", + "ttsTextCharacters": "TTS Metin Karakterleri", + "effectiveAudioDuration": "Etkin Ses Süresi", + "totalSessionDuration": "Toplam Oturum Süresi", + "costStats": "Maliyet İstatistikleri", + "estimatedCost": "Tahmini Maliyet", + "dailyCostThreshold": "Günlük Maliyet Eşiği", + "monthlyCostThreshold": "Aylık Maliyet Eşiği", + "usageBehaviorStats": "Kullanım Davranışı İstatistikleri", + "mostUsedLanguagePair": "En çok kullanılan dil çifti", + "mostUsedMode": "En çok kullanılan mod", + "asrApiCalls": "ASR Çağrıları", + "totalAudioDuration": "Toplam Ses Süresi", + "audioFileSize": "Ses Dosyası Boyutu", + "transcriptBytes": "Transkript Baytları", + "loadFailed": "Yükleme Başarısız", "statsLoadFailedTryLater": - "Statistics failed to load. Please try again later.", - "cleanupComplete": "Cleanup Complete", - "cleanedOldData": "Cleaned data older than 90 days", - "exportFeature": "Export Feature", - "exportInDevelopment": "Data export is under development", + "İstatistikler yüklenemedi. Lütfen daha sonra tekrar deneyin.", + "cleanupComplete": "Temizleme Tamamlandı", + "cleanedOldData": "90 günden eski veriler temizlendi", + "exportFeature": "Dışa Aktarma", + "exportInDevelopment": "Veri dışa aktarma geliştirme aşamasında", // 商品模块 - 通用 - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', + 'availablePackages': 'Mevcut Paketler', + 'remainingQuota': 'Kalan Kota', + 'totalQuota': 'Toplam Kota', + 'remaining': 'Kalan', + 'featureDescription': 'Özellik Açıklaması', 'paymentSuccess': 'Ödeme başarılı', 'paymentFailed': 'Ödeme başarısız', 'gotIt': 'Anladım', @@ -321,51 +322,52 @@ const Map trTR = { 'alipayPaymentLaunchFailed': 'Alipay başlatılamadı', 'cannotLaunchAlipayPayment': 'Alipay başlatılamıyor', 'alipayPaymentException': 'Alipay istisnası', - "insufficientIntegral": "Insufficient integral", + "insufficientIntegral": "Yetersiz puan", "insufficientBalanceDesc": - "Insufficient balance, please go to the corresponding recharge page to recharge.", - "recharge": "Go to Recharge", + "Bakiye yetersiz, lütfen ilgili yükleme sayfasına giderek yükleme yapın.", + "recharge": "Yüklemeye Git", "aiMemberExpiredDesc": - "AI membership expired, please go to the membership recharge page to renew.", + "AI üyeliği süresi doldu, yenilemek için üyelik yükleme sayfasına gidin.", // 商品模块 - AI商品页 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', + 'musicAndRecommendation': 'Müzik ve Öneriler', + 'navigationAndRoutes': 'Navigasyon ve Rotalar', + 'nearbySearch': 'Yakınlarda Arama', + 'newsInformation': 'Haberler', + 'communicationAssistant': 'İletişim Asistanı', 'aiHeaderDesc1': - 'Longer conversation quota, more tool calls, extended context length.', + 'Daha uzun sohbet kotası, daha fazla araç çağrısı, daha uzun bağlam.', 'aiHeaderDesc2': - 'Suitable for agent Q&A, summarization, analysis, and task execution.', - 'musicSearchPlaybackControl': 'Music library search and playback control', + 'Ajan Soru-Cevap, özetleme, analiz ve görev yürütme için uygundur.', + 'musicSearchPlaybackControl': 'Müzik kütüphanesi arama ve oynatma kontrolü', 'smartPlaylistAndSimilarRecommendations': - 'Smart playlist and similar song recommendations', + 'Akıllı çalma listesi ve benzer şarkı önerileri', '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', + 'Rota planlama ve trafik sıkışıklığından kaçınma', + 'voiceBroadcastAndWaypoints': 'Sesli yönlendirme ve ara nokta ayarları', + 'realTimeWeatherForecast': 'Gerçek zamanlı hava durumu ve tahmin', + 'clothingAdviceAndTravelReminders': + 'Kıyafet önerileri ve seyahat hatırlatmaları', + 'poiSearchFoodGasParking': 'POI arama: yemek / benzin / park', + 'ratingsHoursAndDirectRoutes': 'Puanlar, çalışma saatleri ve doğrudan rota', + 'hotNewsAndTopicOverview': 'Popüler haberler ve konu özeti', + 'longArticleSummariesAndKeyPoints': 'Uzun makale özetleri ve önemli noktalar', + 'helpCallAndSMS': 'Aramalar ve SMS için yardım', 'templatedMessagesAndScheduleReminders': - 'Template messages and schedule reminders', + 'Mesaj şablonları ve zamanlanmış hatırlatmalar', 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', + 'Özellikler cihaz izinlerine, hizmet kullanılabilirliğine ve ağ koşullarına bağlıdır.', // 商品模块 - 翻译商品页 - 'realtimeTranscription': 'Real-time Transcription', - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', + 'realtimeTranscription': 'Gerçek Zamanlı Transkripsiyon', + 'sceneLexicon': 'Senaryo Sözlüğü', + 'subtitleDisplay': 'Altyazılar', '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', + 'Düşük gecikmeli ses ile gerçek zamanlı simultane çeviri ve metin çevirisi.', + 'transHeaderDesc2': 'Seyahat, iş, konuşma ve eğitim için uygundur.', + 'translateZhEn': 'Çince-İngilizce çeviri', + 'lowLatencyVoiceBroadcast': 'Düşük gecikmeli sesli yayın', + 'multiLangTextTranslation': 'Çok dilli metin çevirisi', 'termOptimizationContextPreserve': 'Terminology optimization and context preservation', 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', @@ -373,18 +375,18 @@ const Map trTR = { 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', 'colorHighContrast': 'High color contrast', 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', + 'Çeviri performansı mikrofona, ağ gecikmesine ve ortam gürültüsüne bağlıdır.', // 商品模块 - 会议商品页 - 'meetingRecording': 'Meeting Recording', + 'meetingRecording': 'Toplantı Kaydı', 'transcriptionAndSummary': 'Transcription & Summary', 'keywordSearch': 'Keyword Search', 'collaborationSharing': 'Collaboration & Sharing', 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'Toplantı verimliliğini artırmak için ses kaydı, transkripsiyon, anahtar kelime araması ve otomatik özet.', 'meetingHeaderDesc2': 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingAutoRecording': 'Otomatik kayıt ve bölümleme', 'meetingSpeakerTagging': 'Speaker labeling', 'meetingLongAudioTranscription': 'Long audio transcription', 'meetingKeyPointSummary': 'Key point extraction', @@ -393,43 +395,43 @@ const Map trTR = { 'meetingExportSummary': 'Export minutes', 'meetingMultiPlatformShare': 'Share across platforms', 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', + 'Sessiz ortamlarda kullanın; performans mikrofona ve ağa bağlıdır.', // 商品模块 - VIP会员页 - 'benefitsOverview': 'Benefits overview', - 'higherQuota': 'Higher usage quota', - 'lowerUnitPrice': 'Lower unit price', - 'priorityService': 'Priority service', - 'exclusiveSupportChannel': 'Dedicated support channel', - 'fastResponse': 'Fast issue response', - 'eventsAndDiscounts': 'Events and discounts', - 'memberExclusiveEvents': 'Member-exclusive events', - 'longTermDiscountPlan': 'Long-term discount plan', - 'generalPrivileges': 'General privileges', - 'earlyAccessNewFeatures': 'Early access to new features', - 'crossDeviceSync': 'Cross-device sync', + 'benefitsOverview': 'Avantajlara genel bakış', + 'higherQuota': 'Daha yüksek kullanım kotası', + 'lowerUnitPrice': 'Daha düşük birim fiyat', + 'priorityService': 'Öncelikli hizmet', + 'exclusiveSupportChannel': 'Özel destek kanalı', + 'fastResponse': 'Hızlı sorun yanıtı', + 'eventsAndDiscounts': 'Etkinlikler ve indirimler', + 'memberExclusiveEvents': 'Üyelere özel etkinlikler', + 'longTermDiscountPlan': 'Uzun vadeli indirim planı', + 'generalPrivileges': 'Genel ayrıcalıklar', + 'earlyAccessNewFeatures': 'Yeni özelliklere erken erişim', + 'crossDeviceSync': 'Cihazlar arası senkronizasyon', 'vipDisclaimer': - 'Actual benefits depend on the package details and may change with versions.', + 'Gerçek avantajlar paket ayrıntılarına bağlıdır ve sürümlere göre değişebilir.', // 商品模块 - 商品名称与描述 - '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).', + 'ai_001_name': 'AI Temel 100', + 'ai_002_name': 'AI Temel 500', + 'ai_003_name': 'AI Temel 1000', + 'meet_001_name': 'Toplantı Temel 100', + 'meet_002_name': 'Toplantı Temel 500', + 'meet_003_name': 'Toplantı Temel 1000', + 'trans_001_name': 'Çeviri Temel 100', + 'trans_002_name': 'Çeviri Temel 500', + 'trans_003_name': 'Çeviri Temel 1000', + 'ai_001_desc': '100 kullanım içerir. Temel AI özelliklerine erişim sağlar.', + 'ai_002_desc': '500 kullanım içerir. Temel AI özelliklerine erişim sağlar.', + 'ai_003_desc': '1000 kullanım içerir. Temel AI özelliklerine erişim sağlar.', + 'meet_001_desc': '100 toplantı kaydı/transkripsiyonu içerir.', + 'meet_002_desc': '500 toplantı kaydı/transkripsiyonu içerir.', + 'meet_003_desc': '1000 toplantı kaydı/transkripsiyonu içerir.', + 'trans_001_desc': '100 çeviri (ses/metin) içerir.', + 'trans_002_desc': '500 çeviri (ses/metin) içerir.', + 'trans_003_desc': '1000 çeviri (ses/metin) içerir.', // 商品模块 - 页脚 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', @@ -438,40 +440,43 @@ const Map trTR = { // 新手引导 'skip': 'Atla', - 'next': 'Next', - 'sayLilyHint': 'Say "Lily Lily" to the mic', - 'imHere': 'I’m here~', - 'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.', - 'aiReplyCompleted': 'Lily has finished the reply!', - 'aiThinking': 'Lily is thinking…', - 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', - 'confirmInput': 'Confirm Input', - 'guideClickSendPrefix': 'Tap send, ', - 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', - 'guideWeatherInput': 'What’s the weather today?', - 'guideWeatherSend': 'Lily will report the weather in real time', - 'guideWeatherEnd': 'Lily can report weather live—try other commands', + 'next': 'Sonraki', + 'sayLilyHint': 'Mikrofona "Lily Lily" deyin', + 'imHere': 'Buradayım~', + 'guideWelcomeWakeAI': + 'Voitrans\'a hoş geldiniz! Önce AI’nız “Lily”yi uyandırın.', + 'aiReplyCompleted': 'Lily yanıtı tamamladı!', + 'aiThinking': 'Lily düşünüyor…', + 'guideAwakenSuccess': 'Harika! Lily uyandı — yardım isteyin.', + 'confirmInput': 'Girişi Onayla', + 'guideClickSendPrefix': 'Gönder\'e dokunun, ', + 'guideWeatherStart': 'Lily\'ye söyleyin: “Bugün hava nasıl?”', + 'guideWeatherInput': 'Bugün hava nasıl?', + 'guideWeatherSend': 'Lily hava durumunu gerçek zamanlı bildirir', + 'guideWeatherEnd': + 'Lily canlı hava durumu bildirir — diğer komutları deneyin', 'guideMusicStart': 'Tell Lily: “Play some rock music”', 'guideMusicInput': 'Play some rock music', 'guideMusicSend': 'Lily will find music for you', 'guideMusicEnd': 'Lily found music—try other commands', - 'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”', - 'guideNavInput': 'Navigate to Shenzhen Airport', - 'guideNavSend': 'Lily will plan the route', - 'guideNavEnd': 'Navigation set—try other commands', + 'guideNavStart': 'Lily\'e söyleyin: “Shenzhen Havalimanı\'na navigasyon”', + 'guideNavInput': 'Shenzhen Havalimanı\'na navigasyon', + 'guideNavSend': 'Lily rotayı planlayacak', + 'guideNavEnd': 'Navigasyon ayarlandı — diğer komutları deneyin', 'guideMeetingStart': - 'Tell Lily: “Create a meeting reminder for 3pm tomorrow”', - 'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow', - 'guideMeetingSend': 'Lily will create a meeting reminder', - 'guideMeetingEnd': 'Reminder created—try other commands', - 'guidePhoneStart': 'Tell Lily: “Call Mom”', - 'guidePhoneInput': 'Call Mom', - 'guidePhoneSend': 'Lily will make the call', - 'guidePhoneEnd': 'Call placed—try other commands', - 'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”', - 'guideSmsInput': 'Text Dad: I’ll be home for dinner', - 'guideSmsSend': 'Lily will send the message', - 'guideSmsEnd': 'Message sent—voice control is convenient', + 'Lily\'e söyleyin: “Yarın 15:00 için toplantı hatırlatıcısı oluştur”', + 'guideMeetingInput': 'Yarın 15:00 için toplantı hatırlatıcısı oluştur', + 'guideMeetingSend': 'Lily toplantı hatırlatıcısı oluşturacak', + 'guideMeetingEnd': 'Hatırlatıcı oluşturuldu — diğer komutları deneyin', + 'guidePhoneStart': 'Lily\'e söyleyin: “Annemi ara”', + 'guidePhoneInput': 'Annemi ara', + 'guidePhoneSend': 'Lily aramayı yapacak', + 'guidePhoneEnd': 'Arama yapıldı — diğer komutları deneyin', + 'guideSmsStart': + 'Lily\'e söyleyin: “Babaya mesaj gönder: Akşam yemeğine evde olacağım”', + 'guideSmsInput': 'Babaya mesaj: Akşam yemeğine evde olacağım', + 'guideSmsSend': 'Lily mesajı gönderecek', + 'guideSmsEnd': 'Mesaj gönderildi — sesli kontrol çok pratik', // Meeting模块 - 首页与导航 "startMeeting": "Toplantıyı Başlat", @@ -485,37 +490,38 @@ const Map trTR = { 'recordingDetails': 'Kayıt Detayları', 'aiSummary': 'Yapay Zeka Özeti', 'meetingTranscript': 'Toplantı Metni', - 'files': 'Files', - 'mine': 'Mine', - 'connect': 'Connect', - 'allFiles': 'All Files', - 'searchInAllFiles': 'Search in all files', - 'from': 'From', - 'sortBy': 'Sort by', - 'creationTime': 'Creation Time', - 'bluetoothConnection': 'Bluetooth Connection', - 'meetingReconnect': 'Reconnect', - 'searching': 'Searching...', - 'searchFailed': 'Search failed, please check if Bluetooth is enabled', - 'aiPenNotFound': 'AI PEN device not found', - 'connectedToAiPen': 'Connected to AI PEN device', - 'checkingNewFiles': 'Checking for new files to import', - 'startingWifi': 'Starting Wi-Fi...', - 'newFilesDetected': 'New files detected, preparing to import', - 'noNewFiles': 'No new files to import', - 'connectingWifi': 'Connecting to Wi-Fi...', - 'wifiConnected': 'Wi-Fi connected successfully', - 'downloadingFiles': 'Downloading files...', - 'downloadingFileProgress': 'Total {total} files, downloading file {current}', - 'downloadComplete': 'Download complete', + 'files': 'Dosyalar', + 'mine': 'Benim', + 'connect': 'Bağlan', + 'allFiles': 'Tüm Dosyalar', + 'searchInAllFiles': 'Tüm dosyalarda ara', + 'from': 'Kaynak', + 'sortBy': 'Sırala', + 'creationTime': 'Oluşturulma Zamanı', + 'bluetoothConnection': 'Bluetooth Bağlantısı', + 'meetingReconnect': 'Yeniden Bağlan', + 'searching': 'Aranıyor...', + 'searchFailed': 'Arama başarısız, Bluetooth\'un açık olduğundan emin olun', + 'aiPenNotFound': 'AI PEN cihazı bulunamadı', + 'connectedToAiPen': 'AI PEN cihazına bağlandı', + 'checkingNewFiles': 'İçe aktarılacak yeni dosyalar kontrol ediliyor', + 'startingWifi': 'Wi‑Fi başlatılıyor...', + 'newFilesDetected': 'Yeni dosyalar tespit edildi, içe aktarma hazırlanıyor', + 'noNewFiles': 'İçe aktarılacak yeni dosya yok', + 'connectingWifi': 'Wi‑Fi\'ye bağlanılıyor...', + 'wifiConnected': 'Wi‑Fi bağlantısı başarılı', + 'downloadingFiles': 'Dosyalar indiriliyor...', + 'downloadingFileProgress': + 'Toplam {total} dosya, {current}. dosya indiriliyor', + 'downloadComplete': 'İndirme tamamlandı', 'downloadCompleteInfo': - 'Download complete, {count} files in total, returning automatically in 2 seconds', + 'İndirme tamamlandı, toplam {count} dosya, 2 saniye içinde otomatik olarak geri dönülecek', // Meeting模块 - 录音功能 - 'startRecording': 'Start Recording', - 'liveRecording': 'Live Recording', - 'audioVideoRecording': 'Audio/Video Recording', - 'callRecording': 'Call Recording', + 'startRecording': 'Kaydı Başlat', + 'liveRecording': 'Canlı Kayıt', + 'audioVideoRecording': 'Ses/Video Kaydı', + 'callRecording': 'Arama Kaydı', 'importAudio': 'Import Audio', 'meetingRecordExitTitle': 'Kayıttan Çık', // 退出录音 'meetingRecordExitMessage': @@ -539,30 +545,30 @@ const Map trTR = { 'Kayıt sırasında kayıt kayan çubuğunu (zamanlayıcı/duraklat/devam et) göstermek için diğer uygulamaların üzerine çizme iznine ihtiyacımız var.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'overlayPermissionOpenSettingsFailed': 'Sistem ayarları otomatik olarak açılamadı. Lütfen Ayarlar uygulamasını açın ve diğer uygulamaların üzerine çizme iznini manuel olarak etkinleştirin.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'transcribing': 'Transkripsiyon yapılıyor...', + 'summarizing': 'Özetleniyor...', + 'analyzing': 'Analiz ediliyor...', + 'summaryComplete': 'Özet Tamamlandı', + 'generate': 'Oluştur', + 'overview': 'Genel Bakış', + 'transcription': 'Transkripsiyon', + 'summary': 'Özet', + 'mindMap': 'Zihin Haritası', + 'editSpeaker': 'Düzenle', + 'nameSpeaker': 'Konuşmacıyı Adlandır', // Meeting模块 - 转写与总结 - 'reSummarize': 'Re-summarize', - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'reSummarize': 'Yeniden Özetle', + 'dateAndTime': 'Tarih ve Saat', + 'location': 'Konum', + 'attendees': 'Katılımcılar', + 'inputLocation': 'Konum Girin', + 'inputAttendees': 'Katılımcıları Girin', // Meeting模块 - 模版与生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', + 'selectSummaryTemplate': 'Özet Şablonu Seç', + 'useThisTemplate': 'Bu Şablonu Kullan', + 'lastUsed': 'Son Kullanılan', 'create': 'Oluştur', 'templateDetails': 'Şablon Detayları', 'tag': 'Etiket', @@ -579,110 +585,111 @@ const Map trTR = { '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.', + 'viewAll': 'Hepsini Gör', + 'recordingLanguage': 'Kayıt Dili', + 'chineseSimplified': 'Çince Mandarin (Basitleştirilmiş)', + 'meetingGenerateNow': 'Şimdi Oluştur', + 'keyEventsAnalyzed': '{count} önemli olay analiz edildi.', 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + 'AI analizi kayıtlardaki önemli olayları belirler ve AI oluşturma için önemli olayları seçmenizi sağlar.', // 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', + 'importingLocalRecordings': 'Yerel kayıtlar içe aktarılıyor...', + 'importFailed': 'Dosya içe aktarılamadı: {filePath}, hata: {error}', + 'importSuccess': '{count} yerel kayıt başarıyla içe aktarıldı', + 'importError': 'İçe aktarma başarısız: {error}', + 'pleaseSelectAudioFile': 'Lütfen bir ses dosyası seçin', 'shareAudio': 'Share Meeting Audio', 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + 'shareFailed': 'Paylaşım başarısız: {error}', + 'fileProcessingFailed': 'Dosya işleme başarısız: {filePath}, hata: {error}', // Meeting模块 - 思维导图 'saveMindMap': 'Zihin Haritasını Kaydet', - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', + 'shareMindMap': 'Zihin Haritasını Paylaş', + 'shareSuccess': 'Paylaşım Başarılı', // 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', + 'askAI': 'AI\'ya Sor...', + 'askAIPrompt': 'Bugün size nasıl yardımcı olabilirim?', + 'continueAsk': 'Sormaya Devam Et', + 'todoList': 'Yapılacaklar Listesi', + 'extractConclusion': 'Sonuçları Çıkar', + 'generateKeyIndicators': 'Anahtar Göstergeleri Oluştur', // 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...', + 'shareLink': 'Bağlantıyı Paylaş', + 'copyTranscript': 'Transkripti Kopyala', + 'copySummary': 'Özeti Kopyala', + 'exportAudio': 'Sesi Dışa Aktar', + 'exportTranscript': 'Transkripti Dışa Aktar', + 'shareMeetingAudio': 'Toplantı Sesini Paylaş', + 'exportSummary': 'Özeti Dışa Aktar', + 'exportAs': 'Şu formatta dışa aktar', + 'exportingPDF': 'PDF dışa aktarılıyor...', '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', + 'nameCurrentSpeaker': 'Mevcut Konuşmacıyı Adlandır', + 'recentlyUsedNames': 'Son Kullanılan İsimler', + 'applyToCurrentParagraph': 'Mevcut Paragrafa Uygula', + 'totalTime': 'Toplam Süre', 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', + 'Özet konuşmacıları otomatik güncellenecek', // Meeting模块 - 云端同步 - 'syncToCloud': 'Sync to Cloud', + 'syncToCloud': 'Buluta Senkronize Et', 'syncToCloudTip': - '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', + 'Kayıtlarınızı otomatik olarak buluta senkronize edin; herhangi bir VOITRANS uygulaması veya VOITRANS Web (web.voitrans.com) üzerinden kayıtları oynatabilir, yönetebilir ve paylaşabilirsiniz.', + 'syncToVoitransApp': 'VOITRANS Uygulamasını Senkronize Et', + 'transcriptionRecord': 'Transkripsiyon Kaydı', // Meeting模块 - 我的页面 - 'transcriptionRecords': 'Transcription Records', - 'templateCommunity': 'Template Community', - 'comingSoon': 'Coming Soon', - 'integration': 'Integration', + 'transcriptionRecords': 'Transkripsiyon Kayıtları', + 'templateCommunity': 'Şablon Topluluğu', + 'comingSoon': 'Yakında', + 'integration': 'Entegrasyon', 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', - 'enabled': 'Enabled', - 'disabled': 'Disabled', - 'myVoitransDevice': 'My VOITRANS Device', + 'enabled': 'Etkin', + 'disabled': 'Devre Dışı', + 'myVoitransDevice': 'VOITRANS Cihazım', 'helpAndFeedback': 'Help & Feedback', 'aboutVoitrans': 'About VOITRANS', 'meetingDays': 'Days', 'meetingHours': 'Hours', 'voitransAiMember': 'Voitrans AI Member', 'unlockStarterMember': 'Unlock Starter Member', - 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', + 'bindDeviceToActivate': + 'Starter üyeliğini etkinleştirmek için Voitrans cihazını bağlayın', 'unlockNow': 'Unlock Now', // Meeting模块 - 会员与升级 - 'comparison': 'Comparison', - 'detailedInfo': 'Detailed Information', - 'monthlyTranscriptionTime': 'Monthly Transcription Time', - 'unlimited': 'Unlimited', - 'professionalTemplates': 'Professional Templates', - 'limited': 'Limited', - 'fullTemplates': 'Full Templates', - 'professionalTerms': 'Professional Terms', - 'customTemplates': 'Custom Templates', - 'visualMindMap': 'Visual Mind Map', - 'speakerIdentification': 'Speaker Identification', - 'aiVoiceEnhancement': 'AI Voice Enhancement', - 'audioImport': 'Audio Import', - 'multipleExportFormats': 'Multiple Export Formats', - 'professionalSummaryTemplates': 'Professional Summary Templates', + 'comparison': 'Karşılaştırma', + 'detailedInfo': 'Detaylı Bilgi', + 'monthlyTranscriptionTime': 'Aylık Transkripsiyon Süresi', + 'unlimited': 'Sınırsız', + 'professionalTemplates': 'Profesyonel Şablonlar', + 'limited': 'Sınırlı', + 'fullTemplates': 'Tam Şablonlar', + 'professionalTerms': 'Profesyonel Terimler', + 'customTemplates': 'Özel Şablonlar', + 'visualMindMap': 'Görsel Zihin Haritası', + 'speakerIdentification': 'Konuşmacı Tanıma', + 'aiVoiceEnhancement': 'AI Ses İyileştirme', + 'audioImport': 'Ses İçe Aktarma', + 'multipleExportFormats': 'Birden Çok Dışa Aktarma Formatı', + 'professionalSummaryTemplates': 'Profesyonel Özet Şablonları', 'professionalTemplateDesc': 'Professional template design to improve your work efficiency. Customized according to industry needs.', 'customTemplateDesc': 'You can customize summary prompts according to your needs and use them to generate the required summaries.', 'askAiDesc': - 'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.', + 'Kayıtlardan daha derin bilgileri akıllıca çıkarın; veri tabloları, temel tartışma sonuçları, yapılacaklar listeleri, rapor e-postaları ve diğer biçimlendirilmiş içerikleri tek tıkla oluşturun.', 'visualMindMapDesc': 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', 'templateCommunityDesc': @@ -690,31 +697,32 @@ const Map trTR = { 'speakerIdentificationDesc': 'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.', 'privateCloudSyncDesc': - 'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.', + 'Kayıtlarınız ve transkripsiyonlarınız, gizlilik ve güvenliği sağlamak için yükleme ve indirme sırasında tam şifreleme ile özel bulut sunucularında güvenli şekilde saklanır.', '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.', - 'upgradeMembership': 'Upgrade Your Membership', - 'yearlySubscription': 'Yearly Subscription', - 'monthlySubscription': 'Monthly Subscription', - 'proMonthly': 'Pro ¥60/month', + 'Ses kayıtlarınızı, transkripsiyon metinlerinizi ve özetlerinizi ihtiyaçlarınıza uygun çeşitli formatlarda (TXT, PDF, JPEG) dışa aktarın.', + 'upgradeMembership': 'Üyeliğinizi Yükseltin', + 'yearlySubscription': 'Yıllık Abonelik', + 'monthlySubscription': 'Aylık Abonelik', + 'proMonthly': 'Pro ¥60/ay', 'proMonthlyDesc': - '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', - 'sevenDayTrial': '7-day Free Trial', - 'unlimitedMonthly': 'Unlimited ¥120/month', + '7 günlük ücretsiz deneme, ardından ¥800/yıl. Deneme bitmeden istediğiniz zaman iptal edin.', + 'sevenDayTrial': '7 Gün Ücretsiz Deneme', + 'unlimitedMonthly': 'Sınırsız ¥120/ay', 'unlimitedMonthlyDesc': - '7-day free trial, then ¥1600/year. Cancel anytime before trial ends.', - 'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.', + '7 günlük ücretsiz deneme, ardından ¥1600/yıl. Deneme bitmeden istediğiniz zaman iptal edin.', + 'trialNote': + '*7 gün ücretsiz deneme, ardından yıllık ücretlendirme; istediğiniz zaman iptal edebilirsiniz.', 'proPrice': 'Pro ¥120', - 'proMonthlyPrice': '¥120/month', - 'subscribe': 'Subscribe', - 'unlimitedPrice': 'Unlimited ¥198', - 'unlimitedMonthlyPrice': '¥198/month', + 'proMonthlyPrice': '¥120/ay', + 'subscribe': 'Abone Ol', + 'unlimitedPrice': 'Sınırsız ¥198', + 'unlimitedMonthlyPrice': '¥198/ay', 'upgradeNote': - '*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account', + '*Aboneliği yükselttikten sonra, mevcut aboneliğin kalan günleri otomatik olarak hesaplanır ve ödeme hesabınıza iade edilir', 'buyMoreTranscriptionTime': 'Buy More Transcription Time', 'sixThousandMinutes': '6,000 minutes', 'threeThousandMinutes': '3,000 minutes', @@ -726,7 +734,7 @@ const Map trTR = { 'purchase': 'Purchase', // Meeting模块 - 录音语言 - 'recordLanguage': 'Recording Language', + 'recordLanguage': 'Kayıt Dili', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', @@ -754,10 +762,10 @@ const Map trTR = { "translationRecharge": "Çeviri Toplantı Recharge", "meetingAssistantRecharge": "Toplantı Asistanı Recharge", "cloudSync": "Bulut Sincronizasyonu", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "memberService": "Üye Hizmeti", + "bindRewardTitle": "Ödüller", "bindRewardSimpleDesc": - "First bind device reward has been issued. Tap OK to close.", + "İlk cihaz bağlama ödülü verildi. Kapatmak için OK'a dokunun.", "joinDevice": "Bağlı cihaz:", "accountId": "Hesap Kimliği:", "systemSetting": "Sistem Ayarları", @@ -808,19 +816,20 @@ const Map trTR = { "loading": "Yükleniyor...", // 设备管理模块 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", - "deviceTypeSmartEye": "Smart Glasses", + "deviceTypeUnknown": "Bilinmeyen Cihaz", + "deviceTypeClassicBluetoothHeadset": "Klasik Bluetooth Kulaklık", + "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Kulaklık", + "deviceTypeSmartVoiceRecorder": "Akıllı Ses Kaydedici", + "deviceTypeSmartEye": "Akıllı Gözlük", "unbind": "Bağlantıyı Kaldır", - "noDevicesBound": "No devices bound yet", - "pleaseBindDeviceFirst": "Please bind a device first to manage", - "noMacAddress": "No MAC Address", - "licenseCode": "License Code", - "confirmUnbind": "Confirm Unbind", - "confirmUnbindMessage": "Are you sure you want to unbind device \\", - "confirmUnbindAction": "Confirm Unbind", + "noDevicesBound": "Henüz bağlı cihaz yok", + "pleaseBindDeviceFirst": "Yönetmek için önce bir cihaz bağlayın", + "noMacAddress": "MAC Adresi Yok", + "licenseCode": "Lisans Kodu", + "confirmUnbind": "Bağlantıyı Kaldırmayı Onayla", + "confirmUnbindMessage": + "\"{deviceName}\" cihazının bağlantısını kaldırmak istediğinizden emin misiniz?", + "confirmUnbindAction": "Onayla", // Agent模块 - 主界面 "Lily": "Lily", @@ -850,31 +859,31 @@ const Map trTR = { "loadMoreMessages": "Daha fazla mesaj yükle...", "loadFailedClickRetry": "Yüklenemedi, yeniden denemek için tıklayın", "swipeUpForMore": "Daha fazlası için yukarı kaydırın", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 + "callingTool": "Yardım ediyorum, lütfen bekleyin!", // 正在帮您,请稍等! + "voice_interrupt": "Kes", // 语音打断 '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", // 今日天气 - "presetNews": "Today's news", // 今日新闻 - "presetFood": "Nearby food", // 美食 - "playSomeMusic": "Play some popular music", // 播放一些流行音乐 - "navigationTo": "Please help me navigate to", // 导航到 - "todayWeather": "How's the weather today?", // 今日天气 - "todayNews": "What's the news today?", // 今日新闻 - "nearbyFood": "What delicious food is nearby?", // 美食 + "presetMusic": "Biraz müzik çal", // 来点音乐 + "presetNavigation": "Şuraya navigasyon", // 导航 + "presetWeather": "Bugünün havası", // 今日天气 + "presetNews": "Bugünün haberleri", // 今日新闻 + "presetFood": "Yakındaki yemek", // 美食 + "playSomeMusic": "Popüler müzik çal", // 播放一些流行音乐 + "navigationTo": "Lütfen şu adrese navigasyon yapmama yardım et", // 导航到 + "todayWeather": "Bugün hava nasıl?", // 今日天气 + "todayNews": "Bugünün haberleri neler?", // 今日新闻 + "nearbyFood": "Yakında hangi lezzetli yemek var?", // 美食 // Agent模块 - 欢迎消息与权限 - 'welcomeMessage': '你好!我是**Lily**,我能帮你:\n\n' - '• 回答问题和提供信息\n\n' - '• 实时语音翻译\n\n' - '• 推荐音乐和播客\n\n' - '• 语音备忘录和提醒\n\n' - '• 控制耳机功能\n\n' - '有什么我可以帮你的吗?', + 'welcomeMessage': 'Merhaba! Ben **Lily**.\n\n' + '• Soruları cevaplarım ve bilgi veririm\n\n' + '• Gerçek zamanlı sesli çeviri\n\n' + '• Müzik ve podcast öneririm\n\n' + '• Sesli notlar ve hatırlatmalar\n\n' + '• Kulaklık fonksiyonlarını kontrol ederim\n\n' + 'Size nasıl yardımcı olabilirim?', 'microphonePermission': 'Mikrofon', 'voiceRecognitionPermissionText': 'Ses tanıma özelliği mikrofon erişimi gerektirir.', @@ -910,11 +919,11 @@ const Map trTR = { 'generatedByAi': 'Yapay Zeka tarafından oluşturuldu', // Agent模块 - 工具调用 - 'toolCall': 'Tool Call', - 'noResult': 'No Result', - 'noToolCallContentToCopy': 'No tool call content to copy', - 'toolCallDetails': 'Tool Call Details:', - 'toolCallContentCopied': 'Tool call content copied to clipboard', + 'toolCall': 'Araç Çağrısı', + 'noResult': 'Sonuç Yok', + 'noToolCallContentToCopy': 'Kopyalanacak araç çağrısı içeriği yok', + 'toolCallDetails': 'Araç Çağrısı Detayları:', + 'toolCallContentCopied': 'Araç çağrısı içeriği panoya kopyalandı', // Agent模块 - 音乐卡片 'recommendedMusic': 'İşte bazı önerilen müzikler:', @@ -937,27 +946,27 @@ const Map trTR = { "tsransit": "Toplu Taşıma", // Agent模块 - 导航选择 - 'selectNavigationApp': 'Select Navigation App', + 'selectNavigationApp': 'Navigasyon Uygulamasını Seç', 'amapMap': 'Amap', - 'useAmapNavigation': 'Navigate with Amap', + 'useAmapNavigation': 'Amap ile navigasyon', 'baiduMap': 'Baidu Maps', - 'useBaiduNavigation': 'Navigate with Baidu Maps', + 'useBaiduNavigation': 'Baidu Maps ile navigasyon', 'googleMap': 'Google Maps', - 'useGoogleNavigation': 'Navigate with Google Maps', + 'useGoogleNavigation': 'Google Maps ile navigasyon', 'appleMap': 'Apple Maps', - 'useAppleNavigation': 'Navigate with Apple Maps', - 'builtInNavigation': 'Built-in Navigation', - 'useBuiltInNavigation': 'Navigate with built-in map', - 'navigationStartFailed': 'Failed to start navigation', + 'useAppleNavigation': 'Apple Maps ile navigasyon', + 'builtInNavigation': 'Yerleşik Navigasyon', + 'useBuiltInNavigation': 'Yerleşik harita ile navigasyon', + 'navigationStartFailed': 'Navigasyon başlatılamadı', 'cannotPlayMusicListRetryLater': - 'Cannot play music list, please try again later', - 'cannotPlaySong': 'Cannot play song', - 'openMapError': 'Error opening map', - 'pleaseInstallAmapApp': 'Please install the Amap app first', - 'pleaseInstallBaiduMapApp': 'Please install the Baidu Maps app first', - 'appleMapStartFailed': 'Apple Maps failed to start', - 'appleMapUnavailable': 'Apple Maps unavailable', - 'openAppleMapError': 'Error opening Apple Maps', + 'Müzik listesi çalınamıyor, lütfen daha sonra tekrar deneyin', + 'cannotPlaySong': 'Şarkı çalınamıyor', + 'openMapError': 'Harita açılırken hata', + 'pleaseInstallAmapApp': 'Önce Amap uygulamasını yükleyin', + 'pleaseInstallBaiduMapApp': 'Önce Baidu Maps uygulamasını yükleyin', + 'appleMapStartFailed': 'Apple Maps başlatılamadı', + 'appleMapUnavailable': 'Apple Maps kullanılamıyor', + 'openAppleMapError': 'Apple Maps açılırken hata', // Agent模块 - 天气卡片 'weatherQuery': 'Hava durumu sorgulanıyor:', @@ -1012,8 +1021,8 @@ const Map trTR = { "strongWind": "Şiddetli Rüzgar", // 翻译模块 - 中间层 - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", + "pictureTranslation": "Resim Çevirisi", + "textTranslation": "Metin Çevirisi", // 翻译模块 - 主页 "translationHistory": "Çeviri Geçmişi", @@ -1026,29 +1035,28 @@ const Map trTR = { "me": "Me", "counterPart": "Counterpart", "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "Lütfen Bluetooth kulaklığın telefona bağlı olduğundan ve arama durumunda olduğundan emin olun", "autoDetect": "Auto Detect", // 自动检测 // 翻译模块 - 悬浮窗与权限 - 'disableFloatingWindow': 'Disable Floating Window', - 'enableFloatingWindow': 'Enable Floating Window', - 'permissionTip': 'Permission Tip', - 'micPermissionRequiredForRecording': - 'Microphone permission is required for recording', - 'deleteTranslationRecordError': 'Error deleting translation record: @error', + 'disableFloatingWindow': 'Yüzen Pencereyi Devre Dışı Bırak', + 'enableFloatingWindow': 'Yüzen Pencereyi Etkinleştir', + 'permissionTip': 'İzin İpucu', + 'micPermissionRequiredForRecording': 'Kayıt için mikrofon izni gereklidir', + 'deleteTranslationRecordError': 'Çeviri kaydı silinirken hata: @error', // 翻译模块 - 文本翻译 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", + "languageDetectionFailed": "Dil algılama başarısız", + "translationFailed": "Çeviri başarısız", "translating": "Translating", - "translate": "Translate", - "pleaseInputText": "Please input text", + "translate": "Çevir", + "pleaseInputText": "Lütfen metin girin", "inputTextToTranslate": "Lütfen çevrilecek metni girin", "textTooLong": "Text too long, max 5000 characters", // 翻译模块 - 历史记录 "noTranslationHistory": "Henüz geçmiş yok", - "historyRecords": "History Records", + "historyRecords": "Geçmiş Kayıtlar", "clearResults": "Clear Results", "clearHistory": "Geçmişi Temizle", "clearHistoryConfirm": @@ -1061,12 +1069,12 @@ const Map trTR = { // 翻译模块 - 图片翻译 "selectImageSource": "Select Image Source", "imagePreview": "Image Preview", - "translationResult": "Translation Result", + "translationResult": "Çeviri Sonucu", "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", + "translatedImagePreview": "Çevrilmiş Resim Önizlemesi", + "translatedImageLoadFailed": "Çevrilmiş resim yüklenemedi", + "pleaseSelectImage": "Lütfen bir resim seçin", + "imageLoadFailed": "Resim yükleme başarısız", "imageQuality": "Image Quality", "maxSize": "Max Size", "close": "Close", @@ -1075,38 +1083,38 @@ const Map trTR = { "setMaxSize": "Set Max Size", "currentMaxSize": "Current: @pxpx", "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", + "pleaseSelectImageToStart": "Başlamak için lütfen bir resim seçin", "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", + "callingImageTranslateService": "Resim çeviri hizmeti çağrılıyor...", + "savingRecord": "Kayıt kaydediliyor", + "savingTranslationResult": "Çeviri sonucu kaydediliyor...", + "translationCompleted": "Çeviri Tamamlandı", "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", + "processingFailed": "İşleme Başarısız", "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", + "Resim işleme veya çeviri başarısız oldu. Lütfen tekrar deneyin.\nHata: {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", + "emptyTranslationResult": "Resim çeviri API'si boş sonuç döndürdü", "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", + "Resim çevirisi başarısız oldu. Ağ sorunu veya hız sınırı olabilir. Lütfen daha sonra tekrar deneyin", "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", + "Resim çeviri API'sinde hata oluştu. Ağı kontrol edip tekrar deneyin", + "permissionRequired": "İzin Gerekli", + "cameraPermissionRequired": "Fotoğraf çekmek için kamera izni gereklidir", "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", + "Resim seçmek için fotoğraf albümü izni gereklidir", + "translationDetails": "Çeviri Detayları", "originalImage": "Original Image", "sourceLanguage": "Source Language", "targetLanguage": "Target Language", - "translationTime": "Translation Time", + "translationTime": "Çeviri Süresi", "shareInDevelopment": "Sharing feature under development", // 翻译模块 - 录音文件 @@ -1203,18 +1211,18 @@ const Map trTR = { 'Hesap Hizmeti başlatıldı', // AccountService 已初始化 // 权限模块 - 'meetingStoragePermission': 'Storage', + 'meetingStoragePermission': 'Depolama', 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', + 'Ses dosyalarını seçip yükleyebilmeniz için depolama iznine erişmemiz gerekiyor.', 'meetingStoragePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', + 'Depolama iznini kalıcı olarak reddettiğinizi tespit ettik. Bu özelliği kullanmaya devam etmek için lütfen uygulama ayarlarına gidip depolama iznini manuel olarak etkinleştirin.', 'getPermissionStatusFailed': 'İzin durumu alınamadı', 'communicationPermissions': 'İletişim İzinleri', - 'bluetoothPermissions': 'Bluetooth Permissions', - 'notificationPermissions': 'Notification Permissions', - 'storagePermissions': 'Storage Permissions', - 'microphonePermissions': 'Microphone Permissions', - 'alarmPermissions': 'Alarm Permissions', + 'bluetoothPermissions': 'Bluetooth İzinleri', + 'notificationPermissions': 'Bildirim İzinleri', + 'storagePermissions': 'Depolama İzinleri', + 'microphonePermissions': 'Mikrofon İzinleri', + 'alarmPermissions': 'Alarm İzinleri', 'calendarPermissions': 'Takvim İzinleri', 'locationPermissions': 'Konum İzinleri', 'phone': 'Telefon', @@ -1245,7 +1253,7 @@ const Map trTR = { 'phonePermissionDetailDesc': 'Arama özelliği telefon izni gerektirir', 'smsPermissionDetailDesc': 'SMS gönderme özelliği SMS izni gerektirir', 'alarmPermissionDetailDesc': - 'This permission is required to set exact alarms and ensure reminders trigger on time', + 'Bu izin, kesin alarmlar ayarlamak ve hatırlatıcıların zamanında tetiklenmesini sağlamak için gereklidir', 'calendarWritePermissionDetailDesc': 'Takvim etkinliği oluşturma takvime yazma izni gerektirir', 'calendarFullAccessPermissionDetailDesc': @@ -1253,63 +1261,65 @@ const Map trTR = { 'locationPermissionDetailDesc': 'Konum bilgisi alma konum izni gerektirir', 'contactsPermissionDesc': 'Used for accessing contact information', 'contactsPermissionDetailDesc': - 'Phone call and SMS functionality requires contacts permission to select contacts', + 'Arama ve SMS işlevleri, kişileri seçebilmek için kişiler izni gerektirir', 'bluetoothPermissionDesc': - 'Used for connecting and managing Bluetooth devices', + 'Bluetooth cihazlarını bağlamak ve yönetmek için kullanılır', 'bluetoothPermissionDetailDesc': - 'Connecting to Bluetooth headphones and other devices requires Bluetooth permission', - 'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices', + 'Bluetooth kulaklıklar ve diğer cihazlara bağlanmak için Bluetooth izni gerekir', + 'bluetoothScanPermissionDesc': + 'Yakındaki Bluetooth cihazlarını taramak için kullanılır', 'bluetoothScanPermissionDetailDesc': - 'Scanning for nearby Bluetooth devices requires Bluetooth scan permission', - 'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices', + 'Yakındaki Bluetooth cihazlarını taramak için Bluetooth tarama izni gerekir', + 'bluetoothConnectPermissionDesc': + 'Bluetooth cihazlarına bağlanmak için kullanılır', 'bluetoothConnectPermissionDetailDesc': - 'Connecting to Bluetooth devices requires Bluetooth connect permission', + 'Bluetooth cihazlarına bağlanmak için Bluetooth bağlantı izni gerekir', 'notificationPermissionDesc': 'Used for sending notification messages', 'notificationPermissionDetailDesc': - 'App needs notification permission to send you important alerts and messages', + 'Uygulamanın önemli uyarılar ve mesajlar gönderebilmesi için bildirim iznine ihtiyacı var', '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', + 'bluetoothConnect': 'Bluetooth Bağlantısı', 'bluetoothScanExplanation': - 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', + 'Uygulamanın yakındaki Bluetooth cihazlarını taramak için Bluetooth tarama iznine ihtiyacı var.', 'bluetoothConnectExplanation': - 'The app needs Bluetooth connect permission to connect to Bluetooth devices.', + 'Uygulamanın Bluetooth cihazlarına bağlanmak için Bluetooth bağlantı iznine ihtiyacı var.', 'locationForBluetoothExplanation': - 'The app needs location permission to scan Bluetooth devices.', + 'Uygulamanın Bluetooth cihazlarını taramak için konum iznine ihtiyacı var.', 'bluetoothScanPermanentDenial': - 'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.', + 'Bluetooth tarama izni kalıcı olarak reddedildi, lütfen ayarlara gidip manuel olarak etkinleştirin.', 'bluetoothConnectPermanentDenial': - 'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.', + 'Bluetooth bağlantı izni kalıcı olarak reddedildi, lütfen ayarlara gidip manuel olarak etkinleştirin.', 'locationPermanentDenial': - 'Location permission has been permanently denied, please go to settings to enable it manually.', + 'Konum izni kalıcı olarak reddedildi, lütfen ayarlara gidip manuel olarak etkinleştirin.', 'notificationPermission': 'Notification', 'locationPermission': 'Location', 'notificationPermissionExplanation': - 'Notification permission is required to display music playback status.', + 'Müzik çalma durumunu göstermek için bildirim izni gereklidir.', 'locationPermissionExplanation': - 'Location permission is required to get current location.', + 'Mevcut konumu almak için konum izni gereklidir.', 'notificationPermissionPermanentDenial': - 'You have permanently denied notification permission, please go to settings to enable it.', + 'Bildirim iznini kalıcı olarak reddettiniz, lütfen etkinleştirmek için ayarlara gidin.', 'locationPermissionPermanentDenial': - 'You have permanently denied location permission, please go to settings to enable it.', + 'Konum iznini kalıcı olarak reddettiniz, lütfen etkinleştirmek için ayarlara gidin.', 'storagePermission': 'Storage', 'microphonePermissionExplanation': - 'We need microphone permission to record audio content.', + 'Ses içeriğini kaydetmek için mikrofon iznine ihtiyacımız var.', 'storagePermissionExplanation': - 'We need storage permission so you can select and upload audio files.', + 'Ses dosyalarını seçip yükleyebilmeniz için depolama iznine ihtiyacımız var.', 'microphonePermissionPermanentDenial': - '检测到您已永久拒绝录音权限。如需继续使用此功能,请前往应用设置中手动开启麦克风权限。', + 'Mikrofon iznini kalıcı olarak reddettiğinizi tespit ettik. Bu özelliği kullanmaya devam etmek için lütfen uygulama ayarlarına gidip mikrofon iznini manuel olarak etkinleştirin.', 'storagePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', + 'Depolama iznini kalıcı olarak reddettiğinizi tespit ettik. Bu özelliği kullanmaya devam etmek için lütfen uygulama ayarlarına gidip depolama iznini manuel olarak etkinleştirin.', 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', + 'permissionUtilPermission': ' İzin', + 'permissionUtilRestricted': ' İzin Kısıtlandı', 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'Bu özellik mevcut cihazda kullanılamıyor veya kısıtlı. Lütfen cihaz ayarlarını ya da sistem kısıtlamalarını kontrol edin', 'permissionUtilConfirm': 'OK', // 原生前台服务通知(Android) @@ -1398,27 +1408,28 @@ const Map trTR = { 'bleConnectionFailed': 'BLE bağlantısı başarısız', 'deviceAuthorizationFailedCheckCode': 'Cihaz yetkilendirmesi başarısız, lütfen yetkilendirme kodunu kontrol edin', - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + 'bluetoothGuideTitle': + "Bluetooth'u manuel olarak etkinleştirme gerekli", // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'Lütfen şu adımları izleyin:', // 请按照以下步骤操作: 'bluetoothGuideStep1': - 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'Bluetooth\'u etkinleştirin: Ayarlar → Bluetooth → Aç', // 开启蓝牙:设置 → 蓝牙 → 开启 'bluetoothGuideStep2': - 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'Cihazı bağlayın: "Cihazlarım" içinde cihazınızı bulun ve bağlanmak için dokunun', // 连接设备:在"我的设备"中找到您的设备并点击连接 'bluetoothGuideStep3': - 'Return to app to continue pairing process', // 返回应用继续配对流程 + 'Eşleştirme sürecine devam etmek için uygulamaya geri dönün', // 返回应用继续配对流程 'bluetoothGuideTip': - 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': 'I Know', // 我知道了 + 'İpucu: Bluetooth ayarlarına hızlı erişmek için Denetim Merkezi’nde Bluetooth simgesine uzun basabilirsiniz', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + 'iKnow': 'Anladım', // 我知道了 // 配对模块 - 绑定奖励 - "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:", + "firstBindRewardTitle": "Pembelian Terlebih Dahulu", + "firstBindRewardDesc": "Anda telah menerima premi binding.", + "vipLevelLabel": "Level VIP:", + "expiryLabel": "Son kullanma:", + "notActivated": "Belum diaktifkan", + "aiChatCreditsLabel": "Kredit Chat AI:", + "translationCreditsLabel": "Kredity prevajanja:", + "meetingCreditsLabel": "Toplantı kredileri:", "ok": "OK", // 用户反馈模块 @@ -1450,13 +1461,14 @@ const Map trTR = { "connectionFailed": "Bağlantı Başarısız", "retryConnection": "Yeniden Dene", "ota_updateNow": "Şimdi Güncelle", - "otaVersionInfoFailed": "Failed to get version info. Please try again later.", + "otaVersionInfoFailed": + "Sürüm bilgisi alınamadı. Lütfen daha sonra tekrar deneyin.", "otaDeviceInfoUnavailable": - "Unable to get device info. Please check the connection and retry.", + "Cihaz bilgisi alınamıyor. Bağlantıyı kontrol edip tekrar deneyin.", "otaProductInfoUnavailable": - "Unable to identify the device. Please reconnect and retry.", + "Cihaz tanımlanamıyor. Lütfen yeniden bağlanıp tekrar deneyin.", "otaFirmwareVersionInvalid": - "Firmware version is abnormal. Please reconnect and retry.", + "Donanım yazılımı sürümü anormal. Lütfen yeniden bağlanıp tekrar deneyin.", "keepConnectedDontClose": "Lütfen cihazı bağlı tutun ve uygulamayı kapatmayın", "doNotDisconnect": "Bağlantıyı kesmeyin", @@ -1469,52 +1481,50 @@ const Map trTR = { 'otaNewVersionFoundWithVersion': 'New version @version found', 'otaConfirmUpdateNow': 'Update now?', 'otaUpdate': 'Update', - 'otaUpgradeSuccess': 'Upgrade Successful', + 'otaUpgradeSuccess': 'Yükseltme Başarılı', 'otaUpgradeCompleteRepair': - 'Firmware upgrade complete!\n\nDevice needs to be re-paired to work properly. Go to pairing page now?', + 'Donanım yazılımı yükseltmesi tamamlandı!\n\nCihazın düzgün çalışması için yeniden eşleştirilmesi gerekir. Şimdi eşleştirme sayfasına gidilsin mi?', 'otaPairLater': 'Pair Later', 'otaPairNow': 'Pair Now', 'okConfirm': 'OK', // OTA升级模块 - 设备检查 - 'otaBleCheckErrorWithError': 'Error checking BLE connection: @error', - 'otaBleNotConnected': 'BLE Device Not Connected', + 'otaBleCheckErrorWithError': 'BLE bağlantısı kontrol edilirken hata: @error', + 'otaBleNotConnected': 'BLE Cihazı Bağlı Değil', 'otaBleNeedConnection': - 'Firmware upgrade requires BLE device connection\nPlease ensure device is properly connected and try again', - 'otaDeviceInfoUnavailableTitle': 'Device Info Unavailable', + 'Donanım yazılımı yükseltmesi için BLE cihaz bağlantısı gerekir\nLütfen cihazın doğru şekilde bağlı olduğundan emin olun ve tekrar deneyin', + 'otaDeviceInfoUnavailableTitle': 'Cihaz Bilgisi Kullanılamıyor', 'otaCannotGetDeviceInfo': - 'Cannot get device info\nPlease reconnect device or try again later', - 'otaBleCheckFailed': 'BLE Connection Check Failed', + 'Cihaz bilgisi alınamıyor\nLütfen cihazı yeniden bağlayın veya daha sonra tekrar deneyin', + 'otaBleCheckFailed': 'BLE Bağlantısı Kontrolü Başarısız', 'otaCannotGetDeviceInfoCheckConnection': - 'Cannot get device info, please check device connection', + 'Cihaz bilgisi alınamıyor, lütfen cihaz bağlantısını kontrol edin', 'otaCannotGetProductInfoWithName': - 'Cannot get product info, device name: @deviceName', + 'Ürün bilgisi alınamıyor, cihaz adı: @deviceName', 'otaCannotGetBatteryInfo': 'Cannot get valid battery info', 'otaLowBattery': 'Low Battery', 'otaSingleBatteryLow': - 'Device battery too low for firmware upgrade\nRequirement: battery must be above 20%\nCurrent: @ear @battery%\nPlease charge and try again', + 'Cihaz pili donanım yazılımı yükseltmesi için çok düşük\nGereksinim: pil %20 üzerinde olmalı\nMevcut: @ear @battery%\nLütfen şarj edin ve tekrar deneyin', 'otaDoubleBatteryLow': - 'Device battery too low for firmware upgrade\nRequirement: both earbuds must be above 20%\nCurrent: Left @left%, Right @right%\nPlease charge and try again', - 'otaBatteryCheckFailed': 'Battery Check Failed', + 'Cihaz pili donanım yazılımı yükseltmesi için çok düşük\nGereksinim: her iki kulaklık da %20 üzerinde olmalı\nMevcut: Sol @left%, Sağ @right%\nLütfen şarj edin ve tekrar deneyin', + 'otaBatteryCheckFailed': 'Pil Kontrolü Başarısız', // OTA升级模块 - 升级状态 'otaDefaultUpdateDesc': 'This update includes performance optimizations and bug fixes.', - 'otaGetLatestVersionFailed': 'Failed to get latest version info', - 'otaGetVersionInfoFailed': 'Failed to get version info', - 'otaCheckingDeviceStatus': 'Checking device status...', + 'otaGetLatestVersionFailed': 'En son sürüm bilgisi alınamadı', + 'otaGetVersionInfoFailed': 'Sürüm bilgisi alınamadı', + 'otaCheckingDeviceStatus': 'Cihaz durumu kontrol ediliyor...', 'otaDownloadFailedCheckNetwork': - 'Download failed, please check network connection', - 'otaDownloadFailed': 'Download Failed', - 'otaPreparingConnection': 'Preparing device connection...', - 'otaConnectingDevice': 'Connecting to device...', - 'otaUpgradeStarted': 'OTA upgrade started...', - 'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%', - 'otaUpgradeSuccessComplete': 'Upgrade completed successfully', - 'otaUpgradeFailedWithCode': 'Upgrade failed, error code: @code', - 'otaUpgradeFailedTitle': 'Upgrade Failed', + 'İndirme başarısız, lütfen ağ bağlantısını kontrol edin', + 'otaDownloadFailed': 'İndirme Başarısız', + 'otaPreparingConnection': 'Cihaz bağlantısı hazırlanıyor...', + 'otaConnectingDevice': 'Cihaza bağlanılıyor...', + 'otaUpgradeSuccessComplete': 'Yükseltme başarıyla tamamlandı', + 'otaUpgradeFailedWithCode': 'Yükseltme başarısız, hata kodu: @code', + 'otaUpgradeFailedTitle': 'Yükseltme Başarısız', 'otaUpgradeFailedDesc': - 'Please check device connection or update package, error code: @code', - 'otaDeviceDisconnected': 'Device disconnected', - 'otaDeviceConnected': 'Device connected', + 'Lütfen cihaz bağlantısını veya güncelleme paketini kontrol edin, hata kodu: @code', + 'otaDeviceDisconnected': 'Cihaz bağlantısı kesildi', + 'otaDeviceConnected': 'Cihaz bağlandı', // 音乐模块 "noMusic": "Müzik Yok", // 暂无音乐 diff --git a/lib/core/translations/language/uk_ua.dart b/lib/core/translations/language/uk_ua.dart index c68d436c5..3821969ea 100644 --- a/lib/core/translations/language/uk_ua.dart +++ b/lib/core/translations/language/uk_ua.dart @@ -1,3 +1,4 @@ +// 乌克兰-乌克兰语 const Map ukUA = { // 通用 'continue': 'Продовжити', @@ -110,7 +111,7 @@ const Map ukUA = { "welcomeToThisApp": "Ласкаво просимо до Voitrans, будь ласка, уважно прочитайте", // 欢迎使用Voitrans,请充分阅读 "privacyPolicyText": - ",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 + "Натискаючи «Погодитися та увійти», ви підтверджуєте, що прочитали та погоджуєтесь із наведеними вище документами. Натисніть «Не погоджуватися», щоб вийти із застосунку.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Не погоджуватися", // 不同意 "agreeAndEnter": "Погодитися та увійти", // 同意并进入 @@ -261,11 +262,11 @@ const Map ukUA = { "exportInDevelopment": "Експорт даних у розробці", // 商品模块 - 通用 - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', + 'availablePackages': 'Доступні пакети', + 'remainingQuota': 'Залишок квоти', + 'totalQuota': 'Загальна квота', + 'remaining': 'Залишилось', + 'featureDescription': 'Опис функцій', 'paymentSuccess': 'Оплата пройшла успішно', 'paymentFailed': 'Оплата не вдалася', 'gotIt': 'Зрозуміло', @@ -324,115 +325,120 @@ const Map ukUA = { 'alipayPaymentLaunchFailed': 'Не вдалося запустити Alipay', 'cannotLaunchAlipayPayment': 'Неможливо запустити Alipay', 'alipayPaymentException': 'Помилка Alipay', - "insufficientIntegral": "Insufficient integral", + "insufficientIntegral": "Недостатньо балів", "insufficientBalanceDesc": - "Insufficient balance, please go to the corresponding recharge page to recharge.", - "recharge": "Go to Recharge", + "Недостатньо коштів, перейдіть на відповідну сторінку поповнення.", + "recharge": "Перейти до поповнення", "aiMemberExpiredDesc": - "AI membership expired, please go to the membership recharge page to renew.", + "Підписка AI закінчилася, перейдіть на сторінку продовження, щоб поновити її.", // 商品模块 - AI商品页 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', + 'musicAndRecommendation': 'Музика та рекомендації', + 'navigationAndRoutes': 'Навігація та маршрути', + 'nearbySearch': 'Пошук поруч', + 'newsInformation': 'Новини', + 'communicationAssistant': 'Комунікаційний асистент', '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', + 'Підходить для запитань до агента, підсумовування, аналізу та виконання завдань.', + 'musicSearchPlaybackControl': + 'Пошук у бібліотеці музики та керування відтворенням', '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', + 'Планування маршруту та уникнення заторів', + 'voiceBroadcastAndWaypoints': + 'Голосові підказки та налаштування точок маршруту', + 'realTimeWeatherForecast': 'Погода та прогноз у реальному часі', + 'clothingAdviceAndTravelReminders': + 'Поради щодо одягу та нагадування в дорозі', + 'poiSearchFoodGasParking': 'Пошук POI: їжа / заправки / паркування', + 'ratingsHoursAndDirectRoutes': + 'Рейтинги, години роботи та прокладання маршруту', + 'hotNewsAndTopicOverview': 'Гарячі новини та огляд тем', + 'longArticleSummariesAndKeyPoints': + 'Підсумки довгих статей і ключові моменти', + 'helpCallAndSMS': 'Допомога зі дзвінками та SMS', 'templatedMessagesAndScheduleReminders': - 'Template messages and schedule reminders', + 'Шаблонні повідомлення та заплановані нагадування', 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', + 'Функції залежать від дозволів пристрою, доступності сервісу та умов мережі.', // 商品模块 - 翻译商品页 - 'realtimeTranscription': 'Real-time Transcription', - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', + 'realtimeTranscription': 'Транскрипція в реальному часі', + 'sceneLexicon': 'Глосарій за сценаріями', + 'subtitleDisplay': 'Субтитри', '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', + 'Синхронний переклад у реальному часі та текстовий переклад із низькою затримкою голосу.', + 'transHeaderDesc2': 'Підходить для подорожей, роботи, виступів і навчання.', + 'translateZhEn': 'Переклад китайська–англійська', + 'lowLatencyVoiceBroadcast': 'Голосове озвучення з низькою затримкою', + 'multiLangTextTranslation': 'Багатомовний текстовий переклад', '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', + 'Оптимізація термінології та збереження контексту', + 'lexiconTourBusinessLife': 'Словники: подорожі/бізнес/побут', + 'personalVocabularyMemory': 'Персональна пам’ять словника', + 'conversationSubtitleLargeText': 'Субтитри розмови / режим великого тексту', + 'colorHighContrast': 'Високий контраст кольорів', 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', + 'Якість перекладу залежить від мікрофона, затримки мережі та фонового шуму.', // 商品模块 - 会议商品页 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', + 'meetingRecording': 'Запис зустрічей', + 'transcriptionAndSummary': 'Транскрипція та підсумок', + 'keywordSearch': 'Пошук за ключовими словами', + 'collaborationSharing': 'Співпраця та поширення', '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', + 'Підходить для ділових зустрічей, конспектів занять і протоколів інтерв’ю.', + 'meetingAutoRecording': 'Автозапис і сегментація', + 'meetingSpeakerTagging': 'Позначення спікерів', + 'meetingLongAudioTranscription': 'Транскрипція довгих аудіо', + 'meetingKeyPointSummary': 'Виділення ключових пунктів', + 'meetingTopicNameSearch': 'Пошук за темою/іменем', + 'meetingTimelineJump': 'Перехід по таймлайну', + 'meetingExportSummary': 'Експорт протоколу', + 'meetingMultiPlatformShare': 'Поширення між платформами', 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', + 'Використовуйте в тихих умовах; якість залежить від мікрофона та мережі.', // 商品模块 - VIP会员页 - 'benefitsOverview': 'Benefits overview', - 'higherQuota': 'Higher usage quota', - 'lowerUnitPrice': 'Lower unit price', - 'priorityService': 'Priority service', - 'exclusiveSupportChannel': 'Dedicated support channel', - 'fastResponse': 'Fast issue response', - 'eventsAndDiscounts': 'Events and discounts', - 'memberExclusiveEvents': 'Member-exclusive events', - 'longTermDiscountPlan': 'Long-term discount plan', - 'generalPrivileges': 'General privileges', - 'earlyAccessNewFeatures': 'Early access to new features', - 'crossDeviceSync': 'Cross-device sync', + 'benefitsOverview': 'Огляд переваг', + 'higherQuota': 'Більша квота використання', + 'lowerUnitPrice': 'Нижча ціна за одиницю', + 'priorityService': 'Пріоритетний сервіс', + 'exclusiveSupportChannel': 'Окремий канал підтримки', + 'fastResponse': 'Швидка реакція на проблеми', + 'eventsAndDiscounts': 'Події та знижки', + 'memberExclusiveEvents': 'Події лише для учасників', + 'longTermDiscountPlan': 'Довгостроковий план зі знижкою', + 'generalPrivileges': 'Загальні привілеї', + 'earlyAccessNewFeatures': 'Ранній доступ до нових функцій', + 'crossDeviceSync': 'Синхронізація між пристроями', 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', // 商品模块 - 商品名称与描述 - '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).', + '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': 'App: VoiTrans · Provided by: VoiTrans', @@ -441,40 +447,42 @@ const Map ukUA = { // 新手引导 'skip': 'Пропустити', - 'next': 'Next', - 'sayLilyHint': 'Say "Lily Lily" to the mic', - 'imHere': 'I’m here~', - 'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.', - 'aiReplyCompleted': 'Lily has finished the reply!', - 'aiThinking': 'Lily is thinking…', - 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', - 'confirmInput': 'Confirm Input', - 'guideClickSendPrefix': 'Tap send, ', - 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', - 'guideWeatherInput': 'What’s the weather today?', - 'guideWeatherSend': 'Lily will report the weather in real time', - 'guideWeatherEnd': 'Lily can report weather live—try other commands', - 'guideMusicStart': 'Tell Lily: “Play some rock music”', - 'guideMusicInput': 'Play some rock music', - 'guideMusicSend': 'Lily will find music for you', - 'guideMusicEnd': 'Lily found music—try other commands', - 'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”', - 'guideNavInput': 'Navigate to Shenzhen Airport', - 'guideNavSend': 'Lily will plan the route', - 'guideNavEnd': 'Navigation set—try other commands', + 'next': 'Далі', + 'sayLilyHint': 'Скажіть "Lily Lily" у мікрофон', + 'imHere': 'Я тут~', + 'guideWelcomeWakeAI': + 'Ласкаво просимо до Voitrans! Спочатку розбудіть свій AI “Lily”.', + 'aiReplyCompleted': 'Lily завершила відповідь!', + 'aiThinking': 'Lily думає…', + 'guideAwakenSuccess': 'Чудово! Lily прокинулася — попросіть її допомогти.', + 'confirmInput': 'Підтвердити введення', + 'guideClickSendPrefix': 'Натисніть «Надіслати», ', + 'guideWeatherStart': 'Скажіть Lily: “Яка сьогодні погода?”', + 'guideWeatherInput': 'Яка сьогодні погода?', + 'guideWeatherSend': 'Lily повідомить погоду в реальному часі', + 'guideWeatherEnd': + 'Lily може повідомляти погоду наживо — спробуйте інші команди', + 'guideMusicStart': 'Скажіть Lily: “Увімкни рок-музику”', + 'guideMusicInput': 'Увімкни рок-музику', + 'guideMusicSend': 'Lily знайде музику для вас', + 'guideMusicEnd': 'Lily знайшла музику — спробуйте інші команди', + 'guideNavStart': 'Скажіть Lily: “Проклади маршрут до аеропорту Шеньчжень”', + 'guideNavInput': 'Проклади маршрут до аеропорту Шеньчжень', + 'guideNavSend': 'Lily спланує маршрут', + 'guideNavEnd': 'Навігацію встановлено — спробуйте інші команди', 'guideMeetingStart': - 'Tell Lily: “Create a meeting reminder for 3pm tomorrow”', - 'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow', - 'guideMeetingSend': 'Lily will create a meeting reminder', - 'guideMeetingEnd': 'Reminder created—try other commands', - 'guidePhoneStart': 'Tell Lily: “Call Mom”', - 'guidePhoneInput': 'Call Mom', - 'guidePhoneSend': 'Lily will make the call', - 'guidePhoneEnd': 'Call placed—try other commands', - 'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”', - 'guideSmsInput': 'Text Dad: I’ll be home for dinner', - 'guideSmsSend': 'Lily will send the message', - 'guideSmsEnd': 'Message sent—voice control is convenient', + 'Скажіть Lily: “Створи нагадування про зустріч на 15:00 завтра”', + 'guideMeetingInput': 'Створи нагадування про зустріч на 15:00 завтра', + 'guideMeetingSend': 'Lily створить нагадування', + 'guideMeetingEnd': 'Нагадування створено — спробуйте інші команди', + 'guidePhoneStart': 'Скажіть Lily: “Подзвони мамі”', + 'guidePhoneInput': 'Подзвони мамі', + 'guidePhoneSend': 'Lily здійснить дзвінок', + 'guidePhoneEnd': 'Дзвінок здійснено — спробуйте інші команди', + 'guideSmsStart': 'Скажіть Lily: “Напиши татові: Я буду вдома на вечерю”', + 'guideSmsInput': 'Напиши татові: Я буду вдома на вечерю', + 'guideSmsSend': 'Lily надішле повідомлення', + 'guideSmsEnd': 'Повідомлення надіслано — керування голосом дуже зручне', // Meeting模块 - 首页与导航 "startMeeting": "Почати зустріч", @@ -488,38 +496,39 @@ const Map ukUA = { 'recordingDetails': 'Деталі запису', 'aiSummary': 'Підсумок від AI', 'meetingTranscript': 'Транскрипт зустрічі', - 'files': 'Files', - 'mine': 'Mine', - 'connect': 'Connect', - 'allFiles': 'All Files', - 'searchInAllFiles': 'Search in all files', - 'from': 'From', - 'sortBy': 'Sort by', - 'creationTime': 'Creation Time', - 'bluetoothConnection': 'Bluetooth Connection', - 'meetingReconnect': 'Reconnect', - 'searching': 'Searching...', - 'searchFailed': 'Search failed, please check if Bluetooth is enabled', - 'aiPenNotFound': 'AI PEN device not found', - 'connectedToAiPen': 'Connected to AI PEN device', - 'checkingNewFiles': 'Checking for new files to import', - 'startingWifi': 'Starting Wi-Fi...', - 'newFilesDetected': 'New files detected, preparing to import', - 'noNewFiles': 'No new files to import', - 'connectingWifi': 'Connecting to Wi-Fi...', - 'wifiConnected': 'Wi-Fi connected successfully', - 'downloadingFiles': 'Downloading files...', - 'downloadingFileProgress': 'Total {total} files, downloading file {current}', - 'downloadComplete': 'Download complete', + 'files': 'Файли', + 'mine': 'Мої', + 'connect': 'Підключити', + 'allFiles': 'Усі файли', + 'searchInAllFiles': 'Шукати в усіх файлах', + 'from': 'Від', + 'sortBy': 'Сортувати за', + 'creationTime': 'Час створення', + 'bluetoothConnection': 'Підключення Bluetooth', + 'meetingReconnect': 'Підключитися знову', + 'searching': 'Пошук...', + 'searchFailed': 'Пошук не вдався, перевірте, чи ввімкнено Bluetooth', + 'aiPenNotFound': 'Пристрій AI PEN не знайдено', + 'connectedToAiPen': 'Підключено до пристрою AI PEN', + 'checkingNewFiles': 'Перевірка нових файлів для імпорту', + 'startingWifi': 'Запуск Wi‑Fi...', + 'newFilesDetected': 'Виявлено нові файли, підготовка до імпорту', + 'noNewFiles': 'Немає нових файлів для імпорту', + 'connectingWifi': 'Підключення до Wi‑Fi...', + 'wifiConnected': 'Wi‑Fi успішно підключено', + 'downloadingFiles': 'Завантаження файлів...', + 'downloadingFileProgress': + 'Усього {total} файлів, завантажується файл {current}', + 'downloadComplete': 'Завантаження завершено', 'downloadCompleteInfo': - 'Download complete, {count} files in total, returning automatically in 2 seconds', + 'Завантаження завершено, усього {count} файлів, автоматичне повернення через 2 секунди', // Meeting模块 - 录音功能 - 'startRecording': 'Start Recording', - 'liveRecording': 'Live Recording', - 'audioVideoRecording': 'Audio/Video Recording', - 'callRecording': 'Call Recording', - 'importAudio': 'Import Audio', + 'startRecording': 'Почати запис', + 'liveRecording': 'Запис наживо', + 'audioVideoRecording': 'Запис аудіо/відео', + 'callRecording': 'Запис дзвінка', + 'importAudio': 'Імпортувати аудіо', 'meetingRecordExitTitle': 'Вийти із запису', // 退出录音 'meetingRecordExitMessage': 'Будь ласка, виберіть дію після виходу', // 请选择离开后的操作 @@ -543,30 +552,30 @@ const Map ukUA = { 'Щоб під час запису показувати плаваючу панель запису (таймер/пауза/продовжити), нам потрібен дозвіл на відображення поверх інших програм.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'overlayPermissionOpenSettingsFailed': 'Не вдалося автоматично відкрити системні налаштування. Відкрийте Налаштування та вручну увімкніть дозвіл на відображення поверх інших програм.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'transcribing': 'Транскрибування...', + 'summarizing': 'Підсумовування...', + 'analyzing': 'Аналіз...', + 'summaryComplete': 'Підсумок готовий', + 'generate': 'Згенерувати', + 'overview': 'Огляд', + 'transcription': 'Транскрипція', + 'summary': 'Підсумок', + 'mindMap': 'Інтелект‑карта', + 'editSpeaker': 'Редагувати', + 'nameSpeaker': 'Назвати мовця', // Meeting模块 - 转写与总结 - 'reSummarize': 'Re-summarize', - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'reSummarize': 'Перестворити підсумок', + 'dateAndTime': 'Дата й час', + 'location': 'Місце', + 'attendees': 'Учасники', + 'inputLocation': 'Введіть місце', + 'inputAttendees': 'Введіть учасників', // Meeting模块 - 模版与生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', + 'selectSummaryTemplate': 'Виберіть шаблон підсумку', + 'useThisTemplate': 'Використати цей шаблон', + 'lastUsed': 'Останній використаний', 'create': 'Створити', 'templateDetails': 'Деталі шаблону', 'tag': 'Тег', @@ -583,160 +592,163 @@ const Map ukUA = { 'inputDescHint': 'Будь ласка, введіть опис', 'custom': 'Користувацький', 'pleaseEnter': 'Будь ласка, введіть', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'viewAll': 'Переглянути все', + 'recordingLanguage': 'Мова запису', + 'chineseSimplified': 'Китайська (мандарин, спрощена)', + 'meetingGenerateNow': 'Згенерувати зараз', + 'keyEventsAnalyzed': 'Проаналізовано ключових подій: {count}.', 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + '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}', + 'importing': 'Імпортування...', + 'batchImporting': 'Пакетне імпортування...', + 'importingLocalRecordings': 'Імпортування локальних записів...', + 'importFailed': 'Не вдалося імпортувати файл: {filePath}, помилка: {error}', + 'importSuccess': 'Успішно імпортовано {count} локальних записів', + 'importError': 'Імпорт не вдався: {error}', + 'pleaseSelectAudioFile': 'Будь ласка, виберіть аудіофайл', + 'shareAudio': 'Поділитися аудіо зустрічі', + 'shareComplete': 'Поширення завершено!', + 'shareFailed': 'Не вдалося поділитися: {error}', + 'fileProcessingFailed': + 'Не вдалося обробити файл: {filePath}, помилка: {error}', // Meeting模块 - 思维导图 'saveMindMap': 'Зберегти інтелект-карту', - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', + 'shareMindMap': 'Поділитися інтелект‑картою', + 'shareSuccess': 'Успішно поширено', // 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', + 'askAI': 'Запитати AI...', + 'askAIPrompt': 'Чим я можу допомогти сьогодні?', + 'continueAsk': 'Продовжити запит', + 'todoList': 'Список справ', + 'extractConclusion': 'Витягти висновки', + 'generateKeyIndicators': 'Згенерувати ключові показники', // 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...', + 'shareLink': 'Поділитися посиланням', + 'copyTranscript': 'Копіювати транскрипт', + 'copySummary': 'Копіювати підсумок', + 'exportAudio': 'Експортувати аудіо', + 'exportTranscript': 'Експортувати транскрипт', + 'shareMeetingAudio': 'Поділитися аудіо зустрічі', + 'exportSummary': 'Експортувати підсумок', + 'exportAs': 'Експортувати як', + 'exportingPDF': 'Експорт PDF...', 'export': 'Експорт', // Meeting模块 - 发言者 'applyToAllParagraphs': 'Застосувати до всіх абзаців цього мовця', 'summaryWillBeUpdatedAutomatically': 'Підсумок буде автоматично оновлюватися на основі шаблону', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', + 'nameCurrentSpeaker': 'Назвати поточного мовця', + 'recentlyUsedNames': 'Нещодавно використані імена', + 'applyToCurrentParagraph': 'Застосувати до поточного абзацу', + 'totalTime': 'Загальний час', 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', + 'Мовці в підсумку будуть оновлюватися автоматично', // Meeting模块 - 云端同步 - 'syncToCloud': 'Sync to Cloud', + 'syncToCloud': 'Синхронізувати з хмарою', 'syncToCloudTip': - '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', + 'Автоматично синхронізуйте свої записи з хмарою; ви можете відтворювати, керувати та ділитися ними через VOITRANS APP або VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Синхронізувати VOITRANS APP', + 'transcriptionRecord': 'Запис транскрипції', // Meeting模块 - 我的页面 - 'transcriptionRecords': 'Transcription Records', - 'templateCommunity': 'Template Community', - 'comingSoon': 'Coming Soon', - 'integration': 'Integration', + 'transcriptionRecords': 'Записи транскрипції', + 'templateCommunity': 'Спільнота шаблонів', + 'comingSoon': 'Незабаром', + 'integration': 'Інтеграція', 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', - 'enabled': 'Enabled', - 'disabled': 'Disabled', - 'myVoitransDevice': 'My VOITRANS Device', - 'helpAndFeedback': 'Help & Feedback', - 'aboutVoitrans': 'About VOITRANS', - 'meetingDays': 'Days', - 'meetingHours': 'Hours', - 'voitransAiMember': 'Voitrans AI Member', - 'unlockStarterMember': 'Unlock Starter Member', - 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', - 'unlockNow': 'Unlock Now', + 'enabled': 'Увімкнено', + 'disabled': 'Вимкнено', + 'myVoitransDevice': 'Мій пристрій VOITRANS', + 'helpAndFeedback': 'Допомога та відгуки', + 'aboutVoitrans': 'Про VOITRANS', + 'meetingDays': 'Дні', + 'meetingHours': 'Години', + 'voitransAiMember': 'Підписка Voitrans AI', + 'unlockStarterMember': 'Розблокувати Starter', + 'bindDeviceToActivate': + 'Прив’яжіть пристрій Voitrans, щоб активувати підписку Starter', + 'unlockNow': 'Розблокувати зараз', // Meeting模块 - 会员与升级 - 'comparison': 'Comparison', - 'detailedInfo': 'Detailed Information', - 'monthlyTranscriptionTime': 'Monthly Transcription Time', - 'unlimited': 'Unlimited', - 'professionalTemplates': 'Professional Templates', - 'limited': 'Limited', - 'fullTemplates': 'Full Templates', - 'professionalTerms': 'Professional Terms', - 'customTemplates': 'Custom Templates', - 'visualMindMap': 'Visual Mind Map', - 'speakerIdentification': 'Speaker Identification', - 'aiVoiceEnhancement': 'AI Voice Enhancement', - 'audioImport': 'Audio Import', - 'multipleExportFormats': 'Multiple Export Formats', - 'professionalSummaryTemplates': 'Professional Summary Templates', + 'comparison': 'Порівняння', + 'detailedInfo': 'Детальна інформація', + 'monthlyTranscriptionTime': 'Місячний час транскрипції', + 'unlimited': 'Без обмежень', + 'professionalTemplates': 'Професійні шаблони', + 'limited': 'Обмежено', + 'fullTemplates': 'Повний набір шаблонів', + 'professionalTerms': 'Професійні терміни', + 'customTemplates': 'Користувацькі шаблони', + 'visualMindMap': 'Візуальна інтелект‑карта', + 'speakerIdentification': 'Визначення мовців', + 'aiVoiceEnhancement': 'Покращення голосу AI', + 'audioImport': 'Імпорт аудіо', + 'multipleExportFormats': 'Кілька форматів експорту', + 'professionalSummaryTemplates': 'Професійні шаблони підсумків', 'professionalTemplateDesc': - 'Professional template design to improve your work efficiency. Customized according to industry needs.', + 'Професійний дизайн шаблонів для підвищення ефективності роботи. Налаштовується відповідно до потреб галузі.', 'customTemplateDesc': - 'You can customize summary prompts according to your needs and use them to generate the required summaries.', + 'Ви можете налаштувати підказки для підсумків під свої потреби та використовувати їх для генерації потрібних підсумків.', 'askAiDesc': - 'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.', + 'Інтелектуально витягуйте глибшу інформацію із записів, створюйте таблиці даних, ключові висновки обговорення, списки справ, листи‑звіти та інший форматований вміст одним натисканням.', 'visualMindMapDesc': - 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', + 'Більше, ніж підсумки — організовуйте й візуалізуйте ключові пункти за допомогою інтелект‑карт для кращого розуміння всього тексту.', 'templateCommunityDesc': - 'Discover, share, and get inspiration from the template library created by users.', + 'Відкривайте, діліться та надихайтеся бібліотекою шаблонів, створеною користувачами.', 'speakerIdentificationDesc': - 'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.', + 'Транскрипція аудіо підтримуватиме визначення мовців, щоб інтуїтивніше відтворювати зміст зустрічі чи телефонної розмови. Водночас підсумок буде точнішим.', 'privateCloudSyncDesc': - 'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.', + 'Ваші записи та транскрипції будуть надійно збережені на виділених хмарних серверах із повним шифруванням під час завантаження та вивантаження, щоб забезпечити конфіденційність і безпеку.', 'aiVoiceEnhancementDesc': - 'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.', + 'Покращення голосу AI підтримує кілька рівнів шумозаглушення, інтелектуально прибирає фоновий шум, підвищує чіткість голосу та покращує якість відтворення.', 'audioImportDesc': - 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', + 'Легко імпортуйте аудіофайли з пристрою або сторонніх застосунків, як‑от голосові нотатки, Google Drive тощо.', 'multipleExportFormatsDesc': - 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - 'upgradeMembership': 'Upgrade Your Membership', - 'yearlySubscription': 'Yearly Subscription', - 'monthlySubscription': 'Monthly Subscription', + 'Експортуйте аудіозаписи, текст транскрипції та підсумки у різних форматах (TXT, PDF, JPEG) відповідно до ваших потреб.', + 'upgradeMembership': 'Оновити підписку', + 'yearlySubscription': 'Річна підписка', + 'monthlySubscription': 'Місячна підписка', 'proMonthly': 'Pro ¥60/month', 'proMonthlyDesc': - '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', - 'sevenDayTrial': '7-day Free Trial', + 'Безкоштовна пробна 7 днів, далі ¥800/рік. Можна скасувати до завершення пробного періоду.', + 'sevenDayTrial': 'Безкоштовна пробна 7 днів', 'unlimitedMonthly': 'Unlimited ¥120/month', 'unlimitedMonthlyDesc': - '7-day free trial, then ¥1600/year. Cancel anytime before trial ends.', - 'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.', + 'Безкоштовна пробна 7 днів, далі ¥1600/рік. Можна скасувати до завершення пробного періоду.', + 'trialNote': + '*Безкоштовно 7 днів, далі оплата щорічно; можна скасувати будь‑коли.', 'proPrice': 'Pro ¥120', 'proMonthlyPrice': '¥120/month', - 'subscribe': 'Subscribe', + 'subscribe': 'Підписатися', 'unlimitedPrice': 'Unlimited ¥198', 'unlimitedMonthlyPrice': '¥198/month', 'upgradeNote': - '*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account', - 'buyMoreTranscriptionTime': 'Buy More Transcription Time', + '*Після оновлення підписки залишок днів попередньої підписки буде автоматично перераховано та повернено на ваш платіжний рахунок', + 'buyMoreTranscriptionTime': 'Купити більше часу транскрипції', 'sixThousandMinutes': '6,000 minutes', 'threeThousandMinutes': '3,000 minutes', 'sixHundredMinutes': '600 minutes', 'oneHundredTwentyMinutes': '120 minutes', - 'validityPeriod': '*Validity Period: ', + 'validityPeriod': '*Термін дії: ', 'validityNote': - 'Activated immediately after purchase, valid for 2 years after activation.', - 'purchase': 'Purchase', + 'Активується одразу після покупки, діє 2 роки після активації.', + 'purchase': 'Купити', // Meeting模块 - 录音语言 - 'recordLanguage': 'Recording Language', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', + 'recordLanguage': 'Мова запису', + 'cantonese': 'Кантонська', + 'sichuan': 'Сичуаньський діалект', + 'shanghai': 'Шанхайський діалект', // Meeting模块 - 错误提示 - 'meetingUnknownLanguage': 'Unknown Language', + 'meetingUnknownLanguage': 'Невідома мова', 'analysisFailed': 'Аналіз не вдався, спробуйте пізніше', 'transcriptionFailed': 'Транскрипція не вдалася, спробуйте пізніше', 'summaryFailed': 'Не вдалося створити підсумок, спробуйте пізніше', @@ -757,10 +769,10 @@ const Map ukUA = { "translationRecharge": "Підписатися на переклад", "meetingAssistantRecharge": "Підписатися на допомогу з зустрічю", "cloudSync": "Увімкнути синхронізацію в хмарі", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "memberService": "Сервіс для учасників", + "bindRewardTitle": "Нагороди", "bindRewardSimpleDesc": - "First bind device reward has been issued. Tap OK to close.", + "Нагороду за перше прив’язування пристрою нараховано. Натисніть OK, щоб закрити.", "joinDevice": "Підключений пристрій:", "accountId": "ID облікового запису:", "systemSetting": "Системні налаштування", @@ -810,19 +822,20 @@ const Map ukUA = { "loading": "Завантаження...", // 设备管理模块 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", - "deviceTypeSmartEye": "Smart Glasses", + "deviceTypeUnknown": "Невідомий пристрій", + "deviceTypeClassicBluetoothHeadset": "Класична Bluetooth-гарнітура", + "deviceTypeBleBluetoothHeadset": "BLE Bluetooth-гарнітура", + "deviceTypeSmartVoiceRecorder": "Розумний диктофон", + "deviceTypeSmartEye": "Розумні окуляри", "unbind": "Відв'язати", - "noDevicesBound": "No devices bound yet", - "pleaseBindDeviceFirst": "Please bind a device first to manage", - "noMacAddress": "No MAC Address", - "licenseCode": "License Code", - "confirmUnbind": "Confirm Unbind", - "confirmUnbindMessage": "Are you sure you want to unbind device \\", - "confirmUnbindAction": "Confirm Unbind", + "noDevicesBound": "Ще немає прив’язаних пристроїв", + "pleaseBindDeviceFirst": "Спочатку прив’яжіть пристрій для керування", + "noMacAddress": "Немає MAC-адреси", + "licenseCode": "Ліцензійний код", + "confirmUnbind": "Підтвердити відв’язування", + "confirmUnbindMessage": + "Ви впевнені, що хочете відв’язати пристрій \"{deviceName}\"?", + "confirmUnbindAction": "Підтвердити відв’язування", // Agent模块 - 主界面 "Lily": "Lily", @@ -852,31 +865,31 @@ const Map ukUA = { "loadMoreMessages": "Завантажити більше повідомлень...", "loadFailedClickRetry": "Не вдалося завантажити, натисніть, щоб повторити", "swipeUpForMore": "Проведіть пальцем вгору, щоб побачити більше", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 + "callingTool": "Я допомагаю вам, зачекайте!", // 正在帮您,请稍等! + "voice_interrupt": "Перервати", // 语音打断 'voice_interrupt_tip': 'При увімкненні: ШІ не буде перериватися вашим голосом під час відповіді та зможе обробляти лише один раунд розмови за раз. Щоб почати новий раунд, просто скажіть слово активації.', // Agent模块 - 预设提示词 - "presetMusic": "Play some music", // 来点音乐 - "presetNavigation": "Navigation to", // 导航 - "presetWeather": "Today's weather", // 今日天气 - "presetNews": "Today's news", // 今日新闻 - "presetFood": "Nearby food", // 美食 - "playSomeMusic": "Play some popular music", // 播放一些流行音乐 - "navigationTo": "Please help me navigate to", // 导航到 - "todayWeather": "How's the weather today?", // 今日天气 - "todayNews": "What's the news today?", // 今日新闻 - "nearbyFood": "What delicious food is nearby?", // 美食 + "presetMusic": "Увімкни музику", // 来点音乐 + "presetNavigation": "Навігація до", // 导航 + "presetWeather": "Погода сьогодні", // 今日天气 + "presetNews": "Новини сьогодні", // 今日新闻 + "presetFood": "Їжа поруч", // 美食 + "playSomeMusic": "Увімкни популярну музику", // 播放一些流行音乐 + "navigationTo": "Допоможи прокласти маршрут до", // 导航到 + "todayWeather": "Яка сьогодні погода?", // 今日天气 + "todayNews": "Які сьогодні новини?", // 今日新闻 + "nearbyFood": "Яка смачна їжа є поруч?", // 美食 // Agent模块 - 欢迎消息与权限 - 'welcomeMessage': '你好!我是**Lily**,我能帮你:\n\n' - '• 回答问题和提供信息\n\n' - '• 实时语音翻译\n\n' - '• 推荐音乐和播客\n\n' - '• 语音备忘录和提醒\n\n' - '• 控制耳机功能\n\n' - '有什么我可以帮你的吗?', + 'welcomeMessage': 'Привіт! Я **Lily**.\n\n' + '• Відповідаю на питання та надаєю інформацію\n\n' + '• Реальний часовий переклад мови\n\n' + '• Рекомендую музику та podcast\n\n' + '• Зберігаю голосові нотатки та запам’ятятки\n\n' + '• Керую функціями гарнітури\n\n' + 'Чи можу я допомогти вам?', 'microphonePermission': 'Мікрофон', 'voiceRecognitionPermissionText': 'Для розпізнавання мовлення потрібен доступ до мікрофона.', @@ -912,11 +925,12 @@ const Map ukUA = { 'generatedByAi': 'Згенеровано AI', // Agent模块 - 工具调用 - 'toolCall': 'Tool Call', - 'noResult': 'No Result', - 'noToolCallContentToCopy': 'No tool call content to copy', - 'toolCallDetails': 'Tool Call Details:', - 'toolCallContentCopied': 'Tool call content copied to clipboard', + 'toolCall': 'Виклик інструмента', + 'noResult': 'Немає результату', + 'noToolCallContentToCopy': 'Немає вмісту виклику інструмента для копіювання', + 'toolCallDetails': 'Деталі виклику інструмента:', + 'toolCallContentCopied': + 'Вміст виклику інструмента скопійовано в буфер обміну', // Agent模块 - 音乐卡片 'recommendedMusic': 'Ось кілька рекомендованих композицій:', @@ -939,27 +953,27 @@ const Map ukUA = { "tsransit": "Громадський транспорт", // Agent模块 - 导航选择 - 'selectNavigationApp': 'Select Navigation App', + 'selectNavigationApp': 'Виберіть навігаційний додаток', 'amapMap': 'Amap', - 'useAmapNavigation': 'Navigate with Amap', + 'useAmapNavigation': 'Навігація з Amap', 'baiduMap': 'Baidu Maps', - 'useBaiduNavigation': 'Navigate with Baidu Maps', + 'useBaiduNavigation': 'Навігація з Baidu Maps', 'googleMap': 'Google Maps', - 'useGoogleNavigation': 'Navigate with Google Maps', + 'useGoogleNavigation': 'Навігація з Google Maps', 'appleMap': 'Apple Maps', - 'useAppleNavigation': 'Navigate with Apple Maps', - 'builtInNavigation': 'Built-in Navigation', - 'useBuiltInNavigation': 'Navigate with built-in map', - 'navigationStartFailed': 'Failed to start navigation', + 'useAppleNavigation': 'Навігація з Apple Maps', + 'builtInNavigation': 'Вбудована навігація', + 'useBuiltInNavigation': 'Навігація з вбудованою картою', + 'navigationStartFailed': 'Не вдалося запустити навігацію', 'cannotPlayMusicListRetryLater': - 'Cannot play music list, please try again later', - 'cannotPlaySong': 'Cannot play song', - 'openMapError': 'Error opening map', - 'pleaseInstallAmapApp': 'Please install the Amap app first', - 'pleaseInstallBaiduMapApp': 'Please install the Baidu Maps app first', - 'appleMapStartFailed': 'Apple Maps failed to start', - 'appleMapUnavailable': 'Apple Maps unavailable', - 'openAppleMapError': 'Error opening Apple Maps', + 'Не вдається відтворити список музики, спробуйте пізніше', + 'cannotPlaySong': 'Не вдається відтворити пісню', + 'openMapError': 'Помилка під час відкриття карти', + 'pleaseInstallAmapApp': 'Спочатку встановіть додаток Amap', + 'pleaseInstallBaiduMapApp': 'Спочатку встановіть додаток Baidu Maps', + 'appleMapStartFailed': 'Не вдалося запустити Apple Maps', + 'appleMapUnavailable': 'Apple Maps недоступний', + 'openAppleMapError': 'Помилка під час відкриття Apple Maps', // Agent模块 - 天气卡片 'weatherQuery': 'Запит погодних умов:', @@ -1014,8 +1028,8 @@ const Map ukUA = { "strongWind": "Сильний вітер", // 翻译模块 - 中间层 - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", + "pictureTranslation": "Переклад зображень", + "textTranslation": "Текстовий переклад", // 翻译模块 - 主页 "translationHistory": "Історія перекладів", @@ -1025,33 +1039,32 @@ const Map ukUA = { "phoneUser": "Користувач телефону", "selectSourceLanguage": "Вибрати вихідну мову", "selectTargetLanguage": "Вибрати цільову мову", - "me": "Me", - "counterPart": "Counterpart", + "me": "Я", + "counterPart": "Співрозмовник", "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - "autoDetect": "Auto Detect", // 自动检测 + "Переконайтеся, що Bluetooth-навушники підключені до телефону та триває дзвінок", + "autoDetect": "Автовизначення", // 自动检测 // 翻译模块 - 悬浮窗与权限 - 'disableFloatingWindow': 'Disable Floating Window', - 'enableFloatingWindow': 'Enable Floating Window', - 'permissionTip': 'Permission Tip', - 'micPermissionRequiredForRecording': - 'Microphone permission is required for recording', - 'deleteTranslationRecordError': 'Error deleting translation record: @error', + 'disableFloatingWindow': 'Вимкнути плаваюче вікно', + 'enableFloatingWindow': 'Увімкнути плаваюче вікно', + 'permissionTip': 'Підказка щодо дозволів', + 'micPermissionRequiredForRecording': 'Для запису потрібен дозвіл на мікрофон', + 'deleteTranslationRecordError': 'Помилка видалення запису перекладу: @error', // 翻译模块 - 文本翻译 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "translating": "Translating", - "translate": "Translate", - "pleaseInputText": "Please input text", + "languageDetectionFailed": "Не вдалося визначити мову", + "translationFailed": "Переклад не вдався", + "translating": "Переклад...", + "translate": "Перекласти", + "pleaseInputText": "Введіть текст", "inputTextToTranslate": "Введіть текст для перекладу", - "textTooLong": "Text too long, max 5000 characters", + "textTooLong": "Текст надто довгий, максимум 5000 символів", // 翻译模块 - 历史记录 "noTranslationHistory": "Історія відсутня", - "historyRecords": "History Records", - "clearResults": "Clear Results", + "historyRecords": "Історія записів", + "clearResults": "Очистити результати", "clearHistory": "Очистити історію", "clearHistoryConfirm": "Ви впевнені, що хочете очистити всю історію перекладів? Цю дію неможливо скасувати.", @@ -1061,55 +1074,56 @@ const Map ukUA = { "Ви впевнені, що хочете видалити всі записи перекладів цієї сесії? Цю дію неможливо скасувати.", // 翻译模块 - 图片翻译 - "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", + "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": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", + "Обробка зображення або переклад не вдалися. Спробуйте ще раз.\nПомилка: {error}", + "imageTooLarge": "Розмір зображення перевищує ліміт 4 МБ", "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", + "Розмір зображення перевищує 4 МБ. Зменште якість або розміри та спробуйте ще раз", + "emptyTranslationResult": + "API перекладу зображень повернуло порожній результат", "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", + "Помилка API перекладу зображень. Перевірте мережу та повторіть", + "permissionRequired": "Потрібен дозвіл", + "cameraPermissionRequired": "Для фотографування потрібен дозвіл камери", "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", + "Для вибору зображень потрібен дозвіл на фотоальбом", + "translationDetails": "Деталі перекладу", + "originalImage": "Оригінальне зображення", + "sourceLanguage": "Вихідна мова", + "targetLanguage": "Цільова мова", + "translationTime": "Час перекладу", + "shareInDevelopment": "Функція поширення в розробці", // 翻译模块 - 录音文件 "translateAudioFiles": "Перекласти аудіофайли", @@ -1161,8 +1175,8 @@ const Map ukUA = { 'deleteAccount': 'Видалити обліковий запис', 'deleteAccountTips': 'Ви впевнені, що хочете назавжди видалити свій обліковий запис? Цю дію неможливо скасувати', - 'clean': 'Clear Cache', - 'cleanTips': 'Are you sure you want to clear personal cache?', + 'clean': 'Очистити кеш', + 'cleanTips': 'Ви впевнені, що хочете очистити особистий кеш?', 'networkConnectionFailed': 'Помилка мережевого підключення, перевірте налаштування мережі та спробуйте ще раз', 'serverTemporarilyUnavailable': @@ -1207,32 +1221,32 @@ const Map ukUA = { 'Службу облікових записів ініціалізовано', // AccountService 已初始化 // 权限模块 - 'meetingStoragePermission': 'Storage', + 'meetingStoragePermission': 'Сховище', 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', + 'Нам потрібен доступ до сховища, щоб ви могли вибирати та завантажувати аудіофайли.', 'meetingStoragePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', + 'Виявлено, що ви назавжди відмовили в доступі до сховища. Щоб продовжити використання цієї функції, перейдіть у налаштування програми та вручну увімкніть дозвіл на сховище.', 'getPermissionStatusFailed': 'Не вдалося отримати статус дозволів', - 'communicationPermissions': 'Дозволи на зв\\', - 'bluetoothPermissions': 'Bluetooth Permissions', - 'notificationPermissions': 'Notification Permissions', - 'storagePermissions': 'Storage Permissions', - 'microphonePermissions': 'Microphone Permissions', - 'alarmPermissions': 'Alarm Permissions', + 'communicationPermissions': 'Дозволи на зв\'язок', + 'bluetoothPermissions': 'Дозволи Bluetooth', + 'notificationPermissions': 'Дозволи сповіщень', + 'storagePermissions': 'Дозволи сховища', + 'microphonePermissions': 'Дозволи мікрофона', + 'alarmPermissions': 'Дозволи будильника', 'calendarPermissions': 'Дозволи календаря', 'locationPermissions': 'Дозволи на місцезнаходження', 'phone': 'Телефон', 'sms': 'SMS', - 'contacts': 'Contacts', - 'notification': 'Notification', - 'alarm': 'Alarm', + 'contacts': 'Контакти', + 'notification': 'Сповіщення', + 'alarm': 'Будильник', 'calendarWrite': 'Запис до календаря', 'calendarFullAccess': 'Повний доступ до календаря', 'locationInfo': 'Інформація про місцезнаходження', 'phonePermissionDesc': 'Використовується для здійснення дзвінків', 'smsPermissionDesc': 'Використовується для надсилання SMS', 'alarmPermissionDesc': - 'Used to set exact alarms to ensure reminders trigger on time', + 'Використовується для встановлення точних будильників, щоб нагадування спрацьовували вчасно', 'calendarWritePermissionDesc': 'Використовується для створення подій та нагадувань у календарі', 'calendarFullAccessPermissionDesc': @@ -1252,72 +1266,75 @@ const Map ukUA = { 'smsPermissionDetailDesc': 'Для функції надсилання SMS потрібен дозвіл на доступ до SMS', 'alarmPermissionDetailDesc': - 'This permission is required to set exact alarms and ensure reminders trigger on time', + 'Цей дозвіл потрібен для встановлення точних будильників і гарантованого своєчасного спрацювання нагадувань', 'calendarWritePermissionDetailDesc': 'Для створення подій у календарі потрібен дозвіл на запис до календаря', 'calendarFullAccessPermissionDetailDesc': 'Для керування подіями у календарі потрібен повний доступ до календаря', 'locationPermissionDetailDesc': 'Для отримання інформації про місцезнаходження потрібен дозвіл на доступ до місцезнаходження', - 'contactsPermissionDesc': 'Used for accessing contact information', + 'contactsPermissionDesc': + 'Використовується для доступу до контактної інформації', 'contactsPermissionDetailDesc': - 'Phone call and SMS functionality requires contacts permission to select contacts', + 'Для функцій дзвінків і SMS потрібен доступ до контактів, щоб вибирати контакти', 'bluetoothPermissionDesc': - 'Used for connecting and managing Bluetooth devices', + 'Використовується для підключення та керування Bluetooth-пристроями', 'bluetoothPermissionDetailDesc': - 'Connecting to Bluetooth headphones and other devices requires Bluetooth permission', - 'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices', + 'Для підключення Bluetooth-навушників та інших пристроїв потрібен дозвіл Bluetooth', + 'bluetoothScanPermissionDesc': + 'Використовується для сканування Bluetooth-пристроїв поблизу', 'bluetoothScanPermissionDetailDesc': - 'Scanning for nearby Bluetooth devices requires Bluetooth scan permission', - 'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices', + 'Для сканування Bluetooth-пристроїв поблизу потрібен дозвіл на сканування Bluetooth', + 'bluetoothConnectPermissionDesc': + 'Використовується для підключення до Bluetooth-пристроїв', 'bluetoothConnectPermissionDetailDesc': - 'Connecting to Bluetooth devices requires Bluetooth connect permission', - 'notificationPermissionDesc': 'Used for sending notification messages', + 'Для підключення до Bluetooth-пристроїв потрібен дозвіл на підключення Bluetooth', + 'notificationPermissionDesc': 'Використовується для надсилання сповіщень', 'notificationPermissionDetailDesc': - 'App needs notification permission to send you important alerts and messages', + 'Програмі потрібен дозвіл на сповіщення, щоб надсилати вам важливі попередження та повідомлення', 'appNeedsPermissionForFullFunction': 'Програмі потрібен цей дозвіл для надання повної функціональності', 'permanentDenialText': 'Ви назавжди відмовили в доступі до {permission}, будь ласка, перейдіть до налаштувань програми, щоб увімкнути його', 'goToSettings': 'Перейти до налаштувань', - 'bluetoothScan': 'Bluetooth Scan', - 'bluetoothConnect': 'Bluetooth Connect', + 'bluetoothScan': 'Сканування Bluetooth', + 'bluetoothConnect': 'Підключення Bluetooth', 'bluetoothScanExplanation': - 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', + 'Програмі потрібен дозвіл на сканування Bluetooth, щоб знаходити пристрої поблизу.', 'bluetoothConnectExplanation': - 'The app needs Bluetooth connect permission to connect to Bluetooth devices.', + 'Програмі потрібен дозвіл на підключення Bluetooth, щоб підключатися до пристроїв.', 'locationForBluetoothExplanation': - 'The app needs location permission to scan Bluetooth devices.', + 'Програмі потрібен дозвіл на місцезнаходження, щоб сканувати Bluetooth-пристрої.', 'bluetoothScanPermanentDenial': - 'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.', + 'Дозвіл на сканування Bluetooth назавжди відхилено, перейдіть до налаштувань і увімкніть його вручну.', 'bluetoothConnectPermanentDenial': - 'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.', + 'Дозвіл на підключення Bluetooth назавжди відхилено, перейдіть до налаштувань і увімкніть його вручну.', 'locationPermanentDenial': - 'Location permission has been permanently denied, please go to settings to enable it manually.', - 'notificationPermission': 'Notification', - 'locationPermission': 'Location', + 'Дозвіл на місцезнаходження назавжди відхилено, перейдіть до налаштувань і увімкніть його вручну.', + 'notificationPermission': 'Сповіщення', + 'locationPermission': 'Місцезнаходження', 'notificationPermissionExplanation': - 'Notification permission is required to display music playback status.', + 'Дозвіл на сповіщення потрібен, щоб показувати статус відтворення музики.', '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.', - 'storagePermission': 'Storage', + 'Ви назавжди відмовили в доступі до місцезнаходження, перейдіть до налаштувань і увімкніть його.', + 'storagePermission': 'Сховище', 'microphonePermissionExplanation': - 'We need microphone permission to record audio content.', + 'Нам потрібен дозвіл на мікрофон для запису аудіо.', 'storagePermissionExplanation': - 'We need storage permission so you can select and upload audio files.', + 'Нам потрібен дозвіл на сховище, щоб ви могли вибирати та завантажувати аудіофайли.', 'microphonePermissionPermanentDenial': - '检测到您已永久拒绝录音权限。如需继续使用此功能,请前往应用设置中手动开启麦克风权限。', + 'Виявлено, що ви назавжди відмовили в доступі до мікрофона. Щоб продовжити використання цієї функції, перейдіть у налаштування програми та вручну увімкніть дозвіл на мікрофон.', 'storagePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', + 'Виявлено, що ви назавжди відмовили в доступі до сховища. Щоб продовжити використання цієї функції, перейдіть у налаштування програми та вручну увімкніть дозвіл на сховище.', + 'permissionUtilNeed': 'Потрібен ', + 'permissionUtilPermission': ' дозвіл', + 'permissionUtilRestricted': ' дозвіл обмежено', 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'Ця функція недоступна або обмежена на поточному пристрої. Перевірте налаштування пристрою або системні обмеження.', 'permissionUtilConfirm': 'OK', // 原生前台服务通知(Android) @@ -1407,27 +1424,27 @@ const Map ukUA = { 'bleConnectionFailed': 'Не вдалося підключитися через BLE', 'deviceAuthorizationFailedCheckCode': 'Помилка авторизації пристрою, перевірте код авторизації', - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + 'bluetoothGuideTitle': 'Потрібно вручну увімкнути Bluetooth', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'Будь ласка, виконайте ці кроки:', // 请按照以下步骤操作: 'bluetoothGuideStep1': - 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'Увімкніть Bluetooth: Налаштування → Bluetooth → Увімкнути', // 开启蓝牙:设置 → 蓝牙 → 开启 'bluetoothGuideStep2': - 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'Підключіть пристрій: знайдіть свій пристрій у «Мої пристрої» та натисніть, щоб підключитися', // 连接设备:在"我的设备"中找到您的设备并点击连接 'bluetoothGuideStep3': - 'Return to app to continue pairing process', // 返回应用继续配对流程 + 'Поверніться до програми, щоб продовжити спарювання', // 返回应用继续配对流程 'bluetoothGuideTip': - 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': 'I Know', // 我知道了 + 'Порада: можна також натиснути й утримувати значок Bluetooth у Центрі керування, щоб швидко відкрити налаштування Bluetooth', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + '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:", + "firstBindRewardTitle": "Вітальна нагорода", + "firstBindRewardDesc": "Ви отримали нагороду за прив’язку.", + "vipLevelLabel": "Рівень VIP:", + "expiryLabel": "Термін дії:", + "notActivated": "Не активовано", + "aiChatCreditsLabel": "Кредити AI чату:", + "translationCreditsLabel": "Кредити перекладу:", + "meetingCreditsLabel": "Кредити зустрічей:", "ok": "OK", // 用户反馈模块 @@ -1438,7 +1455,7 @@ const Map ukUA = { 'feedbackHint': 'Будь ласка, введіть ваш відгук...', 'feedbackRequired': 'Будь ласка, введіть зміст відгуку', 'contactInfo': 'Контактна інформація', - 'contactHint': 'Email/Телефон, щоб ми могли з вами зв\\', + 'contactHint': 'Email/Телефон, щоб ми могли з вами зв\'язатися', 'submit': 'Надіслати', 'feedbackSubmitSuccess': 'Відгук успішно надіслано, дякуємо за ваш відгук!', 'feedbackSubmitFailed': @@ -1458,13 +1475,14 @@ const Map ukUA = { "connectionFailed": "Помилка підключення", "retryConnection": "Повторити підключення", "ota_updateNow": "Оновити зараз", - "otaVersionInfoFailed": "Failed to get version info. Please try again later.", + "otaVersionInfoFailed": + "Не вдалося отримати інформацію про версію. Спробуйте пізніше.", "otaDeviceInfoUnavailable": - "Unable to get device info. Please check the connection and retry.", + "Не вдалося отримати інформацію про пристрій. Перевірте підключення та спробуйте ще раз.", "otaProductInfoUnavailable": - "Unable to identify the device. Please reconnect and retry.", + "Не вдалося визначити пристрій. Підключіться знову та спробуйте ще раз.", "otaFirmwareVersionInvalid": - "Firmware version is abnormal. Please reconnect and retry.", + "Некоректна версія прошивки. Підключіться знову та спробуйте ще раз.", "keepConnectedDontClose": "Будь ласка, тримайте пристрій підключеним, не закривайте програму", "doNotDisconnect": "Будь ласка, не відключайте", @@ -1474,55 +1492,57 @@ const Map ukUA = { "Вийміть обидва навушники та переконайтеся, що заряд батареї в обох перевищує 20%", // OTA升级模块 - 弹窗与对话框 - 'otaNewVersionFoundWithVersion': 'New version @version found', - 'otaConfirmUpdateNow': 'Update now?', - 'otaUpdate': 'Update', - 'otaUpgradeSuccess': 'Upgrade Successful', + 'otaNewVersionFoundWithVersion': 'Знайдено нову версію @version', + 'otaConfirmUpdateNow': 'Оновити зараз?', + 'otaUpdate': 'Оновити', + 'otaUpgradeSuccess': 'Оновлення успішне', 'otaUpgradeCompleteRepair': - 'Firmware upgrade complete!\n\nDevice needs to be re-paired to work properly. Go to pairing page now?', - 'otaPairLater': 'Pair Later', - 'otaPairNow': 'Pair Now', + 'Оновлення прошивки завершено!\n\nПристрій потрібно повторно спарувати для коректної роботи. Перейти на сторінку спарювання зараз?', + 'otaPairLater': 'Спарувати пізніше', + 'otaPairNow': 'Спарувати зараз', 'okConfirm': 'OK', // OTA升级模块 - 设备检查 - 'otaBleCheckErrorWithError': 'Error checking BLE connection: @error', - 'otaBleNotConnected': 'BLE Device Not Connected', + 'otaBleCheckErrorWithError': 'Помилка перевірки з\'єднання BLE: @error', + 'otaBleNotConnected': 'BLE‑пристрій не підключено', 'otaBleNeedConnection': - 'Firmware upgrade requires BLE device connection\nPlease ensure device is properly connected and try again', - 'otaDeviceInfoUnavailableTitle': 'Device Info Unavailable', + 'Для оновлення прошивки потрібне підключення BLE‑пристрою\nПереконайтеся, що пристрій підключено правильно, і спробуйте ще раз', + 'otaDeviceInfoUnavailableTitle': 'Інформація про пристрій недоступна', 'otaCannotGetDeviceInfo': - 'Cannot get device info\nPlease reconnect device or try again later', - 'otaBleCheckFailed': 'BLE Connection Check Failed', + 'Не вдалося отримати інформацію про пристрій\nПідключіть пристрій знову або спробуйте пізніше', + 'otaBleCheckFailed': 'Перевірка з\'єднання BLE не вдалася', 'otaCannotGetDeviceInfoCheckConnection': - 'Cannot get device info, please check device connection', + 'Не вдалося отримати інформацію про пристрій, перевірте підключення', 'otaCannotGetProductInfoWithName': - 'Cannot get product info, device name: @deviceName', - 'otaCannotGetBatteryInfo': 'Cannot get valid battery info', - 'otaLowBattery': 'Low Battery', + 'Не вдалося отримати інформацію про продукт, назва пристрою: @deviceName', + 'otaCannotGetBatteryInfo': + 'Не вдалося отримати коректну інформацію про батарею', + 'otaLowBattery': 'Низький заряд', 'otaSingleBatteryLow': - 'Device battery too low for firmware upgrade\nRequirement: battery must be above 20%\nCurrent: @ear @battery%\nPlease charge and try again', + 'Заряд батареї пристрою занадто низький для оновлення прошивки\nВимога: заряд має бути понад 20%\nПоточний: @ear @battery%\nЗарядіть і спробуйте ще раз', 'otaDoubleBatteryLow': - 'Device battery too low for firmware upgrade\nRequirement: both earbuds must be above 20%\nCurrent: Left @left%, Right @right%\nPlease charge and try again', - 'otaBatteryCheckFailed': 'Battery Check Failed', + 'Заряд батареї пристрою занадто низький для оновлення прошивки\nВимога: обидва навушники мають бути понад 20%\nПоточний: Лівий @left%, Правий @right%\nЗарядіть і спробуйте ще раз', + 'otaBatteryCheckFailed': 'Перевірка батареї не вдалася', // OTA升级模块 - 升级状态 'otaDefaultUpdateDesc': - 'This update includes performance optimizations and bug fixes.', - 'otaGetLatestVersionFailed': 'Failed to get latest version info', - 'otaGetVersionInfoFailed': 'Failed to get version info', - 'otaCheckingDeviceStatus': 'Checking device status...', + 'Це оновлення містить оптимізації продуктивності та виправлення помилок.', + 'otaGetLatestVersionFailed': + 'Не вдалося отримати інформацію про останню версію', + 'otaGetVersionInfoFailed': 'Не вдалося отримати інформацію про версію', + 'otaCheckingDeviceStatus': 'Перевірка стану пристрою...', 'otaDownloadFailedCheckNetwork': - 'Download failed, please check network connection', - 'otaDownloadFailed': 'Download Failed', - 'otaPreparingConnection': 'Preparing device connection...', - 'otaConnectingDevice': 'Connecting to device...', - 'otaUpgradeStarted': 'OTA upgrade started...', - 'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%', - 'otaUpgradeSuccessComplete': 'Upgrade completed successfully', - 'otaUpgradeFailedWithCode': 'Upgrade failed, error code: @code', - 'otaUpgradeFailedTitle': 'Upgrade Failed', + 'Не вдалося завантажити, перевірте підключення до мережі', + 'otaDownloadFailed': 'Завантаження не вдалося', + 'otaPreparingConnection': 'Підготовка підключення пристрою...', + 'otaConnectingDevice': 'Підключення до пристрою...', + 'otaUpgradeStarted': 'Оновлення OTA розпочато...', + 'otaUpgradeProgressWithPercent': 'Прогрес оновлення: @percent%', + 'otaUpgradeSuccessComplete': 'Оновлення успішно завершено', + 'otaUpgradeFailedWithCode': 'Оновлення не вдалося, код помилки: @code', + 'otaUpgradeFailedTitle': 'Оновлення не вдалося', 'otaUpgradeFailedDesc': - 'Please check device connection or update package, error code: @code', - 'otaDeviceDisconnected': 'Device disconnected', - 'otaDeviceConnected': 'Device connected', + 'Перевірте підключення пристрою або пакет оновлення, код помилки: @code', + 'otaDeviceDisconnected': 'Пристрій відключено', + 'otaDeviceConnected': 'Пристрій підключено', // 音乐模块 "noMusic": "Немає музики", // 暂无音乐 diff --git a/lib/core/translations/language/vi_vn.dart b/lib/core/translations/language/vi_vn.dart index 4748fc7f6..705a98412 100644 --- a/lib/core/translations/language/vi_vn.dart +++ b/lib/core/translations/language/vi_vn.dart @@ -1,3 +1,4 @@ +//越南-越南语 const Map viVN = { // 通用 'continue': 'Tiếp tục', @@ -109,7 +110,7 @@ const Map viVN = { "welcomeToThisApp": "Chào mừng bạn đến với Voitrans, vui lòng đọc kỹ", // 欢迎使用Voitrans,请充分阅读 "privacyPolicyText": - ",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 + "Nhấn “Đồng ý và vào” nghĩa là bạn đã đọc và đồng ý với các thỏa thuận ở trên. Nhấn “Không đồng ý” sẽ thoát ứng dụng.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Không đồng ý", // 不同意 "agreeAndEnter": "Đồng ý và vào", // 同意并进入 @@ -850,7 +851,7 @@ const Map viVN = { "loadFailedClickRetry": "Tải thất bại, nhấn để thử lại", "swipeUpForMore": "Vuốt lên để xem thêm", "callingTool": "Tôi đang giúp bạn, vui lòng đợi!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 + "voice_interrupt": "Ngắt", // 语音打断 '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.', diff --git a/lib/core/translations/language/zh_cn.dart b/lib/core/translations/language/zh_cn.dart index c9adf241a..f0edbb095 100644 --- a/lib/core/translations/language/zh_cn.dart +++ b/lib/core/translations/language/zh_cn.dart @@ -1,3 +1,4 @@ +//中国-简体中文 const Map zhCN = { // 通用 'continue': '继续', @@ -1269,15 +1270,15 @@ const Map zhCN = { 'iKnow': '我知道了', // 配对模块 - 绑定奖励 - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", + "firstBindRewardTitle": "首次绑定奖励", + "firstBindRewardDesc": "您已领取绑定奖励。", + "vipLevelLabel": "VIP等级:", "expiryLabel": "到期时间:", "notActivated": "未激活", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", + "aiChatCreditsLabel": "AI聊天额度:", + "translationCreditsLabel": "翻译额度:", + "meetingCreditsLabel": "会议额度:", + "ok": "确定", // 用户反馈模块 "feedback": "用户反馈", diff --git a/lib/core/translations/language/zh_hk.dart b/lib/core/translations/language/zh_hk.dart index ae291fda9..bdbf0b9e1 100644 --- a/lib/core/translations/language/zh_hk.dart +++ b/lib/core/translations/language/zh_hk.dart @@ -1,3 +1,4 @@ +//香港-繁体中文 const Map zhHK = { // 通用 'continue': '繼續', @@ -1271,14 +1272,14 @@ const Map zhHK = { 'iKnow': '我知道了', // 我知道了 // 配对模块 - 绑定奖励 - "firstBindRewardTitle": 'Welcome Reward', - "firstBindRewardDesc": 'You\'ve received binding rewards.', - "vipLevelLabel": 'VIP Level:', + "firstBindRewardTitle": '首次綁定獎勵', + "firstBindRewardDesc": '您已獲得綁定獎勵。', + "vipLevelLabel": 'VIP 等級:', "expiryLabel": '到期時間:', "notActivated": '未啟用', - "aiChatCreditsLabel": 'AI Chat Credits:', - "translationCreditsLabel": 'Translation Credits:', - "meetingCreditsLabel": 'Meeting Credits:', + "aiChatCreditsLabel": 'AI 聊天額度:', + "translationCreditsLabel": '翻譯額度:', + "meetingCreditsLabel": '會議額度:', "ok": 'OK', // 用户反馈模块 diff --git a/lib/core/translations/language/zh_tw.dart b/lib/core/translations/language/zh_tw.dart index e3edbb544..c0fb0271f 100644 --- a/lib/core/translations/language/zh_tw.dart +++ b/lib/core/translations/language/zh_tw.dart @@ -1,3 +1,4 @@ +//台湾-繁体中文 const Map zhTW = { // 通用 'continue': '繼續', @@ -1271,14 +1272,14 @@ const Map zhTW = { 'iKnow': '我知道了', // 我知道了 // 配对模块 - 绑定奖励 - "firstBindRewardTitle": 'Welcome Reward', - "firstBindRewardDesc": 'You\'ve received binding rewards.', - "vipLevelLabel": 'VIP Level:', + "firstBindRewardTitle": '首次綁定獎勵', + "firstBindRewardDesc": '您已獲得綁定獎勵。', + "vipLevelLabel": 'VIP 等級:', "expiryLabel": '到期時間:', "notActivated": '未啟用', - "aiChatCreditsLabel": 'AI Chat Credits:', - "translationCreditsLabel": 'Translation Credits:', - "meetingCreditsLabel": 'Meeting Credits:', + "aiChatCreditsLabel": 'AI 聊天額度:', + "translationCreditsLabel": '翻譯額度:', + "meetingCreditsLabel": '會議額度:', "ok": 'OK', // 用户反馈模块 diff --git a/tools/i18n_audit.py b/tools/i18n_audit.py index 0a7b84817..c308c2030 100644 --- a/tools/i18n_audit.py +++ b/tools/i18n_audit.py @@ -119,6 +119,47 @@ def _looks_english_sentence(s: str) -> bool: "disable", "check", "try again", + "stats", + "threshold", + "cost", + "estimated", + "data volume", + "source text", + "characters", + "duration", + "session", + "history", + "cleanup", + "export", + "available", + "package", + "remaining", + "quota", + "feature description", + "most-used", + "audio", + "file size", + "bytes", + "interrupt", + "reward", + "credits", + "vip", + "expiration", + "membership", + "subscription", + "subscribe", + "purchase", + "buy", + "upgrade", + "yearly", + "monthly", + "template", + "community", + "coming soon", + "comparison", + "detailed", + "information", + "select image source", ] return any(w in s_low for w in common)