From a8f11f32612b352405d9e324130f494b9962278a Mon Sep 17 00:00:00 2001 From: lxm <1274844347@qq.com> Date: Fri, 6 Feb 2026 12:23:57 +0800 Subject: [PATCH] =?UTF-8?q?feat(i18n):=20=E4=B8=BA=E8=AF=AD=E9=9F=B3?= =?UTF-8?q?=E8=AF=86=E5=88=AB=E8=BF=9E=E6=8E=A5=E5=A4=B1=E8=B4=A5=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=A4=9A=E8=AF=AD=E8=A8=80=E9=94=99=E8=AF=AF=E6=8F=90?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在翻译控制器中检测到特定错误信息(如“Xunfei connection failed”或“Socket is not connected”)时,将显示用户友好的本地化提示信息“asrConnectionFailed”,而不是原始技术错误信息。 为此在所有支持的语言文件(zh_cn、zh_hk、zh_tw、en_us等)中添加了对应的翻译条目。 --- lib/core/translations/language/ar_sa.dart | 2 + lib/core/translations/language/bg_bg.dart | 2 + lib/core/translations/language/cs_cz.dart | 2 + lib/core/translations/language/da_dk.dart | 2 + lib/core/translations/language/de_de.dart | 2 + lib/core/translations/language/el_gr.dart | 2 + lib/core/translations/language/en_us.dart | 2 + lib/core/translations/language/es_es.dart | 2 + lib/core/translations/language/et_ee.dart | 23 +- lib/core/translations/language/fa_ir.dart | 26 +- lib/core/translations/language/fi_fi.dart | 2 + lib/core/translations/language/fr_fr.dart | 32 +- lib/core/translations/language/hi_in.dart | 2 + lib/core/translations/language/hr_hr.dart | 2 + lib/core/translations/language/hu_hu.dart | 2 + lib/core/translations/language/id_id.dart | 2 + lib/core/translations/language/is_is.dart | 29 +- lib/core/translations/language/it_it.dart | 2 + lib/core/translations/language/ja_jp.dart | 1 + lib/core/translations/language/ko_kr.dart | 2 + lib/core/translations/language/lt_lt.dart | 2 + lib/core/translations/language/lv_lv.dart | 2 + lib/core/translations/language/ms_my.dart | 2 + lib/core/translations/language/nb_no.dart | 2 + lib/core/translations/language/nl_nl.dart | 2 + lib/core/translations/language/pl_pl.dart | 2 + lib/core/translations/language/pt_pt.dart | 2 + lib/core/translations/language/ro_ro.dart | 2 + lib/core/translations/language/ru_ru.dart | 2 + lib/core/translations/language/sk_sk.dart | 2 + lib/core/translations/language/sl_si.dart | 2 + lib/core/translations/language/sr_rs.dart | 437 ++++++++++++------ lib/core/translations/language/sv_se.dart | 2 + lib/core/translations/language/th_th.dart | 2 + lib/core/translations/language/tl_ph.dart | 2 + lib/core/translations/language/tr_tr.dart | 2 + lib/core/translations/language/uk_ua.dart | 2 + lib/core/translations/language/vi_vn.dart | 2 + lib/core/translations/language/zh_cn.dart | 1 + lib/core/translations/language/zh_hk.dart | 1 + lib/core/translations/language/zh_tw.dart | 1 + .../controllers/translation_controller.dart | 10 +- 42 files changed, 444 insertions(+), 181 deletions(-) diff --git a/lib/core/translations/language/ar_sa.dart b/lib/core/translations/language/ar_sa.dart index 4699dee38..f32f58ad6 100644 --- a/lib/core/translations/language/ar_sa.dart +++ b/lib/core/translations/language/ar_sa.dart @@ -16,6 +16,8 @@ const Map arSA = { "requestTimeout": "انتهت مهلة الطلب", "responseTimeout": "انتهت مهلة الاستجابة", "unknownError": "خطأ غير معروف", + "asrConnectionFailed": + "فشل الاتصال بخدمة التعرف على الصوت. يرجى التحقق من الشبكة والمحاولة مرة أخرى لاحقًا.", // 启动页 "slogan": "تواصل مع العالم، أبعد من مجرد صوت", diff --git a/lib/core/translations/language/bg_bg.dart b/lib/core/translations/language/bg_bg.dart index 6c7f08e13..21bb75b2a 100644 --- a/lib/core/translations/language/bg_bg.dart +++ b/lib/core/translations/language/bg_bg.dart @@ -16,6 +16,8 @@ const Map bgBG = { "requestTimeout": "Изтичане на времето за заявката", "responseTimeout": "Изтичане на времето за отговор", "unknownError": "Неизвестна грешка", + "asrConnectionFailed": + "Неуспешно свързване с услугата за разпознаване на реч. Проверете мрежата или опитайте отново по-късно.", // 启动页 "slogan": "Свързвайки света, отвъд звука", diff --git a/lib/core/translations/language/cs_cz.dart b/lib/core/translations/language/cs_cz.dart index 4c4fd9896..8b5b39bb4 100644 --- a/lib/core/translations/language/cs_cz.dart +++ b/lib/core/translations/language/cs_cz.dart @@ -16,6 +16,8 @@ const Map csCZ = { "requestTimeout": "Vypršel časový limit požadavku", "responseTimeout": "Vypršel časový limit odpovědi", "unknownError": "Neznámá chyba", + "asrConnectionFailed": + "Připojení ke službě rozpoznávání řeči selhalo. Zkontrolujte síť nebo to zkuste znovu později.", // 启动页 "slogan": "Spojujeme svět, za hranice zvuku", diff --git a/lib/core/translations/language/da_dk.dart b/lib/core/translations/language/da_dk.dart index c8c2e4db2..0620cf7e2 100644 --- a/lib/core/translations/language/da_dk.dart +++ b/lib/core/translations/language/da_dk.dart @@ -16,6 +16,8 @@ const Map daDK = { "requestTimeout": "Anmodning timeout", "responseTimeout": "Svar timeout", "unknownError": "Ukendt fejl", + "asrConnectionFailed": + "Forbindelsen til talegenkendelsestjenesten mislykkedes. Kontroller netværket, eller prøv igen senere.", // 启动页 "slogan": "Forbind verden, ud over lyd", diff --git a/lib/core/translations/language/de_de.dart b/lib/core/translations/language/de_de.dart index dabb17783..63c8cf896 100644 --- a/lib/core/translations/language/de_de.dart +++ b/lib/core/translations/language/de_de.dart @@ -16,6 +16,8 @@ const Map deDE = { "requestTimeout": "Anfragezeitüberschreitung", "responseTimeout": "Antwortzeitüberschreitung", "unknownError": "Unbekannter Fehler", + "asrConnectionFailed": + "Verbindung zum Spracherkennungsdienst fehlgeschlagen. Bitte Netzwerk prüfen oder es später erneut versuchen.", // 启动页 "slogan": "Die Welt verbinden, jenseits der Stimme", diff --git a/lib/core/translations/language/el_gr.dart b/lib/core/translations/language/el_gr.dart index dca0f0962..45fcb7cf4 100644 --- a/lib/core/translations/language/el_gr.dart +++ b/lib/core/translations/language/el_gr.dart @@ -16,6 +16,8 @@ const Map elGR = { "requestTimeout": "Λήξη χρόνου αιτήματος", "responseTimeout": "Λήξη χρόνου απάντησης", "unknownError": "Άγνωστο σφάλμα", + "asrConnectionFailed": + "Η σύνδεση με την υπηρεσία αναγνώρισης ομιλίας απέτυχε. Ελέγξτε το δίκτυο ή δοκιμάστε ξανά αργότερα.", // 启动页 "slogan": "Συνδέοντας τον κόσμο, πέρα από τον ήχο", diff --git a/lib/core/translations/language/en_us.dart b/lib/core/translations/language/en_us.dart index fae882d12..e84efcb9d 100644 --- a/lib/core/translations/language/en_us.dart +++ b/lib/core/translations/language/en_us.dart @@ -16,6 +16,8 @@ const Map enUS = { "requestTimeout": "Request timeout", "responseTimeout": "Response timeout", "unknownError": "Unknown error", + "asrConnectionFailed": + "Speech recognition service connection failed. Please check network and try again.", // 启动页 "slogan": "Connect the World, Beyond Voice", diff --git a/lib/core/translations/language/es_es.dart b/lib/core/translations/language/es_es.dart index b90fee3db..ffd5bc27e 100644 --- a/lib/core/translations/language/es_es.dart +++ b/lib/core/translations/language/es_es.dart @@ -16,6 +16,8 @@ const Map esES = { "requestTimeout": "Tiempo de solicitud agotado", "responseTimeout": "Tiempo de respuesta agotado", "unknownError": "Error desconocido", + "asrConnectionFailed": + "La conexión con el servicio de reconocimiento de voz ha fallado. Comprueba la red o inténtalo de nuevo más tarde.", // 启动页 "slogan": "Conectando el mundo, más allá del sonido", diff --git a/lib/core/translations/language/et_ee.dart b/lib/core/translations/language/et_ee.dart index 673286243..c276e8310 100644 --- a/lib/core/translations/language/et_ee.dart +++ b/lib/core/translations/language/et_ee.dart @@ -16,6 +16,8 @@ const Map etEE = { "requestTimeout": "Taotluse ajalõpp", "responseTimeout": "Vastuse ajalõpp", "unknownError": "Tundmatu viga", + "asrConnectionFailed": + "Ühendus kõnetuvastusteenusega ebaõnnestus. Kontrollige võrku või proovige hiljem uuesti.", // 启动页 "slogan": "Maailma ühendamine, heli tagant", @@ -439,15 +441,22 @@ const Map etEE = { 'meetingRecordEndAndSave': 'Lõpeta ja salvesta', // 结束录音并保存 'meetingRecordEndWithoutSave': 'Lõpeta salvestamata', // 结束录音不保存 'meetingRecordContinueInBackground': 'Jätka salvestamist taustal', // 后台继续录音 - 'meetingRecordStopTimeout': 'Salvestuse peatamise ajalimiit sai täis. Proovi uuesti.', // 结束录音超时,请重试 - 'meetingRecordStopFailed': 'Salvestust ei õnnestunud peatada. Proovi uuesti.', // 结束录音失败,请重试 - 'meetingRecordSaveFailed': 'Salvestust ei õnnestunud salvestada. Proovi uuesti.', // 保存录音失败,请重试 + 'meetingRecordStopTimeout': + 'Salvestuse peatamise ajalimiit sai täis. Proovi uuesti.', // 结束录音超时,请重试 + 'meetingRecordStopFailed': + 'Salvestust ei õnnestunud peatada. Proovi uuesti.', // 结束录音失败,请重试 + 'meetingRecordSaveFailed': + 'Salvestust ei õnnestunud salvestada. Proovi uuesti.', // 保存录音失败,请重试 'meetingRecordRecordingNotificationTitle': 'Salvestamine käib', // 录音进行中 - 'meetingRecordRecordingNotificationBody': 'Salvestamine taustal. Puuduta, et naasta rakendusse.', // 正在后台录音,点击返回应用 + 'meetingRecordRecordingNotificationBody': + 'Salvestamine taustal. Puuduta, et naasta rakendusse.', // 正在后台录音,点击返回应用 'overlayPermissionTitle': 'Kuva teiste rakenduste peal', // 悬浮窗权限 - 'overlayPermissionTranslationDesc': 'Tõlketulemuste kuvamiseks kõnede või heli/video tõlke ajal vajame ülekatte luba. See võimaldab sul näha reaalajas tõlkeid ka teiste rakenduste kasutamisel.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 - 'overlayPermissionRecordingDesc': '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.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 + 'overlayPermissionTranslationDesc': + 'Tõlketulemuste kuvamiseks kõnede või heli/video tõlke ajal vajame ülekatte luba. See võimaldab sul näha reaalajas tõlkeid ka teiste rakenduste kasutamisel.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 + 'overlayPermissionRecordingDesc': + '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...', diff --git a/lib/core/translations/language/fa_ir.dart b/lib/core/translations/language/fa_ir.dart index 93f4dbec9..4dfe18647 100644 --- a/lib/core/translations/language/fa_ir.dart +++ b/lib/core/translations/language/fa_ir.dart @@ -16,6 +16,8 @@ const Map faIR = { "requestTimeout": "پایان مهلت درخواست", "responseTimeout": "پایان مهلت پاسخ", "unknownError": "خطای ناشناخته", + "asrConnectionFailed": + "اتصال به سرویس تشخیص گفتار ناموفق بود. لطفاً شبکه را بررسی کرده و بعداً دوباره تلاش کنید.", // 启动页 "slogan": "دنیا را متصل کن، فراتر از صدا", @@ -437,19 +439,27 @@ const Map faIR = { 'callRecording': 'ضبط تماس', 'importAudio': 'وارد کردن صدا', 'meetingRecordExitTitle': 'خروج از ضبط', // 退出录音 - 'meetingRecordExitMessage': 'قبل از خروج انتخاب کنید چه کاری انجام شود', // 请选择离开后的操作 + 'meetingRecordExitMessage': + 'قبل از خروج انتخاب کنید چه کاری انجام شود', // 请选择离开后的操作 'meetingRecordEndAndSave': 'پایان و ذخیره', // 结束录音并保存 'meetingRecordEndWithoutSave': 'پایان بدون ذخیره', // 结束录音不保存 'meetingRecordContinueInBackground': 'ادامهٔ ضبط در پس‌زمینه', // 后台继续录音 - 'meetingRecordStopTimeout': 'مهلت توقف ضبط به پایان رسید. لطفاً دوباره تلاش کنید.', // 结束录音超时,请重试 - 'meetingRecordStopFailed': 'توقف ضبط ناموفق بود. لطفاً دوباره تلاش کنید.', // 结束录音失败,请重试 - 'meetingRecordSaveFailed': 'ذخیرهٔ ضبط ناموفق بود. لطفاً دوباره تلاش کنید.', // 保存录音失败,请重试 + 'meetingRecordStopTimeout': + 'مهلت توقف ضبط به پایان رسید. لطفاً دوباره تلاش کنید.', // 结束录音超时,请重试 + 'meetingRecordStopFailed': + 'توقف ضبط ناموفق بود. لطفاً دوباره تلاش کنید.', // 结束录音失败,请重试 + 'meetingRecordSaveFailed': + 'ذخیرهٔ ضبط ناموفق بود. لطفاً دوباره تلاش کنید.', // 保存录音失败,请重试 'meetingRecordRecordingNotificationTitle': 'ضبط در حال انجام است', // 录音进行中 - 'meetingRecordRecordingNotificationBody': 'در پس‌زمینه در حال ضبط است. برای بازگشت به برنامه لمس کنید.', // 正在后台录音,点击返回应用 + 'meetingRecordRecordingNotificationBody': + 'در پس‌زمینه در حال ضبط است. برای بازگشت به برنامه لمس کنید.', // 正在后台录音,点击返回应用 'overlayPermissionTitle': 'نمایش روی سایر برنامه‌ها', // 悬浮窗权限 - 'overlayPermissionTranslationDesc': 'برای نمایش نتایج ترجمه هنگام تماس‌ها یا ترجمهٔ صوت/ویدئو، به مجوز نمایش روی سایر برنامه‌ها نیاز داریم. این کار به شما اجازه می‌دهد هنگام استفاده از برنامه‌های دیگر، ترجمهٔ هم‌زمان را ببینید.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 - 'overlayPermissionRecordingDesc': 'برای نمایش نوار شناور ضبط (زمان‌سنج/توقف موقت/ادامه) هنگام ضبط، به مجوز نمایش روی سایر برنامه‌ها نیاز داریم.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 - 'overlayPermissionOpenSettingsFailed': 'امکان باز کردن خودکار تنظیمات سیستم نیست. لطفاً تنظیمات را باز کرده و مجوز نمایش روی سایر برنامه‌ها را به‌صورت دستی فعال کنید.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 + 'overlayPermissionTranslationDesc': + 'برای نمایش نتایج ترجمه هنگام تماس‌ها یا ترجمهٔ صوت/ویدئو، به مجوز نمایش روی سایر برنامه‌ها نیاز داریم. این کار به شما اجازه می‌دهد هنگام استفاده از برنامه‌های دیگر، ترجمهٔ هم‌زمان را ببینید.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 + 'overlayPermissionRecordingDesc': + 'برای نمایش نوار شناور ضبط (زمان‌سنج/توقف موقت/ادامه) هنگام ضبط، به مجوز نمایش روی سایر برنامه‌ها نیاز داریم.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 + 'overlayPermissionOpenSettingsFailed': + 'امکان باز کردن خودکار تنظیمات سیستم نیست. لطفاً تنظیمات را باز کرده و مجوز نمایش روی سایر برنامه‌ها را به‌صورت دستی فعال کنید.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 'transcribing': 'در حال تبدیل به متن...', 'summarizing': 'در حال خلاصه‌سازی...', 'analyzing': 'در حال تجزیه و تحلیل...', diff --git a/lib/core/translations/language/fi_fi.dart b/lib/core/translations/language/fi_fi.dart index 30c1eb099..372098c28 100644 --- a/lib/core/translations/language/fi_fi.dart +++ b/lib/core/translations/language/fi_fi.dart @@ -16,6 +16,8 @@ const Map fiFI = { "requestTimeout": "Pyynnön aikakatkaisu", "responseTimeout": "Vastauksen aikakatkaisu", "unknownError": "Tuntematon virhe", + "asrConnectionFailed": + "Yhteys puheentunnistuspalveluun epäonnistui. Tarkista verkkoyhteys tai yritä myöhemmin uudelleen.", // 启动页 "slogan": "Maailman yhdistäminen, äänen tuolla puolen", diff --git a/lib/core/translations/language/fr_fr.dart b/lib/core/translations/language/fr_fr.dart index b6a26d25f..a643d684c 100644 --- a/lib/core/translations/language/fr_fr.dart +++ b/lib/core/translations/language/fr_fr.dart @@ -16,6 +16,8 @@ const Map frFR = { "requestTimeout": "Délai de demande dépassé", "responseTimeout": "Délai de réponse dépassé", "unknownError": "Erreur inconnue", + "asrConnectionFailed": + "La connexion au service de reconnaissance vocale a échoué. Vérifiez votre connexion réseau ou réessayez plus tard.", // 启动页 "slogan": "Connecter le monde, au-delà de la voix", @@ -442,19 +444,28 @@ const Map frFR = { 'callRecording': 'Call Recording', 'importAudio': 'Import Audio', 'meetingRecordExitTitle': 'Quitter l\'enregistrement', // 退出录音 - 'meetingRecordExitMessage': 'Choisissez quoi faire avant de quitter', // 请选择离开后的操作 + 'meetingRecordExitMessage': + 'Choisissez quoi faire avant de quitter', // 请选择离开后的操作 'meetingRecordEndAndSave': 'Terminer et enregistrer', // 结束录音并保存 'meetingRecordEndWithoutSave': 'Terminer sans enregistrer', // 结束录音不保存 - 'meetingRecordContinueInBackground': 'Continuer l\'enregistrement en arrière-plan', // 后台继续录音 - 'meetingRecordStopTimeout': 'Le délai d\'arrêt de l\'enregistrement a expiré. Veuillez réessayer.', // 结束录音超时,请重试 - 'meetingRecordStopFailed': 'Impossible d\'arrêter l\'enregistrement. Veuillez réessayer.', // 结束录音失败,请重试 - 'meetingRecordSaveFailed': 'Impossible de sauvegarder l\'enregistrement. Veuillez réessayer.', // 保存录音失败,请重试 + 'meetingRecordContinueInBackground': + 'Continuer l\'enregistrement en arrière-plan', // 后台继续录音 + 'meetingRecordStopTimeout': + 'Le délai d\'arrêt de l\'enregistrement a expiré. Veuillez réessayer.', // 结束录音超时,请重试 + 'meetingRecordStopFailed': + 'Impossible d\'arrêter l\'enregistrement. Veuillez réessayer.', // 结束录音失败,请重试 + 'meetingRecordSaveFailed': + 'Impossible de sauvegarder l\'enregistrement. Veuillez réessayer.', // 保存录音失败,请重试 'meetingRecordRecordingNotificationTitle': 'Enregistrement en cours', // 录音进行中 - 'meetingRecordRecordingNotificationBody': 'Enregistrement en arrière-plan. Touchez pour revenir à l\'application.', // 正在后台录音,点击返回应用 + 'meetingRecordRecordingNotificationBody': + 'Enregistrement en arrière-plan. Touchez pour revenir à l\'application.', // 正在后台录音,点击返回应用 'overlayPermissionTitle': 'Afficher par-dessus les autres applis', // 悬浮窗权限 - 'overlayPermissionTranslationDesc': 'Pour afficher les résultats de traduction pendant les appels ou la traduction audio/vidéo, nous avons besoin de l\'autorisation d\'affichage par-dessus les autres applis. Cela vous permet de voir les traductions en temps réel tout en utilisant d\'autres applis.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 - 'overlayPermissionRecordingDesc': 'Pour afficher la barre flottante d\'enregistrement (minuteur/pause/reprendre) pendant l\'enregistrement, nous avons besoin de l\'autorisation d\'affichage par-dessus les autres applis.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 - 'overlayPermissionOpenSettingsFailed': 'Impossible d\'ouvrir automatiquement les réglages système. Ouvrez Réglages et activez manuellement l\'autorisation d\'affichage par-dessus les autres applis.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 + 'overlayPermissionTranslationDesc': + 'Pour afficher les résultats de traduction pendant les appels ou la traduction audio/vidéo, nous avons besoin de l\'autorisation d\'affichage par-dessus les autres applis. Cela vous permet de voir les traductions en temps réel tout en utilisant d\'autres applis.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 + 'overlayPermissionRecordingDesc': + 'Pour afficher la barre flottante d\'enregistrement (minuteur/pause/reprendre) pendant l\'enregistrement, nous avons besoin de l\'autorisation d\'affichage par-dessus les autres applis.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 + 'overlayPermissionOpenSettingsFailed': + 'Impossible d\'ouvrir automatiquement les réglages système. Ouvrez Réglages et activez manuellement l\'autorisation d\'affichage par-dessus les autres applis.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 'transcribing': 'Transcribing...', 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', @@ -1102,7 +1113,8 @@ const Map frFR = { 'native.notification.music.next': 'Suivant', // 下一首 'native.notification.music.play': 'Lecture', // 播放 'native.notification.music.pause': 'Pause', // 暂停 - 'native.notification.qqMusic.playing': 'Musique en cours de lecture', // 正在播放音乐 + 'native.notification.qqMusic.playing': + 'Musique en cours de lecture', // 正在播放音乐 //permission_util.dart 'permissionUtilNeed': 'Need ', diff --git a/lib/core/translations/language/hi_in.dart b/lib/core/translations/language/hi_in.dart index 7923b8922..7cb9d1019 100644 --- a/lib/core/translations/language/hi_in.dart +++ b/lib/core/translations/language/hi_in.dart @@ -16,6 +16,8 @@ const Map hiIN = { "requestTimeout": "अनुरोध टाइमआउट", "responseTimeout": "प्रतिक्रिया टाइमआउट", "unknownError": "अज्ञात त्रुटि", + "asrConnectionFailed": + "वॉइस रिकग्निशन सेवा से कनेक्शन विफल रहा। कृपया नेटवर्क जांचें और बाद में फिर से प्रयास करें।", // 启动页 "slogan": "दुनिया को जोड़ना, ध्वनि से परे", diff --git a/lib/core/translations/language/hr_hr.dart b/lib/core/translations/language/hr_hr.dart index 84abc5968..e30a88641 100644 --- a/lib/core/translations/language/hr_hr.dart +++ b/lib/core/translations/language/hr_hr.dart @@ -16,6 +16,8 @@ const Map hrHR = { "requestTimeout": "Vrijeme za zahtjev je isteklo", "responseTimeout": "Vrijeme za odgovor je isteklo", "unknownError": "Nepoznata greška", + "asrConnectionFailed": + "Povezivanje s uslugom za prepoznavanje govora nije uspjelo. Provjerite mrežu i pokušajte ponovno kasnije.", // 启动页 "slogan": "Povezivanje svijeta, izvan zvuka", diff --git a/lib/core/translations/language/hu_hu.dart b/lib/core/translations/language/hu_hu.dart index 264df51f5..87e1b5127 100644 --- a/lib/core/translations/language/hu_hu.dart +++ b/lib/core/translations/language/hu_hu.dart @@ -16,6 +16,8 @@ const Map huHU = { "requestTimeout": "Kérési időtúllépés", "responseTimeout": "Válaszidő túllépés", "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.", // 启动页 "slogan": "A világ összekötése, a hangon túl", diff --git a/lib/core/translations/language/id_id.dart b/lib/core/translations/language/id_id.dart index f237a00ee..7a7d23721 100644 --- a/lib/core/translations/language/id_id.dart +++ b/lib/core/translations/language/id_id.dart @@ -16,6 +16,8 @@ const Map idID = { "requestTimeout": "Waktu permintaan habis", "responseTimeout": "Waktu respons habis", "unknownError": "Kesalahan tidak diketahui", + "asrConnectionFailed": + "Koneksi ke layanan pengenalan suara gagal. Periksa jaringan Anda lalu coba lagi nanti.", // 启动页 "slogan": "Menghubungkan dunia, melampaui suara", diff --git a/lib/core/translations/language/is_is.dart b/lib/core/translations/language/is_is.dart index 75790f49b..aa8ff8f0c 100644 --- a/lib/core/translations/language/is_is.dart +++ b/lib/core/translations/language/is_is.dart @@ -16,6 +16,8 @@ const Map isIS = { "requestTimeout": "Beiðni rann út á tíma", "responseTimeout": "Svar rann út á tíma", "unknownError": "Óþekkt villa", + "asrConnectionFailed": + "Tenging við talgreiningarþjónustu mistókst. Athugaðu netsambandið eða reyndu aftur síðar.", // 启动页 "slogan": "Að tengja heiminn, handan hljóðsins", @@ -439,19 +441,28 @@ const Map isIS = { 'callRecording': 'Call Recording', 'importAudio': 'Import Audio', 'meetingRecordExitTitle': 'Hætta í upptöku', // 退出录音 - 'meetingRecordExitMessage': 'Veldu hvað á að gera áður en þú ferð', // 请选择离开后的操作 + 'meetingRecordExitMessage': + 'Veldu hvað á að gera áður en þú ferð', // 请选择离开后的操作 'meetingRecordEndAndSave': 'Ljúka og vista', // 结束录音并保存 'meetingRecordEndWithoutSave': 'Ljúka án vistunar', // 结束录音不保存 - 'meetingRecordContinueInBackground': 'Halda upptöku áfram í bakgrunni', // 后台继续录音 - 'meetingRecordStopTimeout': 'Tímamörk fyrir stöðvun upptöku runnu út. Reyndu aftur.', // 结束录音超时,请重试 - 'meetingRecordStopFailed': 'Tókst ekki að stöðva upptökuna. Reyndu aftur.', // 结束录音失败,请重试 - 'meetingRecordSaveFailed': 'Tókst ekki að vista upptökuna. Reyndu aftur.', // 保存录音失败,请重试 + 'meetingRecordContinueInBackground': + 'Halda upptöku áfram í bakgrunni', // 后台继续录音 + 'meetingRecordStopTimeout': + 'Tímamörk fyrir stöðvun upptöku runnu út. Reyndu aftur.', // 结束录音超时,请重试 + 'meetingRecordStopFailed': + 'Tókst ekki að stöðva upptökuna. Reyndu aftur.', // 结束录音失败,请重试 + 'meetingRecordSaveFailed': + 'Tókst ekki að vista upptökuna. Reyndu aftur.', // 保存录音失败,请重试 'meetingRecordRecordingNotificationTitle': 'Upptaka í gangi', // 录音进行中 - 'meetingRecordRecordingNotificationBody': 'Upptaka í bakgrunni. Pikkaðu til að fara aftur í appið.', // 正在后台录音,点击返回应用 + 'meetingRecordRecordingNotificationBody': + 'Upptaka í bakgrunni. Pikkaðu til að fara aftur í appið.', // 正在后台录音,点击返回应用 'overlayPermissionTitle': 'Birta yfir öðrum öppum', // 悬浮窗权限 - 'overlayPermissionTranslationDesc': 'Til að sýna þýðingarniðurstöður í símtölum eða við hljóð-/myndbandsþýðingu þurfum við yfirlagaleyfi. Það gerir þér kleift að sjá rauntímaþýðingar á meðan þú notar önnur öpp.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 - 'overlayPermissionRecordingDesc': 'Til að sýna fljótandi upptökustiku (tími/pása/halda áfram) meðan á upptöku stendur þurfum við yfirlagaleyfi.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 - 'overlayPermissionOpenSettingsFailed': 'Ekki tókst að opna kerfisstillingar sjálfkrafa. Opnaðu Stillingar og virkjaðu yfirlagaleyfi handvirkt.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 + 'overlayPermissionTranslationDesc': + 'Til að sýna þýðingarniðurstöður í símtölum eða við hljóð-/myndbandsþýðingu þurfum við yfirlagaleyfi. Það gerir þér kleift að sjá rauntímaþýðingar á meðan þú notar önnur öpp.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 + 'overlayPermissionRecordingDesc': + 'Til að sýna fljótandi upptökustiku (tími/pása/halda áfram) meðan á upptöku stendur þurfum við yfirlagaleyfi.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 + 'overlayPermissionOpenSettingsFailed': + 'Ekki tókst að opna kerfisstillingar sjálfkrafa. Opnaðu Stillingar og virkjaðu yfirlagaleyfi handvirkt.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 'transcribing': 'Transcribing...', 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', diff --git a/lib/core/translations/language/it_it.dart b/lib/core/translations/language/it_it.dart index 55f6ea4bf..39e6d2301 100644 --- a/lib/core/translations/language/it_it.dart +++ b/lib/core/translations/language/it_it.dart @@ -17,6 +17,8 @@ const Map itIT = { "requestTimeout": "Timeout della richiesta", "responseTimeout": "Timeout della risposta", "unknownError": "Errore sconosciuto", + "asrConnectionFailed": + "Connessione al servizio di riconoscimento vocale non riuscita. Controlla la rete o riprova più tardi.", // 启动页 "slogan": "Connettere il mondo, oltre il suono", diff --git a/lib/core/translations/language/ja_jp.dart b/lib/core/translations/language/ja_jp.dart index ea62a1e32..94b35c980 100644 --- a/lib/core/translations/language/ja_jp.dart +++ b/lib/core/translations/language/ja_jp.dart @@ -16,6 +16,7 @@ const Map jaJP = { "requestTimeout": "リクエストタイムアウト", "responseTimeout": "応答タイムアウト", "unknownError": "不明なエラー", + "asrConnectionFailed": "音声認識サービスへの接続に失敗しました。ネットワークを確認して、しばらくしてからもう一度お試しください。", // 启动页 "slogan": "世界をつなぐ、音声を超えて", diff --git a/lib/core/translations/language/ko_kr.dart b/lib/core/translations/language/ko_kr.dart index 3b2dd7431..c4fc9d188 100644 --- a/lib/core/translations/language/ko_kr.dart +++ b/lib/core/translations/language/ko_kr.dart @@ -16,6 +16,8 @@ const Map koKR = { "requestTimeout": "요청 시간 초과", "responseTimeout": "응답 시간 초과", "unknownError": "알 수 없는 오류", + "asrConnectionFailed": + "음성 인식 서비스 연결에 실패했습니다. 네트워크를 확인한 후 다시 시도해 주세요.", // 启动页 "slogan": "세상을 연결하다, 소리를 넘어서", diff --git a/lib/core/translations/language/lt_lt.dart b/lib/core/translations/language/lt_lt.dart index 3b4acc83e..65ef522d5 100644 --- a/lib/core/translations/language/lt_lt.dart +++ b/lib/core/translations/language/lt_lt.dart @@ -17,6 +17,8 @@ const Map ltLT = { "requestTimeout": "Užklausos laikas baigėsi", "responseTimeout": "Atsakymo laikas baigėsi", "unknownError": "Nežinoma klaida", + "asrConnectionFailed": + "Nepavyko prisijungti prie kalbos atpažinimo paslaugos. Patikrinkite tinklą arba bandykite vėliau dar kartą.", // 启动页 "slogan": "Jungiantis pasaulį, anapus garso", diff --git a/lib/core/translations/language/lv_lv.dart b/lib/core/translations/language/lv_lv.dart index 221d04b58..d95d3bbad 100644 --- a/lib/core/translations/language/lv_lv.dart +++ b/lib/core/translations/language/lv_lv.dart @@ -16,6 +16,8 @@ const Map lvLV = { "requestTimeout": "Pieprasījuma taimauts", "responseTimeout": "Atbildes taimauts", "unknownError": "Nezināma kļūda", + "asrConnectionFailed": + "Neizdevās izveidot savienojumu ar runas atpazīšanas pakalpojumu. Pārbaudiet tīklu vai mēģiniet vēlreiz vēlāk.", // 启动页 "slogan": "Pasaules savienošana, pāri skaņai", diff --git a/lib/core/translations/language/ms_my.dart b/lib/core/translations/language/ms_my.dart index 82df1892a..05b00bb05 100644 --- a/lib/core/translations/language/ms_my.dart +++ b/lib/core/translations/language/ms_my.dart @@ -16,6 +16,8 @@ const Map msMY = { "requestTimeout": "Tamat masa permintaan", "responseTimeout": "Tamat masa tindak balas", "unknownError": "Ralat tidak diketahui", + "asrConnectionFailed": + "Sambungan ke perkhidmatan pengecaman suara gagal. Sila semak rangkaian atau cuba lagi nanti.", // 启动页 "slogan": "Menghubungkan dunia, melampaui suara", diff --git a/lib/core/translations/language/nb_no.dart b/lib/core/translations/language/nb_no.dart index 6e4e39eb3..9dfc034d8 100644 --- a/lib/core/translations/language/nb_no.dart +++ b/lib/core/translations/language/nb_no.dart @@ -16,6 +16,8 @@ const Map nbNO = { "requestTimeout": "Tidsavbrudd for forespørsel", "responseTimeout": "Tidsavbrudd for svar", "unknownError": "Ukjent feil", + "asrConnectionFailed": + "Tilkobling til talegjenkjenningstjenesten mislyktes. Kontroller nettverket eller prøv igjen senere.", // 启动页 "slogan": "Kobler sammen verden, hinsides lyd", diff --git a/lib/core/translations/language/nl_nl.dart b/lib/core/translations/language/nl_nl.dart index 1d9f0807d..8778ee2a0 100644 --- a/lib/core/translations/language/nl_nl.dart +++ b/lib/core/translations/language/nl_nl.dart @@ -16,6 +16,8 @@ const Map nlNL = { "requestTimeout": "Verzoektime-out", "responseTimeout": "Reactietime-out", "unknownError": "Onbekende fout", + "asrConnectionFailed": + "Verbinding met de spraakherkenningsservice is mislukt. Controleer de netwerkverbinding of probeer het later opnieuw.", // 启动页 "slogan": "De wereld verbinden, voorbij het geluid", diff --git a/lib/core/translations/language/pl_pl.dart b/lib/core/translations/language/pl_pl.dart index 5e237f929..de1ef1759 100644 --- a/lib/core/translations/language/pl_pl.dart +++ b/lib/core/translations/language/pl_pl.dart @@ -16,6 +16,8 @@ const Map plPL = { "requestTimeout": "Przekroczono czas oczekiwania na żądanie", "responseTimeout": "Przekroczono czas oczekiwania na odpowiedź", "unknownError": "Nieznany błąd", + "asrConnectionFailed": + "Nie udało się połączyć z usługą rozpoznawania mowy. Sprawdź sieć lub spróbuj ponownie później.", // 启动页 "slogan": "Łącząc świat, poza dźwiękiem", diff --git a/lib/core/translations/language/pt_pt.dart b/lib/core/translations/language/pt_pt.dart index 2c229467f..b30e3be3e 100644 --- a/lib/core/translations/language/pt_pt.dart +++ b/lib/core/translations/language/pt_pt.dart @@ -16,6 +16,8 @@ const Map ptPT = { "requestTimeout": "Tempo Limite do Pedido", "responseTimeout": "Tempo Limite da Resposta", "unknownError": "Erro Desconhecido", + "asrConnectionFailed": + "Falha na ligação ao serviço de reconhecimento de voz. Verifique a rede ou tente novamente mais tarde.", // 启动页 "slogan": "Conectando o mundo, para além do som", diff --git a/lib/core/translations/language/ro_ro.dart b/lib/core/translations/language/ro_ro.dart index 67073e2cb..7b10b1051 100644 --- a/lib/core/translations/language/ro_ro.dart +++ b/lib/core/translations/language/ro_ro.dart @@ -16,6 +16,8 @@ const Map roRO = { "requestTimeout": "Timpul de cerere a expirat", "responseTimeout": "Timpul de răspuns a expirat", "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.", // 启动页 "slogan": "Conectând lumea, dincolo de sunet", diff --git a/lib/core/translations/language/ru_ru.dart b/lib/core/translations/language/ru_ru.dart index 13b6be6c8..7e1a9d51f 100644 --- a/lib/core/translations/language/ru_ru.dart +++ b/lib/core/translations/language/ru_ru.dart @@ -16,6 +16,8 @@ const Map ruRU = { "requestTimeout": "Тайм-аут запроса", "responseTimeout": "Тайм-аут ответа", "unknownError": "Неизвестная ошибка", + "asrConnectionFailed": + "Не удалось подключиться к службе распознавания речи. Проверьте сеть и попробуйте ещё раз позже.", // 启动页 "slogan": "Соединяя мир, за пределами звука", diff --git a/lib/core/translations/language/sk_sk.dart b/lib/core/translations/language/sk_sk.dart index 55fcc49aa..91982088f 100644 --- a/lib/core/translations/language/sk_sk.dart +++ b/lib/core/translations/language/sk_sk.dart @@ -16,6 +16,8 @@ const Map skSK = { "requestTimeout": "Časový limit požiadavky", "responseTimeout": "Časový limit odozvy", "unknownError": "Neznáma chyba", + "asrConnectionFailed": + "Pripojenie k službe rozpoznávania reči zlyhalo. Skontrolujte sieť alebo to skúste znova neskôr.", // 启动页 "slogan": "Pripájanie sveta, za hranicami zvuku", diff --git a/lib/core/translations/language/sl_si.dart b/lib/core/translations/language/sl_si.dart index fd35899a0..4f4df5d74 100644 --- a/lib/core/translations/language/sl_si.dart +++ b/lib/core/translations/language/sl_si.dart @@ -16,6 +16,8 @@ const Map slSI = { "requestTimeout": "Čas za zahtevo je potekel", "responseTimeout": "Čas za odgovor je potekel", "unknownError": "Neznana napaka", + "asrConnectionFailed": + "Povezava s storitvijo za prepoznavanje govora ni uspela. Preverite omrežje ali poskusite znova pozneje.", // 启动页 "slogan": "Povezovanje sveta, onkraj zvoka", diff --git a/lib/core/translations/language/sr_rs.dart b/lib/core/translations/language/sr_rs.dart index 3fca5785d..2d23f747b 100644 --- a/lib/core/translations/language/sr_rs.dart +++ b/lib/core/translations/language/sr_rs.dart @@ -16,6 +16,8 @@ const Map srRS = { "requestTimeout": "Isteklo vreme za zahtev", "responseTimeout": "Isteklo vreme za odgovor", "unknownError": "Nepoznata greška", + "asrConnectionFailed": + "Povezivanje sa servisom za prepoznavanje govora nije uspelo. Proverite mrežu i pokušajte ponovo kasnije.", // 启动页 "slogan": "Povezivanje sveta, izvan zvuka", @@ -91,7 +93,8 @@ const Map srRS = { "tip": "Savet", "pleaseEnterCompleteCode": "Unesite kompletan verifikacioni kod", "loginFailed": "Neuspešno prijavljivanje, pokušajte ponovo", - 'pleaseAcceptPrivacyPolicy': 'Prvo pročitajte i prihvatite Politiku privatnosti i Korisnički ugovor', + 'pleaseAcceptPrivacyPolicy': + 'Prvo pročitajte i prihvatite Politiku privatnosti i Korisnički ugovor', "enterVerificationCode": "Unesite verifikacioni kod", "verificationCodeSentTo": "Verifikacioni kod je poslat na", "resendVerificationCode": "Ponovo pošalji verifikacioni kod", @@ -100,7 +103,8 @@ const Map srRS = { // 隐私政策弹窗 "loginDeclaration": "Voitrans izjava", // Voitrans 声明 - "welcomeToThisApp": "Dobrodošli u Voitrans, molimo vas da pažljivo pročitate", // 欢迎使用Voitrans,请充分阅读 + "welcomeToThisApp": + "Dobrodošli u Voitrans, molimo vas da pažljivo pročitate", // 欢迎使用Voitrans,请充分阅读 // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": @@ -116,24 +120,30 @@ const Map srRS = { "signal": "Signal", "deviceId": "ID uređaja", "firmwareVersion": "Verzija firmvera", - "disconnectedDevice": "Nijedan uređaj nije povezan, kliknite na dugme ispod da biste se povezali", + "disconnectedDevice": + "Nijedan uređaj nije povezan, kliknite na dugme ispod da biste se povezali", "connectDevice": "Poveži uređaj", "topAiExperiences": "Vrhunska AI iskustva", "aiAssistant": "AI sveobuhvatni asistent", - "aiAssistantInfo": "Ekskluzivni konsultant 24/7, odgovara na pitanja, daje predloge", + "aiAssistantInfo": + "Ekskluzivni konsultant 24/7, odgovara na pitanja, daje predloge", "interpretation": "Simultano prevođenje", - "simultaneousInterpretationInfo": "Prevođenje u realnom vremenu na 80+ jezika, bezbrižna putovanja u inostranstvo", + "simultaneousInterpretationInfo": + "Prevođenje u realnom vremenu na 80+ jezika, bezbrižna putovanja u inostranstvo", "aiCompanion": "Porodični pratilac", "aiCompanionInfo": "Razume vas, toplo društvo", "homeSlogan": "Povezivanje sveta, izvan zvuka", - "turnEarphones": "Otvorite futrolu za punjenje slušalica i stavite slušalice u uši", + "turnEarphones": + "Otvorite futrolu za punjenje slušalica i stavite slušalice u uši", "currentlyConnected": "Trenutno povezano:", "unsystemSetup": "Idite na sistemska podešavanja", "talkLater": "Kasnije", "initializing": "Inicijalizacija...", - "bluetoothInitializationFailure": "Neuspešna inicijalizacija Bluetooth servisa", + "bluetoothInitializationFailure": + "Neuspešna inicijalizacija Bluetooth servisa", "checkingPermissions": "Provera dozvola...", - "lackPermissions": "Nedostaju Bluetooth dozvole i je potrebno omogućiti pristup lokaciji", + "lackPermissions": + "Nedostaju Bluetooth dozvole i je potrebno omogućiti pristup lokaciji", "searchingDevice": "Pretraga uređaja...", "findConnectedDevice": "Pronađen povezan uređaj", "notFound": "Nije pronađen povezan Bluetooth uređaj", @@ -176,7 +186,8 @@ const Map srRS = { "healthConsultant": "Višenamenski AI ćaskanje", "healthConsultantInfo": "Nudi više funkcija AI ćaskanja", "conferenceAssistant": "Asistent za poslovne sastanke", - "conferenceAssistantInfo": "Beleženje zapisnika u realnom vremenu, višejezično prevođenje", + "conferenceAssistantInfo": + "Beleženje zapisnika u realnom vremenu, višejezično prevođenje", "usageStats": "Statistika korišćenja", "usageStatsInfo": "Pregledajte vaše korišćenje aplikacije", "scene": "Scena", @@ -219,7 +230,8 @@ const Map srRS = { "transcriptBytes": "Transcript Bytes", // 通知文案 "loadFailed": "Load Failed", - "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", + "statsLoadFailedTryLater": + "Statistics failed to load. Please try again later.", "cleanupComplete": "Cleanup Complete", "cleanedOldData": "Cleaned data older than 90 days", "exportFeature": "Export Feature", @@ -275,8 +287,10 @@ const Map srRS = { 'copyrightVoitrans': '© 2025 Voitrans Technologies', // 会议商品页描述 - 'meetingHeaderDesc1': 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': 'Suitable for business meetings, class notes, and interview minutes.', + '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', @@ -285,27 +299,35 @@ const Map srRS = { 'meetingTimelineJump': 'Timeline jump', 'meetingExportSummary': 'Export minutes', 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': 'Use in quiet environments; performance depends on microphone and network.', + 'meetingDisclaimer': + 'Use in quiet environments; performance depends on microphone and network.', // 同传/翻译商品页描述 - 'transHeaderDesc1': 'Real-time simultaneous interpretation and text translation with low-latency voice.', + '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', + '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': + 'Translation performance depends on microphone, network latency, and ambient noise.', // AI 商品页描述 - 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', - 'aiHeaderDesc2': 'Suitable for agent Q&A, summarization, analysis, and task execution.', + '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', @@ -314,8 +336,10 @@ const Map srRS = { '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': + 'Features depend on device permissions, service availability, and network conditions.', // 会员商品页 'benefitsOverview': 'Benefits overview', @@ -330,7 +354,8 @@ const Map srRS = { '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.', + 'vipDisclaimer': + 'Actual benefits depend on the package details and may change with versions.', // 新手引导 / Onboarding 'skip': 'Preskoči', @@ -356,7 +381,8 @@ const Map srRS = { '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', @@ -406,7 +432,8 @@ const Map srRS = { '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', + 'downloadCompleteInfo': + 'Download complete, {count} files in total, returning automatically in 2 seconds', // Meeting模块 - 录音功能 'startRecording': 'Start Recording', @@ -419,11 +446,15 @@ const Map srRS = { 'meetingRecordEndAndSave': 'Završi i sačuvaj', // 结束录音并保存 'meetingRecordEndWithoutSave': 'Završi bez čuvanja', // 结束录音不保存 'meetingRecordContinueInBackground': 'Nastavi snimanje u pozadini', // 后台继续录音 - 'meetingRecordStopTimeout': 'Vreme za zaustavljanje snimanja je isteklo, pokušajte ponovo', // 结束录音超时,请重试 - 'meetingRecordStopFailed': 'Zaustavljanje snimanja nije uspelo, pokušajte ponovo', // 结束录音失败,请重试 - 'meetingRecordSaveFailed': 'Čuvanje snimka nije uspelo, pokušajte ponovo', // 保存录音失败,请重试 + 'meetingRecordStopTimeout': + 'Vreme za zaustavljanje snimanja je isteklo, pokušajte ponovo', // 结束录音超时,请重试 + 'meetingRecordStopFailed': + 'Zaustavljanje snimanja nije uspelo, pokušajte ponovo', // 结束录音失败,请重试 + 'meetingRecordSaveFailed': + 'Čuvanje snimka nije uspelo, pokušajte ponovo', // 保存录音失败,请重试 'meetingRecordRecordingNotificationTitle': 'Snimanje u toku', // 录音进行中 - 'meetingRecordRecordingNotificationBody': 'Snimanje u pozadini, dodirnite za povratak', // 正在后台录音,点击返回应用 + 'meetingRecordRecordingNotificationBody': + 'Snimanje u pozadini, dodirnite za povratak', // 正在后台录音,点击返回应用 'overlayPermissionTitle': 'Dozvola za plutajući prozor', // 悬浮窗权限 'overlayPermissionTranslationDesc': 'Da bismo prikazali rezultate prevoda tokom poziva ili audio/video prevoda, potrebna nam je dozvola za prekrivanje. To vam omogućava da vidite prevode u realnom vremenu dok koristite druge aplikacije.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 @@ -478,40 +509,54 @@ const Map srRS = { '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': + '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.', // Meeting模块 - 升级会员 '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模块 - 模版和生成 @@ -523,7 +568,8 @@ const Map srRS = { '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.', + 'aiAnalysisDesc': + 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', // Meeting模块 - 文件操作和状态 'importing': 'Importing...', @@ -543,7 +589,8 @@ const Map srRS = { // 权限相关 - Meeting相关 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionExplanation': + 'We need access to storage permissions so you can select and upload audio files.', 'meetingStoragePermissionPermanentDenial': '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', @@ -589,12 +636,14 @@ const Map srRS = { // Meeting模块 - 发言者相关 'applyToAllParagraphs': 'Primeni na sve pasuse ovog govornika', - 'summaryWillBeUpdatedAutomatically': 'Sažetak će se automatski ažurirati prema šablonu', + 'summaryWillBeUpdatedAutomatically': + 'Sažetak će se automatski ažurirati prema šablonu', 'nameCurrentSpeaker': 'Name Current Speaker', 'recentlyUsedNames': 'Recently Used Names', 'applyToCurrentParagraph': 'Apply to Current Paragraph', 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': 'Summary speakers will be updated automatically', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Summary speakers will be updated automatically', // Meeting模块 - 云端同步相关 'syncToCloud': 'Sync to Cloud', @@ -619,7 +668,8 @@ const Map srRS = { "cloudSync": "Nákup sinkronizacije u oblaku", "memberService": "Member Service", "bindRewardTitle": "Rewards", - "bindRewardSimpleDesc": "First bind device reward has been issued. Tap OK to close.", + "bindRewardSimpleDesc": + "First bind device reward has been issued. Tap OK to close.", "joinDevice": "Povezan uređaj:", "accountId": "ID naloga:", "systemSetting": "Sistemsko podešavanje", @@ -632,7 +682,8 @@ const Map srRS = { "privacySettings": "Podešavanja privatnosti", "privacySettingsInfo": "Upravljanje prikupljanjem podataka i dozvolama", "permissionManagement": "Upravljanje dozvolama", // 权限管理 - "permissionManagementInfo": "Upravljanje podešavanjima dozvola aplikacije", // 管理应用权限设置 + "permissionManagementInfo": + "Upravljanje podešavanjima dozvola aplikacije", // 管理应用权限设置 "aboutApplication": "O aplikaciji", "versions": "Verzija", "checkUpdates": "Proveri ažuriranja", @@ -641,9 +692,11 @@ const Map srRS = { "voiceServiceInfo": "Izbor servisa za prepoznavanje i sintezu govora", "selectVoiceService": "Izaberi govorni servis", "azureVoiceService": "Azure govorni servis", - "azureVoiceServiceInfo": "Microsoftov govorni servis u oblaku, podržava visokokvalitetnu sintezu i prepoznavanje govora", + "azureVoiceServiceInfo": + "Microsoftov govorni servis u oblaku, podržava visokokvalitetnu sintezu i prepoznavanje govora", "flutterVoiceService": "Flutter lokalni govorni servis", - "flutterVoiceServiceInfo": "Lokalni govorni servis uređaja, može se koristiti bez internet konekcije", + "flutterVoiceServiceInfo": + "Lokalni govorni servis uređaja, može se koristiti bez internet konekcije", 'timbreService': 'Servis za boju glasa', 'timbreServiceInfo': 'Izaberite servis za sintezu govora sa bojom glasa', 'defaultTimbre': 'Podrazumevana boja glasa', @@ -672,7 +725,8 @@ const Map srRS = { // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Glasovno ćaskanje u realnom vremenu", - "realtimeVoiceChatInfo": "Iskusite funkciju inteligentne glasovne interakcije (pregled funkcije)", + "realtimeVoiceChatInfo": + "Iskusite funkciju inteligentne glasovne interakcije (pregled funkcije)", "loading": "Učitavanje...", //设备管理页面 @@ -743,10 +797,14 @@ const Map srRS = { '• 控制耳机功能\n\n' '有什么我可以帮你的吗?', 'microphonePermission': 'Mikrofon', - 'voiceRecognitionPermissionText': 'Funkcija prepoznavanja govora zahteva pristup mikrofonu.', - 'voiceTranslationPermissionText': 'Funkcija prepoznavanja i prevođenja govora zahteva pristup mikrofonu.', - 'phoneCallPermissionText': 'Funkcija pozivanja zahteva pristup mikrofonu za glasovne pozive.', - 'permissionDeniedText': 'Trajno ste odbili dozvolu za mikrofon, idite u sistemska podešavanja da biste je omogućili.', + 'voiceRecognitionPermissionText': + 'Funkcija prepoznavanja govora zahteva pristup mikrofonu.', + 'voiceTranslationPermissionText': + 'Funkcija prepoznavanja i prevođenja govora zahteva pristup mikrofonu.', + 'phoneCallPermissionText': + 'Funkcija pozivanja zahteva pristup mikrofonu za glasovne pozive.', + 'permissionDeniedText': + 'Trajno ste odbili dozvolu za mikrofon, idite u sistemska podešavanja da biste je omogućili.', 'startVoiceInput': 'Započni unos glasom', 'startPhoneCallMode': 'Započni režim poziva, započni unos glasom', @@ -769,7 +827,8 @@ const Map srRS = { 'privacyRelated': 'Vezano za privatnost', 'copyrightViolation': 'Kršenje mog autorskog prava, ugleda, itd.', 'other': 'Ostalo', - 'reportDescriptionHint': 'Želimo da znamo razlog vaše prijave, možete opisati problem sa kojim ste se suočili.', + 'reportDescriptionHint': + 'Želimo da znamo razlog vaše prijave, možete opisati problem sa kojim ste se suočili.', //'submit': '提交', //Message_bubble @@ -801,14 +860,22 @@ const Map srRS = { 'lowest': 'Najniža', 'futureForecast': 'Buduća prognoza', 'hotWeatherTip': 'Danas je vruće, pazite na toplotni udar i pijte puno vode', - 'coldWeatherTip': 'Danas je temperatura niska, obucite se toplo kada izlazite da se ne prehladite', - 'rainyWeatherTip': 'Danas pada kiša, ponesite kišobran kada izlazite i pazite na putu', - 'snowyWeatherTip': 'Danas pada sneg, put je klizav, pazite i obucite se toplo', - 'foggyWeatherTip': 'Danas je magla, vidljivost je smanjena, nosite masku kada izlazite', - 'windyWeatherTip': 'Danas duva jak vetar, pazite kada izlazite i osigurajte svoje stvari', - 'sunnyWeatherTip': 'Danas je sunčano i jako UV zračenje, koristite kremu za sunčanje kada izlazite', - 'temperatureDifferenceTip': 'Danas je velika razlika u temperaturi između dana i noći, prilagodite odeću', - 'comfortableWeatherTip': 'Danas je vreme prijatno, odlično vreme za aktivnosti na otvorenom', + 'coldWeatherTip': + 'Danas je temperatura niska, obucite se toplo kada izlazite da se ne prehladite', + 'rainyWeatherTip': + 'Danas pada kiša, ponesite kišobran kada izlazite i pazite na putu', + 'snowyWeatherTip': + 'Danas pada sneg, put je klizav, pazite i obucite se toplo', + 'foggyWeatherTip': + 'Danas je magla, vidljivost je smanjena, nosite masku kada izlazite', + 'windyWeatherTip': + 'Danas duva jak vetar, pazite kada izlazite i osigurajte svoje stvari', + 'sunnyWeatherTip': + 'Danas je sunčano i jako UV zračenje, koristite kremu za sunčanje kada izlazite', + 'temperatureDifferenceTip': + 'Danas je velika razlika u temperaturi između dana i noći, prilagodite odeću', + 'comfortableWeatherTip': + 'Danas je vreme prijatno, odlično vreme za aktivnosti na otvorenom', "monday": "Pon", "tuesday": "Uto", "wednesday": "Sre", @@ -858,24 +925,31 @@ const Map srRS = { "notSet": "Nije podešeno", "accountSetting": "Podešavanja naloga", "logout": "Odjavi se", - "logoutTips": "Da li ste sigurni da želite da se odjavite sa trenutnog naloga?", + "logoutTips": + "Da li ste sigurni da želite da se odjavite sa trenutnog naloga?", 'deleteAccount': 'Obriši nalog', - 'deleteAccountTips': 'Da li ste sigurni da želite trajno da obrišete svoj nalog? Ova radnja se ne može opozvati', + 'deleteAccountTips': + 'Da li ste sigurni da želite trajno da obrišete svoj nalog? Ova radnja se ne može opozvati', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', // Profile 错误信息 - 'networkConnectionFailed': 'Neuspešna mrežna veza, proverite podešavanja mreže i pokušajte ponovo', - 'serverTemporarilyUnavailable': 'Server je trenutno nedostupan, pokušajte ponovo kasnije', + 'networkConnectionFailed': + 'Neuspešna mrežna veza, proverite podešavanja mreže i pokušajte ponovo', + 'serverTemporarilyUnavailable': + 'Server je trenutno nedostupan, pokušajte ponovo kasnije', 'loginExpiredPleaseRelogin': 'Vaša sesija je istekla, prijavite se ponovo', 'noPermissionForThisOperation': 'Nemate dozvolu za ovu operaciju', 'requestedResourceNotFound': 'Traženi resurs nije pronađen', - 'imageProcessingFailedPleaseReselect': 'Neuspešna obrada slike, izaberite drugu sliku', + 'imageProcessingFailedPleaseReselect': + 'Neuspešna obrada slike, izaberite drugu sliku', 'operationFailedPleaseRetry': 'Operacija nije uspela, pokušajte ponovo', 'serverReturnedError': 'Server je vratio grešku', 'serverError': 'Greška na serveru', - 'networkConnectionFailedCheckSettings': 'Neuspešna mrežna veza, proverite podešavanja mreže', - 'serverInternalErrorRetryLater': 'Interna greška na serveru, pokušajte ponovo kasnije', + 'networkConnectionFailedCheckSettings': + 'Neuspešna mrežna veza, proverite podešavanja mreže', + 'serverInternalErrorRetryLater': + 'Interna greška na serveru, pokušajte ponovo kasnije', // Profile 用户交互 //'error': '错误', @@ -894,13 +968,19 @@ const Map srRS = { // 账号服务相关 'clearUserDataFailed': 'Neuspešno brisanje korisničkih podataka', // 清理用户数据失败 'deleteUserDataFailed': 'Neuspešno brisanje korisničkih podataka', // 删除用户数据失败 - 'thirdPartyLogoutSuccess': 'Uspešno odjavljivanje sa treće strane', // 第三方登录退出成功 - 'thirdPartyLogoutFailed': 'Neuspešno odjavljivanje sa treće strane', // 第三方登录退出失败 - 'signOutProcessError': 'Došlo je do greške tokom procesa odjavljivanja', // 登出过程发生错误 - 'deleteAccountProcessError': 'Došlo je do greške tokom procesa brisanja naloga', // 删除账号过程发生错误 + 'thirdPartyLogoutSuccess': + 'Uspešno odjavljivanje sa treće strane', // 第三方登录退出成功 + 'thirdPartyLogoutFailed': + 'Neuspešno odjavljivanje sa treće strane', // 第三方登录退出失败 + 'signOutProcessError': + 'Došlo je do greške tokom procesa odjavljivanja', // 登出过程发生错误 + 'deleteAccountProcessError': + 'Došlo je do greške tokom procesa brisanja naloga', // 删除账号过程发生错误 'userDataClearSuccess': 'Korisnički podaci uspešno obrisani', // 用户数据清理成功 - 'allUserDataClearSuccess': 'Svi korisnički podaci uspešno obrisani', // 所有用户数据清理成功 - 'accountServiceInitialized': 'AccountService je inicijalizovan', // AccountService 已初始化 + 'allUserDataClearSuccess': + 'Svi korisnički podaci uspešno obrisani', // 所有用户数据清理成功 + 'accountServiceInitialized': + 'AccountService je inicijalizovan', // AccountService 已初始化 // 权限管理页面 'getPermissionStatusFailed': 'Neuspešno dobijanje statusa dozvole', @@ -923,57 +1003,86 @@ const Map srRS = { 'locationInfo': 'Informacije o lokaciji', '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', - 'calendarWritePermissionDesc': 'Koristi se za kreiranje događaja i podsetnika u kalendaru', - 'calendarFullAccessPermissionDesc': 'Koristi se za čitanje i upravljanje događajima i podsetnicima u kalendaru', - 'locationPermissionDesc': 'Koristi se za dobijanje informacija o trenutnoj lokaciji', + 'alarmPermissionDesc': + 'Used to set exact alarms to ensure reminders trigger on time', + 'calendarWritePermissionDesc': + 'Koristi se za kreiranje događaja i podsetnika u kalendaru', + 'calendarFullAccessPermissionDesc': + 'Koristi se za čitanje i upravljanje događajima i podsetnicima u kalendaru', + 'locationPermissionDesc': + 'Koristi se za dobijanje informacija o trenutnoj lokaciji', 'appFunctionNeeds': 'Funkcija aplikacije zahteva', 'authorized': 'Autorizovano', 'unauthorized': 'Neautorizovano', - 'needOpenInSystemSettings': 'Potrebno je omogućiti u sistemskim podešavanjima', + 'needOpenInSystemSettings': + 'Potrebno je omogućiti u sistemskim podešavanjima', 'partialAuthorization': 'Delimična autorizacija', 'unknownStatus': 'Nepoznat status', 'permissionGranted': 'Dozvola je odobrena', 'permissionRequestError': 'Greška prilikom traženja dozvole', 'phonePermissionDetailDesc': 'Funkcija pozivanja zahteva dozvolu za telefon', 'smsPermissionDetailDesc': 'Funkcija slanja SMS-a zahteva dozvolu za SMS', - 'alarmPermissionDetailDesc': 'This permission is required to set exact alarms and ensure reminders trigger on time', - 'calendarWritePermissionDetailDesc': 'Kreiranje događaja u kalendaru zahteva dozvolu za pisanje u kalendar', - 'calendarFullAccessPermissionDetailDesc': 'Upravljanje događajima u kalendaru zahteva potpunu dozvolu za kalendar', - 'locationPermissionDetailDesc': 'Dobijanje informacija o lokaciji zahteva dozvolu za lokaciju', + 'alarmPermissionDetailDesc': + 'This permission is required to set exact alarms and ensure reminders trigger on time', + 'calendarWritePermissionDetailDesc': + 'Kreiranje događaja u kalendaru zahteva dozvolu za pisanje u kalendar', + 'calendarFullAccessPermissionDetailDesc': + 'Upravljanje događajima u kalendaru zahteva potpunu dozvolu za kalendar', + 'locationPermissionDetailDesc': + 'Dobijanje informacija o lokaciji zahteva dozvolu za lokaciju', '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', + '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', + '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', + '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': 'Aplikacija zahteva ovu dozvolu za punu funkcionalnost', - 'permanentDenialText': 'Trajno ste odbili dozvolu za {permission}, idite u podešavanja aplikacije da biste je omogućili', + 'notificationPermissionDetailDesc': + 'App needs notification permission to send you important alerts and messages', + 'appNeedsPermissionForFullFunction': + 'Aplikacija zahteva ovu dozvolu za punu funkcionalnost', + 'permanentDenialText': + 'Trajno ste odbili dozvolu za {permission}, idite u podešavanja aplikacije da biste je omogućili', 'goToSettings': 'Idi na podešavanja', // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', - 'bluetoothScanExplanation': '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.', + '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.', + '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.', //'microphonePermission': '录音', 'storagePermission': 'Storage', - 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', - 'storagePermissionExplanation': 'We need storage permission so you can select and upload audio files.', + 'microphonePermissionExplanation': + 'We need microphone permission to record audio content.', + 'storagePermissionExplanation': + 'We need storage permission so you can select and upload audio files.', 'microphonePermissionPermanentDenial': '检测到您已永久拒绝录音权限。如需继续使用此功能,请前往应用设置中手动开启麦克风权限。', 'storagePermissionPermanentDenial': @@ -983,7 +1092,8 @@ const Map srRS = { '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', + 'permissionUtilRestrictedMessage': + 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', 'permissionUtilConfirm': 'OK', // 版本更新对话框 @@ -992,8 +1102,10 @@ const Map srRS = { 'updateNow': 'Ažuriraj sada', // 立即更新按钮 'checkUpdate': 'Proveri ažuriranja', // 检查更新按钮 'updateFailed': 'Neuspešno ažuriranje', // 更新失败提示 - 'cannotOpenAppStore': 'Nije moguće otvoriti prodavnicu aplikacija, idite ručno u prodavnicu da biste ažurirali', // 无法打开应用商店提示 - 'updateErrorRetry': 'Došlo je do greške tokom ažuriranja, pokušajte ponovo kasnije', // 更新错误重试提示 + 'cannotOpenAppStore': + 'Nije moguće otvoriti prodavnicu aplikacija, idite ručno u prodavnicu da biste ažurirali', // 无法打开应用商店提示 + 'updateErrorRetry': + 'Došlo je do greške tokom ažuriranja, pokušajte ponovo kasnije', // 更新错误重试提示 //国家列表 "邮箱": "E-pošta", @@ -1129,7 +1241,8 @@ const Map srRS = { "selectTargetLanguage": "Izaberi ciljni jezik", "me": "Me", "counterPart": "Counterpart", - "bluetoothCallStateError": "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "bluetoothCallStateError": + "Please make sure the Bluetooth headset is connected to the phone and in a call state", // 通用对话按钮与选项(用于统一语言选择弹窗等) // 以下翻译键的中文文本内容如注释所示 @@ -1145,10 +1258,12 @@ const Map srRS = { "historyRecords": "History Records", "clearResults": "Clear Results", "clearHistory": "Obriši istoriju", - "clearHistoryConfirm": "Da li ste sigurni da želite da obrišete celu istoriju prevođenja? Ova radnja se ne može opozvati.", + "clearHistoryConfirm": + "Da li ste sigurni da želite da obrišete celu istoriju prevođenja? Ova radnja se ne može opozvati.", "unknownLanguage": "Nepoznat jezik", "deleteSessionRecord": "Obriši zapis sesije", - "deleteSessionConfirm": "Da li ste sigurni da želite da obrišete sve zapise prevođenja za ovu sesiju? Ova radnja se ne može opozvati.", + "deleteSessionConfirm": + "Da li ste sigurni da želite da obrišete sve zapise prevođenja za ovu sesiju? Ova radnja se ne može opozvati.", // 图片翻译模块(Picture Translation) "selectImageSource": "Select Image Source", @@ -1180,15 +1295,20 @@ const Map srRS = { "translationCompleted": "Translation Completed", "allStepsCompleted": "All steps completed", "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": "Image processing or translation failed. Please retry.\nError: {error}", + "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", + "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", + "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", + "photoAlbumPermissionRequired": + "Photo album permission required to pick images", "translationDetails": "Translation Details", "originalImage": "Original Image", "sourceLanguage": "Source Language", @@ -1211,7 +1331,8 @@ const Map srRS = { // 翻译详情页 (translation_detail_view.dart) "originalRecord": "Originalni zapis", "recordSummary": "Sažetak zapisa", - "clickToGenerateSummary": "Kliknite na dugme ispod da biste generisali sažetak sesije", + "clickToGenerateSummary": + "Kliknite na dugme ispod da biste generisali sažetak sesije", "summaryContent": "Sadržaj sažetka", "copied": "Kopirano", "summaryCopiledToClipboard": "Sažetak je kopiran u međuspremnik", @@ -1219,9 +1340,11 @@ const Map srRS = { "summaryGenerated": "Sažetak je generisan", "generating": "Generisanje...", "regenerate": "Ponovo generiši", - "summaryTimeoutMessage": "Isteklo je vreme za generisanje sažetka, možda zbog problema sa mrežom ili zauzetosti servera.", + "summaryTimeoutMessage": + "Isteklo je vreme za generisanje sažetka, možda zbog problema sa mrežom ili zauzetosti servera.", "deleteTranslationRecord": "Obriši zapis prevođenja", - "deleteTranslationConfirm": "Da li ste sigurni da želite da obrišete ovaj zapis prevođenja? Ova radnja se ne može opozvati.", + "deleteTranslationConfirm": + "Da li ste sigurni da želite da obrišete ovaj zapis prevođenja? Ova radnja se ne može opozvati.", "originalText": "Originalni tekst", "translatedText": "Prevedeni tekst", "sessionSummary": "Sažetak sesije", @@ -1249,19 +1372,25 @@ const Map srRS = { // 配对状态文本 "readyToPair": "Spremno za uparivanje", "preparingPairingEnvironment": "Priprema okruženja za uparivanje...", - "connectDeepSoundViaSystemBluetooth": "Prvo se povežite sa Voitrans uređajem preko sistemskog Bluetooth-a", + "connectDeepSoundViaSystemBluetooth": + "Prvo se povežite sa Voitrans uređajem preko sistemskog Bluetooth-a", "deviceBindingConfirm": "Potvrda povezivanja uređaja...", "establishingDeviceAssociation": "Uspostavljanje veze sa uređajem...", "waitingCompletePairing": "Molimo sačekajte, uparivanje se završava...", - "pairingSuccessRedirecting": "Uparivanje uspešno! Preusmeravanje na početnu stranicu...", + "pairingSuccessRedirecting": + "Uparivanje uspešno! Preusmeravanje na početnu stranicu...", // 配对错误状态文本 - "ensureConnectedDeepSoundDevice": "Uverite se da ste povezani sa Voitrans uređajem", - "deviceAlreadyBoundToOtherAccount": "Ovaj uređaj je već povezan sa drugim nalogom", + "ensureConnectedDeepSoundDevice": + "Uverite se da ste povezani sa Voitrans uređajem", + "deviceAlreadyBoundToOtherAccount": + "Ovaj uređaj je već povezan sa drugim nalogom", "deviceAssociationFailed": "Neuspešno povezivanje uređaja, pokušajte ponovo", - "scanTimeoutEnsureDeviceNearby": "Isteklo vreme skeniranja, uverite se da je uređaj u blizini", + "scanTimeoutEnsureDeviceNearby": + "Isteklo vreme skeniranja, uverite se da je uređaj u blizini", "networkError": "Mrežna greška", - "authorizationFailedCheckCode": "Neuspešna autorizacija, proverite da li je autorizacioni kod tačan", + "authorizationFailedCheckCode": + "Neuspešna autorizacija, proverite da li je autorizacioni kod tačan", "pairingFailedRetry": "Neuspešno uparivanje, pokušajte ponovo", // 配对控制器相关 @@ -1270,13 +1399,15 @@ const Map srRS = { 'deviceDisconnected': 'Uređaj je isključen', 'readyToStartPairing': 'Spremno za početak uparivanja', 'checkingEnvironment': 'Provera okruženja...', - 'ensureHeadsetOnAndPairingMode': 'Uverite se da su slušalice uključene i u režimu uparivanja', + 'ensureHeadsetOnAndPairingMode': + 'Uverite se da su slušalice uključene i u režimu uparivanja', //'goToBluetoothSettings': '前往蓝牙设置', //'verifyingDevice': '正在验证设备...', //'confirmBinding': '确认绑定', //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Uspostavljanje bezbedne veze...', - 'needManualBindingAuthCode': 'Potreban je kod za autorizaciju ručnog povezivanja...', + 'needManualBindingAuthCode': + 'Potreban je kod za autorizaciju ručnog povezivanja...', 'pairingSuccessful': 'Uparivanje uspešno!', 'enableBluetooth': 'Omogući Bluetooth', 'grantPermissions': 'Daj dozvole', @@ -1288,35 +1419,45 @@ const Map srRS = { 'verificationFailedRetry': 'Neuspešna verifikacija, pokušajte ponovo', 'invalidDeviceAddress': 'Nevažeća adresa uređaja', 'bleDeviceAssociationFailed': 'Neuspešno povezivanje BLE uređaja', - 'deviceAssociationFailedRetry': 'Neuspešno povezivanje uređaja, pokušajte ponovo', + 'deviceAssociationFailedRetry': + 'Neuspešno povezivanje uređaja, pokušajte ponovo', 'bleConnectionTimeoutRetry': 'Isteklo vreme za BLE vezu, pokušajte ponovo', 'blePairingStartupFailed': 'Neuspešno pokretanje BLE uparivanja', 'bleConnectionFailed': 'Neuspešna BLE veza', - 'deviceAuthorizationFailedCheckCode': 'Neuspešna autorizacija uređaja, proverite autorizacioni kod', + 'deviceAuthorizationFailedCheckCode': + 'Neuspešna autorizacija uređaja, proverite autorizacioni kod', ///iOS蓝牙引导窗 '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', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + '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', // 我知道了 //用户反馈页 "feedback": "Povratne informacije korisnika", 'feedbackInfo': 'Dajte povratne informacije ili predloge', - 'feedbackDescription': 'Opišite problem sa kojim ste se suočili ili svoj predlog', + 'feedbackDescription': + 'Opišite problem sa kojim ste se suočili ili svoj predlog', 'feedbackHint': 'Unesite svoje povratne informacije...', 'feedbackRequired': 'Unesite sadržaj povratnih informacija', 'contactInfo': 'Kontakt informacije', 'contactHint': 'E-pošta/Telefon, da bismo vas mogli kontaktirati', 'submit': 'Pošalji', - 'feedbackSubmitSuccess': 'Povratne informacije su uspešno poslate, hvala vam!', - 'feedbackSubmitFailed': 'Neuspešno slanje povratnih informacija, pokušajte ponovo kasnije', + 'feedbackSubmitSuccess': + 'Povratne informacije su uspešno poslate, hvala vam!', + 'feedbackSubmitFailed': + 'Neuspešno slanje povratnih informacija, pokušajte ponovo kasnije', // OTA升级模块 - "upgradeExitConfirm": "Nadogradnja je u toku, izlazak će prekinuti proces, da li ste sigurni da želite da izađete?", + "upgradeExitConfirm": + "Nadogradnja je u toku, izlazak će prekinuti proces, da li ste sigurni da želite da izađete?", "deviceModel": "Model uređaja", "unknownDevice": "Nepoznat uređaj", "currentFirmwareVersion": "Trenutna verzija firmvera", @@ -1329,14 +1470,18 @@ const Map srRS = { "retryConnection": "Pokušaj ponovo povezivanje", "ota_updateNow": "Ažuriraj sada", "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.", + "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": "Držite uređaj povezanim, ne zatvarajte aplikaciju", "doNotDisconnect": "Ne prekidajte vezu", "charging": "Punjenje", "updateContent": "Sadržaj ažuriranja", - "removeEarbudsEnsureBattery": "Izvadite obe slušalice i uverite se da je baterija obe iznad 20%", + "removeEarbudsEnsureBattery": + "Izvadite obe slušalice i uverite se da je baterija obe iznad 20%", // 音乐列表页面 "noMusic": "Nema muzike", // 暂无音乐 @@ -1398,8 +1543,10 @@ const Map srRS = { "insufficientIntegral": "Insufficient integral", //余额不足弹窗 - "insufficientBalanceDesc": "Insufficient balance, please go to the corresponding recharge page to recharge.", + "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.", + "aiMemberExpiredDesc": + "AI membership expired, please go to the membership recharge page to renew.", }; diff --git a/lib/core/translations/language/sv_se.dart b/lib/core/translations/language/sv_se.dart index 71b825bd3..1eb44c382 100644 --- a/lib/core/translations/language/sv_se.dart +++ b/lib/core/translations/language/sv_se.dart @@ -16,6 +16,8 @@ const Map svSE = { "requestTimeout": "Begäran nådde tidsgräns", "responseTimeout": "Svaret nådde tidsgräns", "unknownError": "Okänt fel", + "asrConnectionFailed": + "Anslutning till tjänsten för röstigenkänning misslyckades. Kontrollera nätverket eller försök igen senare.", // 启动页 "slogan": "Anslut världen, bortom ljudet", diff --git a/lib/core/translations/language/th_th.dart b/lib/core/translations/language/th_th.dart index 69f0609a8..2ef0f5f0f 100644 --- a/lib/core/translations/language/th_th.dart +++ b/lib/core/translations/language/th_th.dart @@ -16,6 +16,8 @@ const Map thTH = { "requestTimeout": "หมดเวลาคำขอ", "responseTimeout": "หมดเวลาการตอบกลับ", "unknownError": "ข้อผิดพลาดที่ไม่รู้จัก", + "asrConnectionFailed": + "เชื่อมต่อกับบริการรู้จำเสียงไม่สำเร็จ กรุณาตรวจสอบเครือข่ายแล้วลองใหม่อีกครั้งภายหลัง", // 启动页 "slogan": "เชื่อมต่อโลก ก้าวล้ำเหนือเสียง", diff --git a/lib/core/translations/language/tl_ph.dart b/lib/core/translations/language/tl_ph.dart index ee51aa5af..2f73255db 100644 --- a/lib/core/translations/language/tl_ph.dart +++ b/lib/core/translations/language/tl_ph.dart @@ -16,6 +16,8 @@ const Map tlPH = { "requestTimeout": "Nag-time out ang Kahilingan", "responseTimeout": "Nag-time out ang Pagtugon", "unknownError": "Hindi Malamang Error", + "asrConnectionFailed": + "Nabigo ang koneksyon sa speech recognition service. Pakisuri ang network at subukang muli mamaya.", // 启动页 "slogan": "Ikonekta ang mundo, higit pa sa tunog", diff --git a/lib/core/translations/language/tr_tr.dart b/lib/core/translations/language/tr_tr.dart index a5633e267..d955dcac4 100644 --- a/lib/core/translations/language/tr_tr.dart +++ b/lib/core/translations/language/tr_tr.dart @@ -16,6 +16,8 @@ const Map trTR = { "requestTimeout": "İstek Zaman Aşımı", "responseTimeout": "Yanıt Zaman Aşımı", "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.", // 启动页 "slogan": "Dünyayla bağlantı kur, sesin ötesinde", diff --git a/lib/core/translations/language/uk_ua.dart b/lib/core/translations/language/uk_ua.dart index 2197cce9b..fe2ce4b07 100644 --- a/lib/core/translations/language/uk_ua.dart +++ b/lib/core/translations/language/uk_ua.dart @@ -16,6 +16,8 @@ const Map ukUA = { "requestTimeout": "Час очікування запиту минув", "responseTimeout": "Час очікування відповіді минув", "unknownError": "Невідома помилка", + "asrConnectionFailed": + "Не вдалося підключитися до служби розпізнавання мовлення. Перевірте мережу або спробуйте пізніше ще раз.", // 启动页 "slogan": "З'єднуючи світ, більше ніж просто звук", diff --git a/lib/core/translations/language/vi_vn.dart b/lib/core/translations/language/vi_vn.dart index c7d580a68..40a4908b8 100644 --- a/lib/core/translations/language/vi_vn.dart +++ b/lib/core/translations/language/vi_vn.dart @@ -16,6 +16,8 @@ const Map viVN = { "requestTimeout": "Hết thời gian yêu cầu", "responseTimeout": "Hết thời gian phản hồi", "unknownError": "Lỗi không xác định", + "asrConnectionFailed": + "Kết nối tới dịch vụ nhận dạng giọng nói thất bại. Vui lòng kiểm tra mạng hoặc thử lại sau.", // 启动页 "slogan": "Kết nối thế giới, vượt trên cả âm thanh", diff --git a/lib/core/translations/language/zh_cn.dart b/lib/core/translations/language/zh_cn.dart index 3bc96f722..fa073ac5e 100644 --- a/lib/core/translations/language/zh_cn.dart +++ b/lib/core/translations/language/zh_cn.dart @@ -16,6 +16,7 @@ const Map zhCN = { "requestTimeout": "请求超时", "responseTimeout": "响应超时", "unknownError": "未知错误", + "asrConnectionFailed": "语音识别服务连接失败,请检查网络或稍后重试", // 启动页 "slogan": "连接世界,岂止声音", diff --git a/lib/core/translations/language/zh_hk.dart b/lib/core/translations/language/zh_hk.dart index e56869de0..266839b4d 100644 --- a/lib/core/translations/language/zh_hk.dart +++ b/lib/core/translations/language/zh_hk.dart @@ -16,6 +16,7 @@ const Map zhHK = { "requestTimeout": "請求超時", "responseTimeout": "響應超時", "unknownError": "未知錯誤", + "asrConnectionFailed": "語音識別服務連接失敗,請檢查網絡或稍後重試", // 启动页 "slogan": "連接世界,豈止聲音", diff --git a/lib/core/translations/language/zh_tw.dart b/lib/core/translations/language/zh_tw.dart index 27d0afa85..d755b1a07 100644 --- a/lib/core/translations/language/zh_tw.dart +++ b/lib/core/translations/language/zh_tw.dart @@ -16,6 +16,7 @@ const Map zhTW = { "requestTimeout": "請求逾時", "responseTimeout": "回應逾時", "unknownError": "未知錯誤", + "asrConnectionFailed": "語音辨識服務連線失敗,請檢查網路或稍後重試", // 启动页 "slogan": "連接世界,豈止聲音", diff --git a/lib/modules/translation/controllers/translation_controller.dart b/lib/modules/translation/controllers/translation_controller.dart index d53e2876d..44a390a7f 100644 --- a/lib/modules/translation/controllers/translation_controller.dart +++ b/lib/modules/translation/controllers/translation_controller.dart @@ -1166,9 +1166,15 @@ class TranslationController extends GetxController with WidgetsBindingObserver { break; case RecognitionEventType.error: - Get.snackbar('error'.tr, event.error); + final errorMsg = event.error; + var displayMsg = errorMsg; + if (errorMsg.contains('Xunfei connection failed') || + errorMsg.contains('Socket is not connected')) { + displayMsg = 'asrConnectionFailed'.tr; // 语音识别服务连接失败,请检查网络或稍后重试 + } + Get.snackbar('error'.tr, displayMsg); isRecognizing.value = false; - Logger.error('语音识别错误: ${event.error}'); + Logger.error('语音识别错误: $errorMsg'); break; case RecognitionEventType.canceled: